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



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

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

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

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

Sistemas Operacionais Livres. Servidor Web Apache

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

Instalação Apache + MySQL + PHPMyAdmin CentOS

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

Prof. Samuel Henrique Bucke Brito

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

Instalação e Configuração

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

Linux - Servidor de Redes

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

PRÁTICA APACHE. Prof. Claudio Silva

Instalando servidor Apache

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)

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Guia de instalação para ambiente de Desenvolvimento LINUX

Capítulo 7. Hyper Text Transfer Protocol (HTTP). Serviço Apache. - Protocolo HTTP - Sessão HTTP - Configuração do serviço Apache

FICHA DE TRABALHO #08

Passo 1: Abra seu navegador e digite Passo 2: Na tela que surgir, clique em Get Started.

Projeto Integrador Programação para Internet

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

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

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

Hyper Text Transfer Protocol (HTTP) ADI HTTP 1/18

Instituto Superior Politécnico Gaya Escola Superior de Ciência e Tecnologia

Lazarus pelo SVN Linux/Windows

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon

GUIA PRÁTICO DE INSTALAÇÃO

Web Design Aula 11: Site na Web

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

Instalação e Configuração do Nagios

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

Manual Captura S_Line

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

Guia de Prática. Windows 7 Ubuntu 12.04

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

ENDEREÇOS DE REDE PRIVADOS até até até Kernel

MANUAL DE CONFIGURAÇÃO

Desenvolvendo Websites com PHP

Redes de Computadores II

Manual de operação. BS Ponto Versão 5.1

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

Procedimentos para Reinstalação do Sisloc

Atualizaça o do Maker

ServerAdmin - Se o sistema detectar algo de anômalo, um mail será enviado a bazar@projeointegador.

CONFIGURAÇÃO MINIMA EXIGIDA:

Manual de Instalação do Agente Citsmart

Manual de Instalação. SafeSign Standard (Para MAC OS 10.7)

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Configurando DDNS no Stand Alone

Linux System Administration 455

SSE 3.0 Guia Rápido Parametrizando o SISTEMA DE SECRETARIA Nesta Edição Configurando a Conexão com o Banco de Dados

Aula 14 Serviços Internet (Servidor Web Apache)

Sistema Operacional Unidade 13 Servidor Samba. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Manual do Visualizador NF e KEY BEST

TUTORIAL PASSO A PASSO INSTALAÇÃO SERVIDOR DE SMS PARA MKAUTH

Tutorial. Transmitindo arquivos via FTP. FTP Protocolo da internet responsável pelo envio e recebimento de arquivos com maior eficiência e rapidez.

MANUAL COTAÇAO WEB MANUAL MANUAL AVANÇO INFORMÁTICA AVANÇO INFORMÁTICA. [Digite seu endereço] [Digite seu telefone] [Digite seu endereço de ]

Módulos de Multiprocessamento em um servidor Web

Aula 02. Introdução ao Linux

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

INTRODUÇÃO: 1 - Conectando na sua conta

Manual de Instalação e Configuração do Primeiro Backup Versão PRO

MSN-Proxy v0.7 no Debian 5 (Atualizado)

Configuração de um servidor FTP. Campus Cachoeiro Curso Técnico em Informática

Servidor Apache - Instalação

Protweb PHP. Instalação/Configuração

Instalação e Configuração do CollabNet Subversion Edge

SCIM 1.0. Guia Rápido. Instalando, Parametrizando e Utilizando o Sistema de Controle Interno Municipal. Introdução

Guia do Administrador de Licenças de Usuários Autorizados do IBM SPSS Modeler

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Manual de Instalação e Configuração. Módulo Remote. (G2KA) para NFSE. v1.0

MANUAL PORTAL CLIENTE AVANÇO

1. Introdução. 2. Conteúdo da embalagem

Linux Network Servers

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Acesso Remoto Placas de captura

Nessus Vulnerability Scanner

NetEye Guia de Instalação

Instalando o WordPress em localhost

Manual Replicação Manual VPN

Administrando o sistema linux TCP/IP

- Wireless e NTP - 272

Configurando e Instalando o TRAC

GUIA RÁPIDO. DARUMA Viva de um novo jeito

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

E&L Protocolo, Documentos Eletrônicos e Processos Perguntas Frequentes

Fox Gerenciador de Sistemas

Roteiro de instalação da Linha DD

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server

Projeto Amadeus. Guia de Instalação Windows

Introdução ao Sistema. Características

Transcrição:

Serviço web Apache agosto/2013 Instalação e configuração do serviço web Apache. 1 Histórico Um servidor web [ou serviço web] é uma aplicação servidora que usa o protocolo HTTP, Hyper Text Transfer Protocol, para se comunicar com a aplicação cliente, usualmente um navegador da internet. No caso de acesso mais simples, o cliente faz uma requisição solicitando determinado documento 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 web server era de código fonte aberto, fato que permitiu posteriormente a criação de novos seviços web baseados neste. A letra d em HTTPd vem de daemon, ou seja, daemon HTTP. Todas essas novas tecnologias nasceram no Unix, tanto o web server quanto o navegador, pois era esse o sistema operacional largamente empregado nas universidades e centros de pesquisa. Acontece que o sucesso do navegador Mosaic foi tamanho que uma parte substancial do grupo de cientistas que criou o Mosaic saiu do NCSA para fundar uma empresa chamada Mosaic Communications Corporation, posteriormente renomeada para Netscape Communications Corporation. Essa empresa criou o navegador conhecido como Netscape, que foi baseado no Mosaic. Posteriormente, por cobrar licença de uso, o Netscape perdeu espaço para os navegadores free. 1 O documento HTML é um arquivo de texto com instruções de Hyper Text Transfer Protocol. 2 Por exemplo, Lynx [que é uma das aplicações clientes de servidor web mais antigas] não interpreta as tags HTML e apenas apresenta o conteúdo texto da página. 3 National Center for Supercomputing Applications 4 Gopher é também um protocolo da camada de aplicação TCP/IP lançado em 1991. Foi o precursor da World Wide Web. Serviço web Apache www.jairo.pro.br 1/22

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 rapidamente a se disseminar pelo mundo. Então, em 1995 Rob McCool saiu do NCSA e juntou-se a um grupo de pessoas que já vinha aplicando patches 6 no código do HTTPd NCSA web server. Esse grupo juntou forças e criou a empresa que posteriormente ficou conhecida como Apache. O serviço web Apache é derivado diretamente do código fonte do HTTPd webserver, inicialmente pela aplicação de patches. O nome apache vem de a patchy server, embora atualmente digam que o nome foi escolhido "em homenagem à tribo indígena". Atualmente o Apache web server está na versão 2, e seu código fonte também está na categoria open source. Desde o seu início e até hoje, o Apache é o web server mais usado. De acordo com levantamento atual da Netcraft 7, 60% do total de servidores web são Apache, mais que o dobro do segundo colocado. E essa distância aumenta mais ainda quando se avalia apenas o milhão de websites mais ocupados 8 [ou mais acessados] na internet, onde esse número aumenta para 66%. Essa preferência reflete não apenas o baixo custo de implantação, mas também a qualidade, robustez e segurança do produto. A instalação e configuração do serviço web Apache será em dua partes: Parte A para CentOS (Red Hat) e parte B para Ubuntu (Debian). 5 Essas empresas à época eram principalmente os provedores de acesso à internet em linha discada. 6 Patches: atualizações, correções, modificações e melhorias no código fonte. 7 Netcraft survey em www.netcraft.com 8 Million Busiest Websites, pesquisa também da Netcraft. Serviço web Apache www.jairo.pro.br 2/22

Instalação e configuração: Parte A (CentOS) A2 Instalação do web server Apache Essa instalação também será standalone. Para descobrir se o serviço Apache está instalado, procurar pelo seu script de inicialização em /etc/init.d: shell# ls /etc/init.d grep httpd /etc/init.d/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: shell# yum install httpd Após instalado, verificar se existem os seguintes arquivos: shell# file /etc/init.d/httpd /etc/init.d/httpd: Bourne shell script text executable shell# file /usr/sbin/apache2ctl /usr/sbin/apache2ctl: Bourne shell script text executable shell# file /usr/sbin/httpd /usr/sbin/httpd: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped shell# file /etc/httpd /etc/httpd: directory onde: /etc/init.d/httpd é o script de inicialização do serviço Apache; /usr/sbin/apache2ctl é o script de controle do serviço Apache; /usr/sbin/httpd é o executável que dará origem ao processo daemon; /etc/httpd é o diretório de configuração do serviço web Apache. A3 Configuração do serviço Serviço web Apache www.jairo.pro.br 3/22

Primeiro vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar no diretório /etc/httpd: shell# cd /etc/httpd shell# 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. No arquivo httpd.conf existe a seguinte include: Include conf.d/*.conf. Desse modo, todo arquivo que for colocado no diretório /etc/httpd/conf.d e que tenha a extensão.conf será tratado também como parte da configuração do serviço. shell# more /etc/httpd/conf/httpd.conf Um maneira mais prática de visualizar o conteúdo do arquivo httpd.conf sem apresentar linhas comentadas nem linhas em branco é: shell# grep -v "^#" /etc/httpd/conf/httpd.conf grep -v "^$" more No arquivo httpd.conf, algumas configurações importante são: StartServers 8 número de processos ou threads iniciais para o serviço; MinSpareServers 5 número mínimo de processos ou threads durante o funcionamento; MaxSpareServers 20 número máximo de processos ou threads durante o funcionamento; ServerLimit 256 número limite de processos ou threads; MaxClients 256 número limite de clientes simultâneos. Esse número deve ser no máximo igual a ServerLimit, nunca maior; Include conf.d/*.conf inclui o diretório /etc/httpd/conf.d também como diretório de configuração do serviço; User apache é o usuário sobre o qual roda o serviço; Group apache é o grupo sobre o qual roda o serviço; DocumentRoot "/var/www/html" é o diretório onde fica o conteúdo servido pelo serviço; AccessFileName.htaccess é o nome do arquivo usado quando houver autenticação para acesso a diretório. Convém notar também que o usuário sobre o qual o serviço roda, nesse caso está configurado User apache e Group apache, precisa ter no mínimo permissão de leitura no Serviço web Apache www.jairo.pro.br 4/22

conteúdo em DocumentRoot. O passo seguinte é iniciar o serviço web Apache. Para isso é usado o script de inicialização: shell# /etc/init.d/httpd start Iniciando o httpd: [ OK ] Depois de iniciado o serviço, deverá estar rodando o processo daemon e também seus processos filhos [de StartServers]: shell# ps -ef grep httpd root 12391 1 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12392 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12393 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12394 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12395 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12396 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12397 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12398 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start apache 12399 12391 0 16:17? 00:00:00 /usr/sbin/httpd -k start Repare que o daemon [nesse caso] é o processo de PID 12391, e que pertence ao root. Os demais processos são filhos deste e estão rodando sobre o usuário apache. São os processo filhos que atendem aos clientes do serviço, e a função do daemon é ir criando mais processos filhos à medida que os clientes forem consumindo os processos que os atendem. Depois disso, o scan de portas vai mostrar que a porta 80 também está aberta: Serviço web Apache www.jairo.pro.br 5/22

shell# nmap localhost Starting Nmap 6.01 ( http://nmap.org ) at 2012-11-04 16:26 BRST Nmap scan report for localhost (127.0.0.1) Host is up (0.0000070s latency). Other addresses for localhost (not scanned): 127.0.0.1 Not shown: 998 closed ports PORT STATE SERVICE 80/tcp open http 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds A4 Testar o acesso com a aplicação cliente wget Já que a aplicação wget baixa o arquivo do serviço web, ir para o diretório /tmp e, de lá, acessar o web server no IP 192.168.1.10: shell# cd /tmp shell# wget 192.168.1.10 --2012-11-04 16:29:12-- http://192.168.1.10/ Connecting to 192.168.1.10:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2012-11-04 16:29:12 ERROR 403: Forbidden. O erro "ERROR 403: Forbidden" é devido ao arquivo de configuração /etc/httpd/conf.d/welcome.conf, que proíbe a listagem do diretório. No arquivo de erro do serviço httpd, /var/log/httpd/error_log, aparece o seguinte log: shell# tail /var/log/httpd/error_log [Sun Nov 04 16:29:12 2012] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /var/www/html/ Então, para facilitar o acesso ao serviço, basta renomear este arquivo, de modo a não ter mais a extensão.conf: Serviço web Apache www.jairo.pro.br 6/22

shell# 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: shell# /etc/init.d/httpd reload Reloading httpd configuration: [ OK ] NOTA: O reload não reinicia o serviço, apenas recarrega as configurações, desse modo nenhum usuário corre o risco de ser desconectado. Agora, testar de novo o acesso com wget: shell# wget 192.168.1.10 --2012-11-04 16:44:59-- http://192.168.1.10/ Connecting to 192.168.1.10:80... connected. HTTP request sent, awaiting response... 200 OK Length: 525 [text/html] Saving to: index.html 100%[==========================================>] 525 --.-K/s in 0s 2012-11-04 16:44:59 (74.1 MB/s) - index.html saved [525/525] Agora, no arquivo de log do serviço httpd, /var/log/httpd/access_log, vai aparecer a seguinte linha: shell# tail /var/log/httpd/access_log 127.0.0.1 - - [04/Nov/2012:16:44:59-0200] "GET / HTTP/1.0" 200 525 "-" "Wget/1.12 (linux-gnu)" A5 Configurar diretório protegido por IP Para a necessidade dessa configuração, tomar como exemplo o caso de um único serviço web disponibilizando conteúdo tanto para a internet quanto intranet. Acontece que nessa intranet, algum conteúdo é restrito e não deve ser acessado da internet. Nesse caso, basta colocar esse conteúdo num diretório protegido por IP, isso é, apenas Serviço web Apache www.jairo.pro.br 7/22

aqueles clientes com faixa[s] de IP[s] dessa intranet é que terão acesso ao conteúdo, e os demais não. Esse exemplo está sendo efetuado no servidor web com IP 192.168.1.10. E para configurar essa diretiva, o jeito mais fácil é baixar o arquivo apache22.tar.gz do site www.jairo.pro.br, que já tem arquivos pré-configurados. Mas como sabemos, o acesso à internet passa por um proxy que exige autenticação, então antes de tentar baixar esses arquivos com comando wget é necessário acertar a variável http_proxy: shell# export http_proxy=http://ra:senha@186.251.39.196:3128 Onde: RA: é o RA do aluno; SENHA: é a senha de acesso do aluno; 186.251.39.196: é o IP do serviço proxy, que atende na porta 3128 [é um Squid]. Para confirmar se a variável http_proxy está correta, usar o comando echo: shell# echo $http_proxy http://ra:senha@186.251.39.196:3128 Depois disso, é só baixar o arquivo apache22.tar.gz de www.jairo.pro.br com o comando wget: shell# wget www.jairo.pro.br/apache22.tar.gz --2012-11-04 17:18:14-- http://www.jairo.pro.br/apache22.tar.gz Resolving www.jairo.pro.br... 187.73.33.34 Connecting to www.jairo.pro.br 187.73.33.34 :80... connected. HTTP request sent, awaiting response... 200 OK Length: 534 [application/x-gzip] Saving to: apache22.tar.gz 100%[========================================>] 534 --.-K/s in 0s 2012-11-04 17:18:14 (72.3 MB/s) - apache22.tar.gz saved [534/534] Por fim, descompactar e extrair o conteúdo do arquivo apache22.tar.gz com os comandos gunzip e tar: Serviço web Apache www.jairo.pro.br 8/22

shell# gunzip apache22.tar.gz shell# tar -xvf apache22.tar apache22/ apache22/protegido.conf apache22/ponto.htpasswd apache22/autenticado.conf apache22/ponto.htaccess que cria o diretório apache22. Entrar nesse diretório: shell# cd apache22 shell# 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.1.1/24 10.11.12.13/16 127.0.0.1 172.16 ====================================================================== Então, para configurar o acesso a diretório protegido por IP, basta apenas acertar os IPs ou redes de quem está de fato autorizado a ter acesso a esse diretório. É preciso também criar o diretório onde vai ser disponibilizado o conteúdo protegido por IP: shell# mkdir /var/www/html/protegido Depois disso, é so copiar o arquivo protegido.conf para o diretório de configuração do serviço apache, no diretório /etc/httpd/conf.d: Serviço web Apache www.jairo.pro.br 9/22

shell# cp protegido.conf /etc/httpd/conf.d Mas antes de recarregar [reload] o serviço Apache [e essa configuração tomar efeito], testar o acesso ao diretório /var/www/html/protegido com o cliente wget. Como a variável http_proxy foi carregada com o IP e porta do serviço proxy, isso precisa ser desfeito com o comando unset: shell# unset http_proxy shell# cd /tmp shell# wget http://192.168.1.10/protegido --2009-11-15 21:51:03-- http://192.168.1.10/protegido A conectar 192.168.1.10:80... conectado! HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 132 [text/html] A gravar em: 'index.html' 100%[==========================================>] 132 --.-K/s em 0s 2009-11-15 21:51:04 (29,1 MB/s) - 'index.html' gravado [132/132] 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: shell# /etc/init.d/httpd reload Reloading httpd configuration: [ OK ] Agora é só testar o acesso e verificar que apenas os clientes com IPs configurados na diretiva allow é que conseguem acesso a esse diretório. E no arquivo de log do serviço vão ficar registrados os acessos desses clientes. A6 Configurar diretório protegido por senha No exemplo acima [diretório protegido por IP], o conteúdo do diretório somente pode ser acessado pelos clientes com determinado IP [ou rede]. Porém, existem casos em que o cliente está navegando com qualquer IP na internet e também precisa ter acesso a esse conteúdo na intranet. Nesse caso, a solução é colocar esse conteúdo num diretório protegido por senha, ou seja, quando o cliente tentar entrar naquele diretório, será solicitado um usuário e senha. Aproveitando o arquivo autenticado.conf que veio no arquivo apache22.tar.gz, observar Serviço web Apache www.jairo.pro.br 10/22

que nele foi incluída a seguinte diretiva: ========== arquivo autenticado.conf ====================================== #Diretorio protegido por senha <Directory "/var/www/html/autenticado"> AllowOverride FileInfo AuthConfig Limit Order allow,deny Allow from all </Directory> =================================================================== senha. senha: Essa diretiva configura o diretório "/var/www/html/autenticado" como protegido por É preciso também criar o diretório onde vai ser disponibilizado o conteúdo protegido por shell# mkdir /var/www/html/autenticado Depois disso, é so copiar o arquivo autenticado.conf para o diretório de configuração do serviço apache, no diretório /etc/httpd/conf.d: shell# cp autenticado.conf /etc/httpd/conf.d No diretório /var/www/html/autenticado também precisa haver o arquivo.htaccess, que é onde estão as definições de como será essa autenticação. O arquivo.htaccess tem o seguinte conteúdo: ========== arquivo /var/www/html/autenticado/.htaccess =========== AuthUserFile /var/www/html/autenticado/.htpasswd AuthGroupFile /dev/null AuthName "Acesso Restrito" AuthType Basic require valid-user ======================================================== No arquivo "ponto.htaccess" que veio no arquivo apache22.tar.gz já estão prontas as definições acima, então basta copiá-lo para o diretório /var/www/html/autenticado: shell# 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". Serviço web Apache www.jairo.pro.br 11/22

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: shell# wget http://192.168.1.10/autenticado/.htaccess --2012-11-04 20:51:14-- http://192.168.1.10/autenticado/.htaccess Connecting to 192.168.1.10:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2012-11-04 20:51:14 ERROR 403: Forbidden. E no arquivo de erro do serviço web Apache, aparece o seguinte log: shell# tail /var/log/httpd/error_log [Sun Nov 04 20:51:14 2012] [error] [client 127.0.0.1] client denied by server configuration: /var/www/html/autenticado/.htaccess No arquivo ".htpasswd" é que vão os usuários e senhas 9 usados nessa autenticação. Do mesmo modo que ".htaccess", o cliente web é impedido de baixar esse arquivo. Para criar o arquivo ".htpasswd" e incluir o usuário aluno e sua senha, deve ser usado o comando htpasswd: shell# 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. IMPORTANTE: Se o arquivo ".htpasswd" já existe e for usado -c, todo o conteúdo anterior desse arquivo será perdido. Mas se o arquivo ".htpasswd" já existe e não for usado -c, apenas altera a senha do usuário que já existe no arquivo ou, caso ainda não exista o usuário, será automaticamente incluído nesse arquivo. Agora é só testar com o navegador e observar que será solicitado um usuário e senha para esse acesso. A figura abaixo mostra como é feita essa autenticação usando o navegador Firefox. 9 Senhas criptografadas, naturalmente. Serviço web Apache www.jairo.pro.br 12/22

Serviço web Apache www.jairo.pro.br 13/22

Instalação e configuração: Parte B (Ubuntu) B2 Instalação do web server Apache Essa instalação também será standalone. Para descobrir se o servidor Apache está instalado, procurar pelo seu script de inicialização em /etc/init.d: shell# ls /etc/init.d grep apache /etc/init.d/apache2 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: shell# apt-get install apache2 Após instalado, verificar se existem os seguintes arquivos: shell# file /etc/init.d/apache2 /etc/init.d/apache2: Bourne shell script text executable shell# file /usr/sbin/apache2ctl /usr/sbin/apache2ctl: Bourne shell script text executable shell# file /usr/sbin/apache2 /usr/sbin/apache2: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped shell# file /etc/apache2 /etc/apache2: directory onde: /etc/init.d/apache2 é o script de inicialização do serviço apache2; /usr/sbin/apache2ctl é o script de controle do serviço apache2; /usr/sbin/apache2 é o executável que dará origem ao processo daemon; /etc/apache2 é o diretório de configuração do serviço web apache2. B3 Configuração do serviço Primeiro vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar no diretório /etc/apache2: Serviço web Apache www.jairo.pro.br 14/22

shell# cd /etc/apache2 shell# ls O arquivo de configuração do serviço é "apache2.conf". shell# 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 é: shell# 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 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 roda o serviço; Group www-data é o grupo sobre o qual roda o serviço; AccessFileName.htaccess é o nome do arquivo usado quando houver autenticação para acesso a diretório. NOTA: O diretório /etc/apache2/sites-available tem o mesmo conteúdo que /etc/apache2/sitesenabled, pois num estão linques simbólicos que apontam para os arquivos no outro. No arquivo apache2.conf, uma configuração importante é sobre qual usuário o serviço roda. Nas versões mais atuais de Ubuntu, isso está configurado no arquivo /etc/apache2/envvars. Significa que esse usuário precisa ter no mínimo permissão de leitura no conteúdo de DocumentRoot [abaixo]. Serviço web Apache www.jairo.pro.br 15/22

Convém reparar também que nesse arquivo tem uma include para sites-available/default, que é o local recomendado para configurar o serviço: shell# more sites-available/default Nesse arquivo existe a diretiva DocumentRoot /var/www, que é o local onde ficam os documentos que o serviço entrega ao cliente. Normalmente e erradamente o apt-get instala a aplicação e já inicia o processo, isso sem configurar o serviço. Por isso, após a instalação é necessário verificar se existe o processo daemon rodando: shell# ps -ef grep apache2 root 5184 1 0 19:32? 00:00:00 /usr/sbin/apache2 -k start www-data 5185 5184 0 19:32? 00:00:00 /usr/sbin/apache2 -k start www-data 5188 5184 0 19:32? 00:00:00 /usr/sbin/apache2 -k start www-data 5217 5184 0 19:32? 00:00:00 /usr/sbin/apache2 -k start aluno 5419 5378 0 19:34 pts/0 00:00:00 grep apache portanto, se houver saída no comando indica que o processo está rodando e deve ser parado esse serviço. Reparar também que o processo daemon [nesse cao] é o de PID 5184, e os demais são processos filhos à espera de clientes. shell# /etc/init.d/apache2 stop Parando o apache2: [ OK ] Agora, o comando ps -ef grep apache2 não deverá mais mostrar o daemon rodando. Antes de iniciar o serviço web apache, verificar quais portas TCP estão abertas. Para isso, é necessário a aplicação nmap para fazer um scan de portas. E se esta aplicação não estiver instalada, fazer a instalação: shell# apt-get install nmap Agora, é só fazer o scan de portas: Serviço web Apache www.jairo.pro.br 16/22

shell# nmap localhost Starting Nmap 4.76 ( http://nmap.org ) at 2009-11-15 18:48 BRST Interesting ports on localhost (127.0.0.1): Not shown: 999 closed ports PORT STATE SERVICE 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds que mostra apenas a porta 631 [servidor de impressão] aberta. Agora, então, iniciar o serviço apache2: shell# /etc/init.d/apache2 start Iniciando o apache2: [ OK ] Depois disso, o scan de portas vai mostrar que a porta 80 também está aberta: shell# nmap localhost Starting Nmap 4.76 ( http://nmap.org ) at 2009-11-15 19:38 BRST Interesting ports on localhost (127.0.0.1): Not shown: 998 closed ports PORT STATE SERVICE 80/tcp open http 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds O comando ps [conforme acima] vai mostrar que o daemon apache2 está rodando. B4 Testar o acesso com a aplicação cliente wget Já que a aplicação wget baixa o arquivo do servidor web, ir para o diretório /tmp e, de lá, acessar o web server no IP 192.168.1.10: Serviço web Apache www.jairo.pro.br 17/22

shell# cd /tmp shell# wget 192.168.1.10 --2009-11-15 20:59:07-- http://192.168.1.10/ A conectar 192.168.1.10:80... conectado! HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 194 [text/html] A gravar em: 'index.html' 100%[==========================================>] 194 --.-K/s em 0s 2009-11-15 20:59:07 (26,3 MB/s) - 'index.html' gravado [194/194] Para ver o log desse acesso, basta dar um tail no arquivo /var/log/apache2/access.log: Se ocorresse alguma mensagem de erro no acesso ao serviço Apache, o arquivo a ser consultado seria /var/log/apache2/error.log: B5 Configurar diretório protegido por IP Para a necessidade dessa configuração, tomar como exemplo o caso de um único serviço web disponibilizando conteúdo tanto para a internet quanto intranet. Acontece que nessa intranet, algum conteúdo é restrito e não deve ser acessado da internet. Nesse caso, basta colocar esse conteúdo num diretório protegido por IP, isso é, apenas aqueles clientes com faixa[s] de IP[s] dessa intranet é que terão acesso ao conteúdo, e os demais não. Esse exemplo está sendo efetuado no host com IP 192.168.1.10. E para configurar essa diretiva, o jeito mais fácil é baixar o arquivo apache2.tar.gz do site www.jairo.pro.br, que já tem arquivos pré-configurados. Mas como sabemos, o acesso à internet passa por um proxy que exige autenticação, então antes de tentar baixar esses arquivos com comando wget é necessário acertar a variável http_proxy: shell# export http_proxy=http://ra:senha@186.251.39.196:3128 Onde: RA: é o RA do aluno; SENHA: é a senha de acesso do aluno; 186.251.39.196: é o IP do serviço proxy, que atende na porta 3128 [é um Squid]. Para confirmar se a variável http_proxy está correta, usar o comando echo: Serviço web Apache www.jairo.pro.br 18/22

shell# echo $http_proxy http://ra:senha@186.251.39.196:3128 wget: Depois disso, é só baixar o arquivo apache2.tar.gz de www.jairo.pro.br com o comando shell# cd /tmp shell# wget www.jairo.pro.br/apache2.tar.gz --2009-11-15 21:18:40-- http://www.jairo.pro.br/apache2.tar.gz Resolvendo www.jairo.pro.br... 187.16.23.138 A conectar www.jairo.pro.br 187.16.23.138 :80... conectado! HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 4957 (4,8K) [application/x-gzip] A gravar em: 'apache2.tar.gz' 100%[===============================================>] 4.957 --.-K/s em 0,07s 2009-11-15 21:18:40 (167,1 KB/s) - 'apache2.tar.gz' gravado [4957/4957] Agora, descompactar o arquivo apache2.tar.gz e extrair o conteúdo: shell# gunzip apache2.tar.gz shell# tar -xvf apache2.tar apache2/ apache2/index.html apache2/sites-available.default apache2/apache2.conf apache2/ponto.htpasswd apache2/ponto.htaccess que cria o diretório apache2. Entrar nesse diretório: shell# 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: ========== arquivo sites-available.default ====================================== # diretorio protegido por IP <Directory "/var/www/protegido"> Order deny,allow Deny from all Allow from 192.168.1.0/24 192.168.1.1/24 10.11.12.13/16 127.0.0.1 172.16 </Directory> Serviço web Apache www.jairo.pro.br 19/22

======================================================================= É preciso criar o diretório protegido por IP: shell# mkdir /var/www/protegido É necessário também acertar os IPs ou redes de quem está de fato autorizado a ter acesso a esse diretório. Depois disso, é so copiar esse arquivo para o diretório de configuração do serviço apache: shell# cp sites-available.default /etc/apache2/sites-available/default Mas antes de recarregar [reload] o serviço Apache [e essa configuração tomar efeito], testar o acesso ao diretório /var/www/protegido com o cliente wget. Como a variável http_proxy foi carregada com o IP e porta do serviço proxy, isso precisa ser desfeito com o comando unset: shell# unset http_proxy shell# cd /tmp shell# wget http://192.168.1.10/protegido --2009-11-15 21:51:03-- http://192.168.1.10/protegido A conectar 192.168.1.10:80... conectado! HTTP requisição enviada, aguardando resposta... 200 OK Tamanho: 132 [text/html] A gravar em: 'index.html' 100%[==========================================>] 132 --.-K/s em 0s 2009-11-15 21:51:04 (29,1 MB/s) - 'index.html' gravado [132/132] Convém notar que qualquer cliente, indiferente do seu IP, tem acesso ao diretório protegido. No entanto, após o reload do serviço essa configuração toma efeito: shell# /etc/init.d/apache2 reload Reloading httpdapache2 configuration: [ OK ] Agora é só testar o acesso e verificar que apenas os clientes com IPs configurados na diretiva allow é que conseguem acesso a esse diretório. E no arquivo de log do serviço vão ficar registrados os acessos desses clientes. Serviço web Apache www.jairo.pro.br 20/22