serviço web apache · prática e administração de sistemas operacionais de redes livres serviço...

29
Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo [email protected] [email protected] http://www.jairo.pro.br/ SERVIÇO WEB APACHE http://www.jairo.pro.br/ 1/29

Upload: others

Post on 13-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

Serviço web Apache

Outubro/2017

Prof. Jairo

[email protected]

[email protected]

http://www.jairo.pro.br/

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 1/29

Page 2: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

Este material tem por única intenção reunir um conteúdo acadêmico necessário para auxiliar no ensino da disciplina "Prática e Administração de Sistemas Operacionais de Redes Livres", ministrado nos cursos de Tecnologias em Redes de Computadores e Segurança da Informação.

O conteúdo aqui exposto pode ser livremente redistribuído e usado como apoio de aula, desde que mantenha a sua integridade original.

O arquivo "apache.pdf" pode ser livremente acessado em "http://www.jairo.pro.br/prat_adm_sist_oper/".

Qualquer crítica ou sugestão, favor entrar em contato com o Prof. Jairo no endereço eletrônico "[email protected]" ou "[email protected]".

Sumário1 - HISTÓRICO...................................................................................................................................32 - PARTE A (Ubuntu e Debian)..........................................................................................................4

2.1 - Instalação do serviço web Apache...........................................................................................42.2 - Arquivos de configuração do serviço......................................................................................52.3 - Testar o acesso ao serviço........................................................................................................92.4 - Configurar diretório protegido por endereço IP....................................................................102.5 - Configurar diretório protegido por senha..............................................................................13

3 - PARTE B (CentOS e Red Hat)......................................................................................................173.1 - Instalação do serviço web Apache.........................................................................................173.2 - Arquivos de configuração do serviço....................................................................................183.3 - Testar o acesso ao serviço......................................................................................................203.4 - Configurar diretório protegido por endereço IP....................................................................223.5 - Configurar diretório protegido por senha..............................................................................26

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 2/29

Page 3: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

1 - HISTÓRICO

Um servidor web (ou serviço web) é uma aplicação servidora que usa o protocolo HTTP, Hyper Text Transfer Protocol, (protocolo de transferência de hipertexto) 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 serviço web era de código fonte aberto, fato que permitiu posteriormente a criação de novos serviços web baseados neste. A letra d em HTTPd vem de daemon, ou seja, daemon HTTP. Todas estas novas tecnologias nasceram no Unix, tanto o serviço web 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.

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 a se disseminar rapidamente pelo mundo.

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 serviço web mais antigas) não interpreta as tags HTML e

apenas apresenta o conteúdo texto da página.3 National Center for Supercomputing Applications4 Gopher é também um protocolo da camada de aplicação TCP/IP lançado em 1991. Foi o precursor da World Wide

Web.5 Essas empresas à época eram principalmente os provedores de acesso à internet em linha discada.

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 3/29

Page 4: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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. Este 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 recente da Netcraft7, atualmente quase metade do total de servidores web são Apache.E essa distância aumenta mais ainda quando se avalia apenas o milhão de websites mais ocupados8 (ou mais acessados) na internet. Esta 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 Ubuntu (e Debian) e parte B para CentOS (e Red Hat). Esta separação em duas partes é necessáriadevido às diferenças nas estruturas de diretórios padrão de instalação nestas distribuições Linux.

2 - PARTE A (Ubuntu e Debian)

2.1 - Instalação do serviço web Apache

Essa instalação será standalone.

Num Ubuntu 12 (SystemV), para descobrir se o serviço Apache está instalado, procurar peloseu script de inicialização em /etc/init.d:

NOTA 1: num Ubuntu ou Debian SystemD, o comando equivalente seria "systemctl list-units --all | grep apache2".

6 Patches: atualizações, correções, modificações e melhorias no código fonte.7 Netcraft survey em www.netcraft.com8 Million Busiest Websites, pesquisa também da Netcraft.

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 4/29

root# ls /etc/init.d | grep apache2/etc/init.d/apache2

Page 5: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

NOTA 2: uma alternativa seria buscar pelo pacote de instalação, com o comandodpkg -l | grep -i apache.

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, num Ubuntu ou Debian SystemV, verificar se existem os seguintes arquivos:

Os arquivos acima são:

• /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: é linque simbólico para o executável que dará origem

ao processo daemon;• /etc/apache2: é o diretório de configuração do serviço web apache2.

NOTA: nm Ubuntu ou Debian SystemD, ao invés do script de inicialização do serviço existeo arquivo unit /lib/systemd/system/apache2.service.d. Caso exista o script em /etc/init.d, ele está lá somente por uma questão de compatibilidade.

2.2 - Arquivos de 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:

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

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 5/29

root# apt-get install apache2

root# file /etc/init.d/apache2/etc/init.d/apache2: POSIX shell script, ASCII text executableroot# file /usr/sbin/apache2ctl/usr/sbin/apache2ctl: POSIX shell script, ASCII text executableroot# file /usr/sbin/apache2/usr/sbin/apache2: symbolic link to `../lib/apache2/mpm-worker/apache2'root# file /etc/apache2/etc/apache2: directory

Page 6: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

O comando more mostra o conteúdo do arquivo de configuração apache2.conf:

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

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

StartServers 5 número de processos ou threads9 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 threadsdurante 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 /etc/apache2/sites-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 o serviço roda;Group www-data é o grupo sobre o qual o serviço roda;AccessFileName .htaccess é o nome do arquivo usado quando

houver autenticação para acesso a diretório.

9 Thread: um processo pode ter uma ou mais threads, que são sequências de execução. Os servers (serviços) que são iniciados podem tanto ser em diferentes processos quanto threads de um mesmo processo. A diferença é a economia de recursos computacionais caso seja usado multithreads, pois estas compartilham recursos do processo tais como o espaço de memória.

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 6/29

root# cd /etc/apache2root# lsapache2.conf conf.d envvars httpd.conf magic mods-available mods-enabled ports.conf sites-available sites-enabled

root# more apache2.conf

root# grep -v "^#" apache2.conf | grep -v "^$" | more

Page 7: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

NOTA 1: no diretório /etc/apache2/sites-available, no arquivo default, está a configuraçãobásica do serviço;

NOTA 2: no diretório /etc/apache2/sites-enabled existe um linque simbólico que aponta para o arquivo default do diretório /etc/apache2/sites-available.

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).

Convém reparar também que neste 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 web 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:

NOTA: se houver saída no comando, isto indica que o processo está rodando e neste ponto deve ser parado este serviço. Reparar também que o processo daemon (neste caso) é o de PID 5184, e os demais são processos filhos à espera de clientes.

Para parar o serviço apache2 num Ubuntu 12 (SystemV), o comando é:

NOTA: num Ubuntu ou Debian SystemD, o comando para parar o serviço apache 2 é "systemctl stop apache2".

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 7/29

root# ps -ef | grep apache2root 5184 1 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k startwww-data 5185 5184 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k startwww-data 5188 5184 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k startwww-data 5217 5184 0 19:32 ? 00:00:00 /usr/sbin/apache2 -k startaluno 5419 5378 0 19:34 pts/0 00:00:00 grep apache

root# /etc/init.d/apache2 stopStopping web server apache2 [ OK ]

root# more sites-available/default

Page 8: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

Agora, o comando ps -ef | grep apache2 não deverá mais mostrar o daemon nem os processos filhos 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:

NOTA: o scan de portas acima mostrou que apenas a porta 631 (servidor de impressão) está aberta.

Agora, então, iniciar o serviço apache2 (Ubuntu 12, SystemV):

NOTA: num Ubuntu ou Debian SystemD, o comando para iniciar o serviço apache2 é "systemctl start apache2".

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

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 8/29

root# apt-get install nmap

root# nmap localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 17:28 BRSTInteresting ports on localhost (127.0.0.1):Not shown: 999 closed portsPORT STATE SERVICE631/tcp open ipp

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

root# /etc/init.d/apache2 startStarting web server apache2 [ OK ]

Page 9: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

E o comando ps (conforme acima) vai mostrar que agora o daemon apache2 está rodandode novo.

2.3 - Testar o acesso ao serviço

Este teste de acesso será feito com o cliente wget, que conecta no serviço e baixa arquivos do diretório DocumentRoot do serviço web. Para não ficar esparramando arquivo pela máquina cliente, ir para o diretório /tmp e, de lá, acessar o web server no IP 192.168.1.10:

No serviço web, para ver o log do acesso deste cliente, basta dar um tail no arquivo /var/log/apache2/access.log:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 9/29

root# nmap localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 17:28 BRSTInteresting ports on localhost (127.0.0.1):Not shown: 998 closed portsPORT STATE SERVICE80/tcp open http631/tcp open ipp

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

root# cd /tmproot# wget 192.168.1.10--2017-07-22 20:59:07-- http://192.168.1.10/A conectar 192.168.1.10:80... conectado!HTTP requisição enviada, aguardando resposta... 200 OKTamanho: 194 [text/html]A gravar em: 'index.html'

100%[==========================================>] 194 --.-K/s em 0s

2017-07-22 20:59:07 (26,3 MB/s) - 'index.html' gravado [194/194]

root# tail -1 /var/log/apache2/access.log192.168.1.110 - - [22/Jul/2017:20:59:08 -0200] "GET / HTTP/1.1" 200 491 "-" "Wget/1.14 (linux-gnu)"

Page 10: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

NOTA: se ocorresse alguma mensagem de erro no acesso ao serviço Apache, o arquivo a serconsultado seria /var/log/apache2/error.log.

2.4 - Configurar diretório protegido por endereço IP

Configurar um diretório para deixar o seu conteúdo acessível apenas para clientes com determinados endereços IP é necessário em vários casos. Como exemplo, temos o caso de um únicoserviço web disponibilizando conteúdo tanto para a internet quanto para a intranet. Acontece que nessa intranet, algum conteúdo é restrito e não deveria ser acessado por todos os clientes na internet.

Neste caso, para restringir o acesso ao diretório apenas para os usuários da rede interna, basta colocar esse conteúdo num diretório protegido por IP, para que apenas aqueles clientes com faixa(s) de IP(s) dessa intranet tenham acesso ao conteúdo, e os demais não.

Este exemplo está sendo efetuado para o serviço web 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 a partir dos laboratórios acadêmicos da Uninove 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:

As opções para o comando export, acima, são:

http_proxy: é a variável de ambiente que o wget vai ler para obter o usuário esenha que vai autenticar no serviço proxy;

RA: é o RA do aluno, por exemplo, 987654321;SENHA: é a senha de acesso do aluno, por exemplo, 123456;186.251.39.92: é 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:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 10/29

root# export http_proxy=http://RA:[email protected]:3128

root# echo $http_proxyhttp://987654321:[email protected]:3128

Page 11: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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:

Esta extração do volume tar cria o diretório apache2. Entrar nesse diretório:

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

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 11/29

root# cd /tmproot# wget www.jairo.pro.br/apache2.tar.gz--2017-07-22 21:18:40-- http://www.jairo.pro.br/apache2.tar.gz

Resolving www.jairo.pro.br (www.jairo.pro.br)... 104.28.0.37Connecting to www.jairo.pro.br (www.jairo.pro.br)|104.28.0.37|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 4957 (4.8K) [application/x-gzip]Saving to: `apache2.tar.gz'

100%[===========================================>] 4,957 --.-K/s in 0s

2017-07-22 21:18:53 (19.0 MB/s) - `apache2.tar.gz' saved [4957/4957]

root# gunzip apache2.tar.gzroot# tar -xvf apache2.tarapache2/apache2/index.htmlapache2/sites-available.defaultapache2/apache2.confapache2/ponto.htpasswdapache2/ponto.htaccess

root# cd apache2shell# lsapache2.conf index.html ponto.htaccess ponto.htpasswd sites-available.default

Page 12: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

========== 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.2.0/24 10.11.0.0/16 127.0.0.1 172.16 </Directory>=======================================================================

Na diretiva Directory acima, para o diretório protegido por endereço IP, a ordem de acesso é deny,allow e Deny from all, isto é, primeiro proíba todos, depois libere o acesso para os clientes especificados em "Allow from".

É necessário criar o diretório protegido por IP, que vai guardar o conteúdo acessível somenteaos clientes com endereço IP especificados na diretiva "Allow from":

É necessário também, no arquivo sites-available.default, acertar os IPs ou redes de quem está de fato autorizado a ter acesso a esse diretório.

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

Mas antes de recarregar (reload) o serviço Apache (e esta 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:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 12/29

root# mkdir /var/www/protegido

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

root# unset http_proxyroot# cd /tmproot# wget http://192.168.1.10/protegido--2017-07-22 23:01:16-- http://192.168.1.10/protegidoConectando-se a 192.168.1.10:80... conectado.A requisição HTTP foi enviada, aguardando resposta... 200 OKTamanho: 715 [text/html]Salvando em: “protegido”

100%[=======================================>] 715 --.-K/s em 0s

2017-07-22 23:01:16 (49,6 MB/s) - “protegido” salvo [715/715]

Page 13: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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 esta configuração toma efeito. Para dar um reload do serviço num Ubuntu 12, comando é:

NOTA: num Ubuntu ou Debian SystemD, o comando para o reload do serviço apache2 é "systemctl reload apache2".

Agora, é só testar o acesso e verificar que apenas os clientes com endereços IP configurados na diretiva allow é que conseguem ter acesso ao conteúdo desse diretório.

Os clientes com endereços IP que não estejam contemplados na diretiva Allow from do diretório, ao tentarem acessar receberão o erro abaixo:

2.5 - 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 endereço IP (ou rede). Porém, existem casos em que o cliente está navegando na internet e também precisa ter acesso a este conteúdo na intranet. Por exemplo, um colaborador da empresa que esteja navegando na internet com qualquer endereço IP, diferente da faixa de IPs de internet da empresa.

Nesse caso, a solução é colocar este 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.

Para esta configuração, será aproveitado o arquivo sites-available.default (que veio no arquivo apache2.tar.gz). Observar que neste arquivo também veio incluída a diretiva abaixo, que trata de um diretório protegido por senha:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 13/29

root# /etc/init.d/apache2 reload* Reloading web server config apache2 [ OK ]

root# tail -1 /var/log/apache2/error.log[Sat Jul 22 23:11:10 2017] [error] [client 10.125.5.132] client denied by server configuration: /var/www/protegido

Page 14: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

========== arquivo sites-available.default ======================================#Diretorio protegido por senha<Directory "/var/www/autenticado"> AllowOverride AuthConfig Order allow,deny Allow from all</Directory>=======================================================================

Na diretiva Directory acima, para o diretório protegido por senha, a ordem de acesso é allow,deny e Allow from all, isto é, primeiro permite o acesso a todos, e depois proíbe o acesso para os clientes que não forem autenticados com usuário e senha. Para a autenticação com senha, também é necessário incluir as diretivas AllowOverride e AuthConfig. Isso soa estranho, mas para entender precisa ter em mente que o arquivo de autenticação ".htaccess", fica no interior deste diretório, portanto inicialmente o usuário precisa ter acesso ao diretório para autenticar, mas só vai permanecer lá caso faça a autenticação com sucesso.

Conforme a definição na diretiva Directory acima, precisa criar o diretório autenticado no DocumentRoot:

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

========== arquivo /var/www/autenticado/.htaccess ==============================AuthUserFile /var/www/autenticado/.htpasswdAuthGroupFile /dev/nullAuthName "Acesso Restrito"AuthType Basicrequire valid-user=======================================================================

Nas configurações acima, temos:

AuthUserFile: define o arquivo com as senhas (criptografas, claro);AuthGroupFile: não está configurado, pois aponta para /dev/null;AuthName: é uma mensagem a ser apresentada no pop up de autenticação do navegador;AuthType: é o tipo da autenticação, neste caso Basic usa um arquivo com usuário e senha;require: define que o usuário precisa ser válido, isto é, incluído no arquivo AuthUserFile.

NOTA: caso fosse definido um arquivo de configuração para AuthGroupFile (ao invés de /dev/null), na diretiva Directory acima, precisaria também incluir uma configuração require,por exemplo "require group webmaster", e neste arquivo precisaria definir quais usuários pertenceriam ao grupo webmaster. Por exemplo, precisaria incluir neste arquivo a linha "webmaster: aluno operador juca admin", para indicar que somente estes quatro usuários

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 14/29

root# mkdir /var/www/autenticado

Page 15: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

poderiam acessar o conteúdo do diretório protegido por senha.

Depois disso, copiar o arquivo "ponto.htaccess" para "/var/www/autenticado/.htaccess":

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

Para criar o arquivo .htpasswd e incluir um usuário e senha, usar 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.

NOTA: 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.

Para testar o acesso em linha de comando, com o wget, precisa passar também usuário e senha, do contrário recebe um erro de "Authorization Required":

Se for testar com o navegador gráfico (por exemplo, Firefox), observar que será solicitado num pop up um usuário e senha para esse acesso, conforme abaixo:

10 Senhas criptografadas, naturalmente.

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 15/29

root# htpasswd -c /var/www/autenticado/.htpasswd alunoNew password: Re-type new password: Adding password for user aluno

root# cp ponto.htaccess /var/www/autenticado/.htaccess

root# wget http://192.168.1.10/autenticado--2017-07-22 17:18:22-- http://192.168.1.10/autenticadoConectando-se a 192.168.1.10:80... conectado.A requisição HTTP foi enviada, aguardando resposta... 401 Authorization RequiredA autorização falhou.root# wget --user=aluno --password=uninove http://192.168.1.10/autenticado

Page 16: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 16/29

Page 17: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

3 - PARTE B (CentOS e Red Hat)

3.1 - Instalação do serviço web Apache

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

Para descobrir se o serviço Apache está instalado num CentOS 6 (System V), procurar pelo seu script de inicialização em /etc/init.d:

NOTA 1: num CentOS ou Red Hat SystemD, o comando equivalente seria "systemctl list-unit-files | grep httpd".

NOTA 2: uma alternativa seria buscar pelo pacote de instalação, com o comando"rpm -aq | grep httpd".

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, num CentOS 6, verificar se existem os seguintes arquivos:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 17/29

root# ls /etc/init.d | grep httpd/etc/init.d/httpd

root# yum install httpd

root# file /etc/init.d/httpd/etc/init.d/httpd: Bourne shell script text executableroot# file /usr/sbin/apache2ctl/usr/sbin/apache2ctl: Bourne shell script text executableroot# 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, strippedroot# file /etc/httpd/etc/httpd: directory

Page 18: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

Os arquivos acima são:

• /etc/init.d/httpd: é o script de inicialização do serviço apache2;• /usr/sbin/apache2ctl: é o script de controle do serviço apache2;• /usr/sbin/httpd: é o executável que dará origem ao processo daemon;• /etc/httpd: é o diretório de configuração do serviço web apache2.

NOTA 1: num CentOS ou Red Hat SystemD, ao invés do script de inicialização do serviço existe o arquivo unit /usr/lib/systemd/system/httpd.service, e o script de controle do serviço é /usr/sbin/apachectl.

3.2 - Arquivos de 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/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.

E no arquivo httpd.conf existe a seguinte include: Include conf.d/*.conf. Deste 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.

Para visualizar o conteúdo do arquivo httpd.conf, uma maneira é usar o comando more:

Uma maneira mais prática de visualizar o conteúdo do arquivo httpd.conf sem apresentar linhas que iniciam por comentário, nem linhas em branco, é com o comando grep:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 18/29

root# cd /etc/httpdroot# ls

root# more /etc/httpd/conf/httpd.conf

root# grep -v "^#" /etc/httpd/conf/httpd.conf | grep -v "^$" | more

Page 19: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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

StartServers 8 número de processos ou threads11 iniciais para oserviço;

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

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

ServerLimit 256 número limite de processos ou threads;MaxClients 256 número limite de clientes simultâneos. Este 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, neste caso está configurado User apache e Group apache, precisa ter no mínimo permissão de leitura no conteúdo em DocumentRoot.

O passo seguinte é iniciar o serviço web Apache. Para isso, num CentOS (ou Red Hat) System V, é usado o script de inicialização:

NOTA: nm CentOS ou Red Hat SystemD, o comando para iniciar o serviço web Apache é "systemctl start httpd".

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

11 Thread: um processo pode ter uma ou mais threads, que são sequências de execução. Os servers (serviços) que são iniciados podem tanto ser em diferentes processos quanto threads de um mesmo processo. A diferença é a economia de recursos computacionais caso seja usado multithreads, pois estas compartilham recursos do processo tais como o espaço de memória.

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 19/29

root# /etc/init.d/httpd startIniciando o httpd: [ OK ]

Page 20: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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 processos filhos que atendem aos clientes do serviço, e a função do daemon é ir criando mais processos filhos à medida que os usuários do serviço forem consumindo os processos que os atenderam.

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

3.3 - Testar o acesso ao serviço

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

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 20/29

root# ps -ef | grep httpdroot 12391 1 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12392 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12393 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12394 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12395 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12396 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12397 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12398 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k startapache 12399 12391 0 16:17 ? 00:00:00 /usr/sbin/httpd -k start

root# nmap localhostStarting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 18:35 BRSTInteresting ports on localhost (127.0.0.1):Other addresses for localhost (not scanned): 127.0.0.1Not shown: 998 closed portsPORT STATE SERVICE80/tcp open http631/tcp open ipp

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

Page 21: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

O erro "ERROR 403: Forbidden", acima, é 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:

Depois, é necessário dar um reload no serviço para ele carregar novamente as configurações.Num CentOS (ou Red Hat) SystemV, o comando a ser executado é:

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

NOTA 2: num CentOS ou Red Hat SystemD, o comando equivalente para o reload do serviço web Apache é "systemctl reload httpd".

Agora, testar de novo o acesso com wget:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 21/29

root# cd /tmproot# wget 192.168.1.10--2017-07-22 20:59:07-- http://192.168.1.10/Connecting to 192.168.1.10:80... connected.HTTP request sent, awaiting response... 403 Forbidden2017-07-22 20:59:12 ERROR 403: Forbidden.

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

root# /etc/init.d/httpd reloadReloading httpd configuration: [ OK ]

root# tail -1 /var/log/httpd/error_log[Sat Jul 22 22:29:12 2017] [error] [client 10.125.5.132 ] Directory index forbidden by Options directive: /var/www/html/

Page 22: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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

3.4 - Configurar diretório protegido por endereço 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 este conteúdo num diretório protegido por IP, e então apenas aqueles clientes com faixa(s) de IP(s) dessa intranet é que terão acesso ao conteúdo, e os demais não. Este 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 sitewww.jairo.pro.br, que já tem arquivos pré-configurados.

Mas como sabemos, o acesso à internet dos laboratórios acadêmicos da Uninove passa por um proxy que exige autenticação, então antes de tentar baixar estes arquivos com o comando wget é necessário acertar a variável http_proxy:

As opções para o comando export, acima, são:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 22/29

root# wget 192.168.1.10--2017-07-22 22:30:59-- http://192.168.1.10/Connecting to 192.168.1.10:80... connected.HTTP request sent, awaiting response... 200 OKLength: 525 [text/html]Saving to: “index.html”

100%[==========================================>] 525 --.-K/s in 0s

2017-07-22 22:30:59 (74.1 MB/s) - “index.html” saved [525/525]

root# tail -1 /var/log/httpd/access_log10.125.5.132 - - [22/Jul/2017:22:30:59 -0200] "GET / HTTP/1.0" 200 525 "-" "Wget/1.12 (linux-gnu)"

root# export http_proxy=http://RA:[email protected]:3128

Page 23: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

http_proxy: é a variável de ambiente que o wget vai ler para obter o usuário esenha que vai autenticar no serviço proxy;

RA: é o RA do aluno, por exemplo, 987654321;SENHA: é a senha de acesso do aluno, por exemplo, 123456;186.251.39.92: é 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:

Esta extração do comando tar cria o diretório apache22. Entrar neste diretório:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 23/29

root# gunzip apache22.tar.gzroot# tar -xvf apache22.tarapache22/apache22/protegido.confapache22/ponto.htpasswdapache22/autenticado.confapache22/ponto.htaccess

root# wget www.jairo.pro.br/apache22.tar.gz--2017-07-22 23:18:14-- http://www.jairo.pro.br/apache22.tar.gzResolving www.jairo.pro.br... 104.28.1.37Connecting to www.jairo.pro.br|104.28.1.37|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 534 [application/x-gzip]Saving to: “apache22.tar.gz”

100%[========================================>] 534 --.-K/s in 0s

2017-07-22 22:38:14 (72.3 MB/s) - “apache22.tar.gz” saved [534/534]

root# echo $http_proxyhttp://987654321:[email protected]:3128

Page 24: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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 esseacesso para mais de um IP ou até mesmo para uma rede inteira, bastaria fazer:

=======================================================================Allow from 192.168.1.0/24 192.168.2.0/24 10.11.0.0/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 este diretório.

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

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

Mas antes de recarregar (reload) o serviço Apache (e esta 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:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 24/29

root# cd apache22root# lsautenticado.conf ponto.htaccess ponto.htpasswd protegido.conf

root# mkdir /var/www/html/protegido

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

Page 25: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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. Para efetuar um reload do serviço, num CentOS (ou Red Hat) SystemV, comandar:

NOTA: nm CentOS ou Red Hat SystemD, o comando equivalente para o reload do serviço web Apache é "systemctl reload httpd".

Agora, é só testar o acesso e verificar que apenas os clientes com IPs configurados na diretiva allow é que conseguem acesso a esse diretório. No arquivo de log do serviço vão ficar registrados os acessos destes clientes.

Os clientes que não estão autorizados recebem a seguinte mensagem:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 25/29

root# /etc/init.d/httpd reloadReloading httpd configuration: [ OK ]

root# unset http_proxyroot# cd /tmproot# wget http://192.168.1.10/protegido--2017-07-22 23:21:03-- http://192.168.1.10/protegidoA conectar 192.168.1.10:80... conectado!HTTP requisição enviada, aguardando resposta... 200 OKTamanho: 132 [text/html]A gravar em: 'index.html'

100%[==========================================>] 132 --.-K/s em 0s

2017-07-22 23:21:04 (29,1 MB/s) - 'index.html' gravado [132/132]

root# wget 192.168.1.10/protegido--2017-07-22 23:23:24-- http://192.168.1.10/protegidoConectando-se a 192.168.0.20:80... conectado.A requisição HTTP foi enviada, aguardando resposta... 403 Forbidden2017-07-22 23:33:24 ERRO 403: Forbidden.

Page 26: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

3.5 - 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 que nele foi incluída a diretiva Directory, que configura o diretório "/var/www/html/autenticado" como protegido por senha:

========== arquivo autenticado.conf =========================================#Diretorio protegido por senha<Directory "/var/www/html/autenticado"> AllowOverride AuthConfig Order allow,deny Allow from all</Directory>=======================================================================

Na diretiva Directory acima, para o diretório protegido por senha, a ordem de acesso é allow,deny e Allow from all, isto é, primeiro permite o acesso a todos, e depois proíbe o acesso para os clientes que não forem autenticados com usuário e senha. Para a autenticação com senha, também é necessário incluir as diretivas AllowOverride e AuthConfig. Isso soa estranho, mas para entender precisa ter em mente que o arquivo de autenticação ".htaccess", fica no interior deste diretório, portanto inicialmente o usuário precisa ter acesso ao diretório para autenticar, mas só vai permanecer lá caso faça a autenticação com sucesso.

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

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

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 26/29

root# mkdir /var/www/html/autenticado

root# cp autenticado.conf /etc/httpd/conf.d

Page 27: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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/.htpasswdAuthGroupFile /dev/nullAuthName "Acesso Restrito"AuthType Basicrequire valid-user=======================================================================

Nas configurações acima, temos:

AuthUserFile: define o arquivo com as senhas (criptografas, claro);AuthGroupFile: não está configurado, pois aponta para /dev/null;AuthName: é uma mensagem a ser apresentada no pop up de autenticação do navegador;AuthType: é o tipo da autenticação, neste caso Basic usa um arquivo com usuário e senha;require: define que o usuário precisa ser válido, isto é, incluído no arquivo AuthUserFile.

NOTA: caso fosse definido um arquivo de configuração para AuthGroupFile (ao invés de /dev/null), na diretiva Directory acima precisaria também incluir uma configuração require, por exemplo "require group webmaster", e neste arquivo precisaria definir quais usuários pertenceriam ao grupo webmaster. Por exemplo, precisaria incluir neste arquivo a linha "webmaster: aluno operador juca admin", para indicar que somente estes quatro usuários puderiam acessar o conteúdo do diretório protegido por senha.

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".

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:

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 27/29

root# cp ponto.htaccess /var/www/html/autenticado/.htaccess

Page 28: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

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

No arquivo ".htpasswd" é que vão os usuários e senhas12 usados nessa autenticação. Do mesmo modo que ".htaccess", o cliente web é impedido de baixar este 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.

NOTA: 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.

Para testar o acesso em linha de comando, com o wget, precisa passar também usuário e senha, do contrário recebe um erro de "Authorization Required":

12 Senhas criptografadas, naturalmente.

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 28/29

root# wget http://192.168.1.10/autenticado/.htaccess--2017-07-22 23:31:14-- http://192.168.1.10/autenticado/.htaccessConnecting to 192.168.1.10:80... connected.HTTP request sent, awaiting response... 403 Forbidden2017-07-22 23:31:14 ERROR 403: Forbidden.

root# tail -1 /var/log/httpd/error_log[Sat Jul 22 23:31:14 2017] [error] [client 10.125.5.132] client denied by server configuration: /var/www/html/autenticado/.htaccess

root# wget --user=aluno --password=uninove http://192.168.1.10/autenticado

root# htpasswd -c /var/www/html/autenticado/.htpasswd alunoNew password: Re-type new password: Adding password for user aluno

Page 29: Serviço web Apache · Prática e Administração de Sistemas Operacionais de Redes Livres Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br

Prática e Administração de Sistemas Operacionais de Redes Livres

Se for testar com o navegador gráfico (por exemplo, Firefox), 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.

SERVIÇO WEB APACHE http://www.jairo.pro.br/ 29/29