Prática e Administração de Sistemas Operacionais de Redes Livres. Serviço web Apache. Outubro/2017. Prof. Jairo.

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

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

Instalação de Servidores de Rede. Faculdades IESGO 2017 Carlos Henrique de Moraes Viana

Laboratório de Redes Prof. Dinailton

Sistemas Operacionais Livres. Servidor Web Apache

O GUIA RÁPIDO SOBRE SERVIDOR WEB 4 PASSOS PARA CONFIGURAÇÃO DO SEU PRÓPRIO SERVIDOR WEB COM APACHE

Instalação e configuração do serviço proxy Squid.

PRÁTICA APACHE. Prof. Claudio Silva

Instalação e Configuração do Servidor HTTPD Apache

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

Faculdade de Tecnologia Senac Goiás. Goiânia, 28 de novembro de 2014.

Instalação e Configuração

TECNOLOGIA EM REDES DE COMPUTADORES - 3º PERÍODO ADS - ADMINISTRAÇÃO DE SERVIDORES Grupo: Alexandre - Leonel - Mateus - Ricardo

Prof. Samuel Henrique Bucke Brito

Instalação Apache + MySQL + PHPMyAdmin CentOS

FACULDADE DE TECNOLOGIA SENAC GESTÃO DA TECNOLOGIA DA INFORMAÇÃO LABORATORIO DE REDE

GUIA DE INSTALAÇÃO DO DO NAGIOS LINUX JORDAN ROMANO

5/7/2010. Apresentação. Introdução. Ponto de vista do usuário. Curso Tecnologia em Telemática. Disciplina Administração de Sistemas Linux

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Aprenda a instalar o GLPI no Centos 6.5

Instalação e Configuração de Servidores Web Server Apache. Prof. Alex Furtunato

Redes de Computadores Da Teoria à Prática com Netkit

Instalando servidor Apache

Servidor WWW Apache IFSC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO SUBSEQUENTE DE TELECOMUNICAÇÕES.! Prof. Tomás Grimm

Breve introdução a User Dir e Senhas no Apache Uma abordagem prática (aka crash course on User Dir and Directory Authentication on Apache)

Linux - Servidor de Redes

WINDOWS. 1. Baixar o software cwrsync e efetuar a instalação.

Gerência de Redes de Computadores Zabbix Instalação. Prof. Alex Furtunato

MANUAL DE INSTALAÇÃO

Configurando VPS Proxy e SSH

Prática e Administração de Sistemas Operacionais de Redes Livres. Serviço Samba. Samba server e client. Outubro/2017. Prof. Jairo.

Atividade Proposta da Disciplina: Laboratório de Rede de Computadores

Laboratório FTP. Francisco Edigleison da Silva Barbosa Professor: Kelvin Lopes Dias

Manual de Instalação do TelEduc 4.4

Tutorial para Instalação do dotproject

Administração de sistemas Linux. Gerenciamento de serviços

# apt-get install libapache2-mod-perl2 libdbd-mysql-perl. libtimedate-perl libnet-dns-perl libnet-ldap-perl libiosocket-ssl-perl

Instalacao do Zabbix em Ambiente CentOS

Redes de Computadores Serviço PROXY

MANUAL DE INSTALAÇÃO SISTEMA DE GERÊNCIA CONSCIUS

Instalação e configuração do server e client Samba.

GLPI Gestão total e gratuita do seu parque informático

Instalacao do Zabbix 2.x em Ambiente CentOS

Laboratório de Redes de Computadores INSTALANDO SERVIDOR APACHE NOS CENTOS 6.5

Guião para a instalação do Ubuntu (Versão 1.1 em 30 Set 07)

Configuração do Servidor Gateway Firewall e DHCP

Transforme o seu CentOS num servidor Web (LAMP)

Procedimentos para Instalação do Sisloc (Estação de Trabalho) versão

Dicas PET-Tele. Instalação do módulo CGILua no Apache 2.2

Entraremos em sistema linux para realizar algumas tarefas e aprender alguns comandos.

Todos ficheiros estao disponivel com este Manual ou no foro, (

MANUAL DE INSTALAÇÃO

MANUAL DE INSTALAÇÃO SAMI HOTELEIRO. REV B

Meios de Comunicação de Dados.

HOW TO. OTP da. Solução. A Vasco é uma das. o Secure Roaming habilitado. Windows Mb RAM.

Servidor Proxy/Cache

Guia de configuração do servidor Apache nos PCs pessoais

Manual Instalação e-cidade-transparência no Ubuntu Server

LAB08 Protocolo HTTP Servidor Apache

Redes de Computadores

André Luis Staroski Clovis Cristiano Brignoli Fabiano F. Maciel Guimarães

Transferência de Arquivo: Protocolo FTP

Laboratório SMTP. Francisco Edigleison da Silva Barbosa Professor: Kelvin Lopes Dias

Realizar o gerenciamento básico de arquivos

FTP

Responsáveis: Bruno Silva, André Coelho, Wellington Silva, Marcelo Hirano. Atualizado em: 08/09/2017 CONFIGURAÇÃO DE BACKUP DE ORIGEM LINUX

Administração dos serviços de redes utilizando linux

Estas instruções de trabalho com a plataforma Linode. Se você não tiver um Linode ainda, se inscrever para um VPS Linux e comece hoje mesmo.

1. Execute o instalador do ambiente. Será exibida a tela do assistente para instalação.

INSTALANDO O HYPER-V EM SISTEMAS OPERACIONAIS WINDOWS

Administração de sistemas Linux. Estrutura de diretórios Linux O diretório /etc

Introdução à Computação

Procedimentos para configuração do DWL-2100AP em modo Repeater

ACS 5.X: Fixe o exemplo de configuração do servidor ldap

Database and Applications. Como instalar e configurar o WampServer -PHP / MySQL e Apache

osticket Aprenda como instalar no Ubuntu

COORDENAÇÃO DE TECNOLOGIA (COTEC) MARÇO/2012

Linha de Sistemas Folhamatic

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

Sophos UTM 9. Guia: Manual de instalação do Sophos UTM 9

"Release Notes", caso contrário pode avançar clicando em "Next".

Manual Técnico. Instalação e Configuração do Reporting Services

INSTALAÇÃO PRINTERTUX. Tutorial

monsta Manual de Instalação

Segurança em Aplicações Web com GNU/Linux

Meu Blog: Mais sobre o Ubuntu LTS no link:

Tutorial Balanceamento de carga em servidores com HAProxy

@RSoft - Desenvolvimento de sistemas e sites Nosso forte é o suporte

Centro Paula Souza TUTORIAL PARA INSTALAÇÃO DO BOCA

VSMTransactionService Documentação

Serviços de transferência de arquivos e de acesso remoto

Guia de instalação do REIS

Redes de Computadores II

Trabalho de laboratório sobre HTTP

INFORMÁTICA. Com o Professor: Rene Maas

Procedimentos para configuração do DWL-G700AP em modo Repeater

Comandos. Sistema Operacional GNU/Linux. de Redes

Transcrição:

Serviço web Apache Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br http://www.jairo.pro.br/ SERVIÇO WEB APACHE http://www.jairo.pro.br/ 1/29

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 "jairo@uni9.pro.br" ou "professor@jairo.pro.br". Sumário 1 - HISTÓRICO...3 2 - PARTE A (Ubuntu e Debian)...4 2.1 - Instalação do serviço web Apache...4 2.2 - Arquivos de configuração do serviço...5 2.3 - Testar o acesso ao serviço...9 2.4 - Configurar diretório protegido por endereço IP...10 2.5 - Configurar diretório protegido por senha...13 3 - PARTE B (CentOS e Red Hat)...17 3.1 - Instalação do serviço web Apache...17 3.2 - Arquivos de configuração do serviço...18 3.3 - Testar o acesso ao serviço...20 3.4 - Configurar diretório protegido por endereço IP...22 3.5 - Configurar diretório protegido por senha...26 SERVIÇO WEB APACHE http://www.jairo.pro.br/ 2/29

1 - HISTÓRICO Prática e Administração de Sistemas Operacionais de Redes Livres 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 HTML 1 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 interpretar 2 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 NCSA 3 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 Gopher 4, 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 internet 5, 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 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. 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

Então, em 1995 Rob McCool saiu do NCSA e juntou-se a um grupo de pessoas que já vinha aplicando patches 6 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 Netcraft 7, 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 ocupados 8 (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ária devido à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 pelo seu script de inicialização em /etc/init.d: root# ls /etc/init.d grep apache2 /etc/init.d/apache2 NOTA 1: num Ubuntu ou Debian SystemD, o comando equivalente seria "systemctl listunits --all grep apache2". 6 Patches: atualizações, correções, modificações e melhorias no código fonte. 7 Netcraft survey em www.netcraft.com 8 Million Busiest Websites, pesquisa também da Netcraft. SERVIÇO WEB APACHE http://www.jairo.pro.br/ 4/29

NOTA 2: uma alternativa seria buscar pelo pacote de instalação, com o comando dpkg -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: root# apt-get install apache2 Após instalado, num Ubuntu ou Debian SystemV, verificar se existem os seguintes arquivos: root# file /etc/init.d/apache2 /etc/init.d/apache2: POSIX shell script, ASCII text executable root# file /usr/sbin/apache2ctl /usr/sbin/apache2ctl: POSIX shell script, ASCII text executable root# file /usr/sbin/apache2 /usr/sbin/apache2: symbolic link to `../lib/apache2/mpm-worker/apache2' root# file /etc/apache2 /etc/apache2: directory 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 existe o 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# cd /etc/apache2 root# ls apache2.conf conf.d envvars httpd.conf magic mods-available mods-enabled ports.conf sites-available sites-enabled O comando more mostra o conteúdo do arquivo de configuração apache2.conf: root# more apache2.conf Um maneira mais prática de visualizar o conteúdo do arquivo apache2.conf sem apresentar linhas comentadas nem linhas em branco é: root# grep -v "^#" apache2.conf grep -v "^$" more No arquivo apache2.conf, algumas configurações importante são: StartServers 5 número de processos ou threads 9 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 /etc/apache2/sites-enabled inclui o diretório /etc/apache2/sitesenabled 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

NOTA 1: no diretório /etc/apache2/sites-available, no arquivo default, está a configuração bá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: root# more sites-available/default 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: root# 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 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 é: root# /etc/init.d/apache2 stop Stopping web server apache2 [ OK ] 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

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: root# apt-get install nmap Agora, é só fazer o scan de portas: root# nmap localhost Starting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 17:28 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.11 seconds 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): root# /etc/init.d/apache2 start Starting web server apache2 [ OK ] 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# nmap localhost Starting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 17:28 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 Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds E o comando ps (conforme acima) vai mostrar que agora o daemon apache2 está rodando de 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: root# cd /tmp root# 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 OK Tamanho: 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] No serviço web, para ver o log do acesso deste cliente, basta dar um tail no arquivo /var/log/apache2/access.log: root# tail -1 /var/log/apache2/access.log 192.168.1.110 - - [22/Jul/2017:20:59:08-0200] "GET / HTTP/1.1" 200 491 "-" "Wget/1.14 (linux-gnu)" SERVIÇO WEB APACHE http://www.jairo.pro.br/ 9/29

NOTA: se ocorresse alguma mensagem de erro no acesso ao serviço Apache, o arquivo a ser consultado 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 único serviç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: root# export http_proxy=http://ra:senha@186.251.39.92:3128 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 e senha 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: root# echo $http_proxy http://987654321:123456@186.251.39.92:3128 SERVIÇO WEB APACHE http://www.jairo.pro.br/ 10/29

wget: Depois disso, é só baixar o arquivo apache2.tar.gz de www.jairo.pro.br com o comando root# cd /tmp root# 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.37 Connecting to www.jairo.pro.br (www.jairo.pro.br) 104.28.0.37 :80... connected. HTTP request sent, awaiting response... 200 OK Length: 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] Agora, descompactar o arquivo apache2.tar.gz e extrair o conteúdo: root# gunzip apache2.tar.gz root# tar -xvf apache2.tar apache2/ apache2/index.html apache2/sites-available.default apache2/apache2.conf apache2/ponto.htpasswd apache2/ponto.htaccess Esta extração do volume tar cria o diretório apache2. Entrar nesse diretório: root# cd apache2 shell# ls apache2.conf index.html ponto.htaccess ponto.htpasswd sites-available.default No arquivo sites-available.default foi incluída a seguinte diretiva: SERVIÇO WEB APACHE http://www.jairo.pro.br/ 11/29

========== 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 somente aos clientes com endereço IP especificados na diretiva "Allow from": root# mkdir /var/www/protegido É 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: root# cp sites-available.default /etc/apache2/sites-available/default 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: root# unset http_proxy root# cd /tmp root# wget http://192.168.1.10/protegido --2017-07-22 23:01:16-- http://192.168.1.10/protegido Conectando-se a 192.168.1.10:80... conectado. A requisição HTTP foi enviada, aguardando resposta... 200 OK Tamanho: 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] SERVIÇO WEB APACHE http://www.jairo.pro.br/ 12/29

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 é: root# /etc/init.d/apache2 reload * Reloading web server config apache2 [ OK ] 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: 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 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

========== 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: root# mkdir /var/www/autenticado Nesse diretório, precisa ser incluído 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 ======================================================================= 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

poderiam acessar o conteúdo do diretório protegido por senha. Depois disso, copiar o arquivo "ponto.htaccess" para "/var/www/autenticado/.htaccess": root# cp ponto.htaccess /var/www/autenticado/.htaccess No arquivo.htpasswd é que vão os usuários e senhas 10 usados nesta autenticação. Para criar o arquivo.htpasswd e incluir um usuário e senha, usar o comando htpasswd: root# htpasswd -c /var/www/autenticado/.htpasswd aluno New password: Re-type new password: Adding password for user aluno 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": root# wget http://192.168.1.10/autenticado --2017-07-22 17:18:22-- http://192.168.1.10/autenticado Conectando-se a 192.168.1.10:80... conectado. A requisição HTTP foi enviada, aguardando resposta... 401 Authorization Required A autorização falhou. root# wget --user=aluno --password=uninove http://192.168.1.10/autenticado 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

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

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: root# ls /etc/init.d grep httpd /etc/init.d/httpd 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: root# yum install httpd Após instalado, num CentOS 6, verificar se existem os seguintes arquivos: root# file /etc/init.d/httpd /etc/init.d/httpd: Bourne shell script text executable root# file /usr/sbin/apache2ctl /usr/sbin/apache2ctl: Bourne shell script text executable root# 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 root# file /etc/httpd /etc/httpd: directory SERVIÇO WEB APACHE http://www.jairo.pro.br/ 17/29

Os arquivos acima são: Prática e Administração de Sistemas Operacionais de Redes Livres /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: root# cd /etc/httpd root# ls 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: root# more /etc/httpd/conf/httpd.conf 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: root# grep -v "^#" /etc/httpd/conf/httpd.conf grep -v "^$" more SERVIÇO WEB APACHE http://www.jairo.pro.br/ 18/29

No arquivo httpd.conf, algumas configurações importante são: StartServers 8 número de processos ou threads 11 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. 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: root# /etc/init.d/httpd start Iniciando o httpd: [ OK ] 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# 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 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: root# nmap localhost Starting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 18:35 BRST Interesting ports on localhost (127.0.0.1): 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 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# cd /tmp root# 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 Forbidden 2017-07-22 20:59:12 ERROR 403: Forbidden. 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: 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/ Então, para facilitar o acesso ao serviço, basta renomear este arquivo, de modo a não ter mais a extensão.conf: root# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.old 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 é: root# /etc/init.d/httpd reload Reloading httpd configuration: [ OK ] 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# 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 OK Length: 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] Agora, no arquivo de log do serviço httpd, /var/log/httpd/access_log, vai aparecer a seguinte linha: root# tail -1 /var/log/httpd/access_log 10.125.5.132 - - [22/Jul/2017:22:30:59-0200] "GET / HTTP/1.0" 200 525 "-" "Wget/1.12 (linux-gnu)" 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 site www.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: root# export http_proxy=http://ra:senha@186.251.39.92:3128 As opções para o comando export, acima, são: SERVIÇO WEB APACHE http://www.jairo.pro.br/ 22/29

http_proxy: é a variável de ambiente que o wget vai ler para obter o usuário e senha 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: root# echo $http_proxy http://987654321:123456@186.251.39.92:3128 Depois disso, é só baixar o arquivo apache22.tar.gz de www.jairo.pro.br com o comando wget: root# wget www.jairo.pro.br/apache22.tar.gz --2017-07-22 23:18:14-- http://www.jairo.pro.br/apache22.tar.gz Resolving www.jairo.pro.br... 104.28.1.37 Connecting to www.jairo.pro.br 104.28.1.37 :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 2017-07-22 22:38:14 (72.3 MB/s) - apache22.tar.gz saved [534/534] Por fim, descompactar e extrair o conteúdo do arquivo apache22.tar.gz com os comandos gunzip e tar: root# gunzip apache22.tar.gz root# tar -xvf apache22.tar apache22/ apache22/protegido.conf apache22/ponto.htpasswd apache22/autenticado.conf apache22/ponto.htaccess 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# cd apache22 root# ls autenticado.conf ponto.htaccess ponto.htpasswd protegido.conf 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.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: root# mkdir /var/www/html/protegido 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: root# cp protegido.conf /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# unset http_proxy root# cd /tmp root# wget http://192.168.1.10/protegido --2017-07-22 23:21: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 2017-07-22 23:21:04 (29,1 MB/s) - 'index.html' gravado [132/132] 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: root# /etc/init.d/httpd reload Reloading httpd configuration: [ OK ] 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: root# wget 192.168.1.10/protegido --2017-07-22 23:23:24-- http://192.168.1.10/protegido Conectando-se a 192.168.0.20:80... conectado. A requisição HTTP foi enviada, aguardando resposta... 403 Forbidden 2017-07-22 23:33:24 ERRO 403: Forbidden. SERVIÇO WEB APACHE http://www.jairo.pro.br/ 25/29

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. senha: É preciso também criar o diretório onde vai ser disponibilizado o conteúdo protegido por root# mkdir /var/www/html/autenticado 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: root# cp autenticado.conf /etc/httpd/conf.d SERVIÇO WEB APACHE http://www.jairo.pro.br/ 26/29

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 ======================================================================= 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: root# cp ponto.htaccess /var/www/html/autenticado/.htaccess 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# wget http://192.168.1.10/autenticado/.htaccess --2017-07-22 23:31:14-- http://192.168.1.10/autenticado/.htaccess Connecting to 192.168.1.10:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-07-22 23:31:14 ERROR 403: Forbidden. E no arquivo de erro do serviço web Apache, aparece o seguinte log: 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 No arquivo ".htpasswd" é que vão os usuários e senhas 12 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: root# htpasswd -c /var/www/html/autenticado/.htpasswd aluno New password: Re-type new password: Adding password for user aluno 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": root# wget --user=aluno --password=uninove http://192.168.1.10/autenticado 12 Senhas criptografadas, naturalmente. SERVIÇO WEB APACHE http://www.jairo.pro.br/ 28/29

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