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

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

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

Sistemas Operacionais Livres. Servidor Web Apache

PRÁTICA APACHE. Prof. Claudio Silva

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

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 do Servidor HTTPD Apache

Instalação e Configuração

Prof. Samuel Henrique Bucke Brito

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)

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

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

Instalando servidor Apache

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

Linux - Servidor de Redes

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

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

Redes de Computadores II

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

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

Para o processo de instalação do servidor Apache, deve se executar o seguinte comando, como root.

Servidor Apache - Instalação

Tutorial para Instalação do dotproject

Realizar o gerenciamento básico de arquivos

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

Linux Network Servers

FICHA DE TRABALHO #08

Manual de Instalação do TelEduc 4.4

Serviço Postfix. Instalação e configuração do serviço Postfix.

Aprenda a instalar a plataforma de monitorização Cacti

Instalação e configuração do serviço DNS BIND.

Inicialmente precisamos instalar o servidor tomcat7, segue comando de instalação.

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

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

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

Tutorial, Instalando e configurando o apache no linux.

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

Meios de Comunicação de Dados.

Estrutura de Diretórios Linux. Rodrigo Gentini

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

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

Instalação e configuração dos serviços FTP, TELNET e SSH. Noções de rdesktop e VNC.

Linux. - Comando básicos

Como configurar Conexão Remota no SQL Server 2005/2008

Tutorial de Instalação do Moodle no Ubuntu

Configuração para Uso do Tablet no GigaChef e Outros Dispositivos

Aula 14 Serviços Internet (Servidor Web Apache)

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

Revisão Q de 26/06/2015

Projeto Integrador Programação para Internet

Protocolo HTTP. Professor Leonardo Larback

Aprenda a instalar o Drupal 7 no CentOS 7

Instalação e Configuração do Nagios

#apt-get install make flex gcc gpp apache2 php5 php5-pgsql postgresql-8.4 libapache2-mod-php5 php5-gd php-net-socket postgres

Administrando o sistema linux TCP/IP

Assinador de Documentos Vara de Execuções Penais

TUTORIAL DE SQUID Versão 3.1

Rede VPN UFBA Procedimento para configuração

monsta Manual de Instalação

LINUX. Uma visão geral

Tutorial AwStats Indice

Introdução a shell scripts

Manual do Usuário. Instalação via Terminal. SIGA-ADM versão 12.06

Inscrições em Eventos

SERVIDOR WEB + LOG DE ACESSO LABORATÓRIO DE REDES DE COMPUTADORES Responsável: Ana Luíza Cruvinel

Guia de instalação para ambiente de Desenvolvimento LINUX

Informática. Linux. Professor Márcio Hunecke.

Escondendo a versão do Apache

IBM SPSS Collaboration and Deployment Services (C&DS) versão 7

Sidicom S4. Tutorial: instalação do sistema em servidor

Tutorial Servidor Proxy com Squid baseado em Linux Acadêmicos : Felipe Zottis e Cleber Pivetta. Servidor Proxy

GUIA RÁPIDO DE UTILIZAÇÃO KIT MERCURIOIV OSCILOSCÓPIO E GERADOR DE SINAIS

Introdução ao Sistema. Características

T.I. para o DealerSuite: Servidores Versão: 1.1

Configuração do Samba no Metasys (Modo Gráfico)

Instalando o MySQL Server 5.0

Versões CentOS 4.7 Openupload PHP 5.2 Postgresql 8.2. Requisitos Servidor HTTP PHP Base de dados(mysql, postgresql,arquivo de texto)

Hypertext Transfer Protocol

Hotspot com Ubuntu Server Bits

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

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

Tutorial para Instalar e configurar o Xampp

GESP-EMPRESA COM CERTIFICADO DIGITAL A1

Servidor de Monitoramento

LABORATÓRIO DE INTERCONEXÃO DE REDES DE COMPUTADORES. SERVIÇOS ADICIONAIS: Conceituação, Instalação e Configuração

Lojamundi Tecnologia Sem Limites br

Envio de alertas por utilizando SMTP autenticado

ASPSOFT TECNOLOGIA (SIAE- SISTEMA INTEGRADO DE AUTOMAÇÃO ESCOLAR ) Site: -

4.0 SP2 ( ) maio P Xerox FreeFlow Core Express Guia de Instalação

1. Introdução. 2. Objetivo. 3. Procedimento

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO DA APPLIANCE VIRTUAL GRAVITYZONE

COORDENAÇÃO DE TECNOLOGIA (COTEC) MAIO/2010

SMA PROCEDIMENTO DE ACESSO AO SISTEMA SMA PROCEDIMENTO DE ACESSO AO SISTEMA

Introdução ao Windows Server 2008

Manual Sistema de Dimensionamento Cabos e Energia SDF

Esse é um post para mostrar os comandos básicos para administrar containers em docker.

Instalação do MySQL e da ferramenta MySQL- Front

Transcrição:

Serviço web Apache fevereiro/2017 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 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. 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.92:3128 Onde: RA: é o RA do aluno; SENHA: é a senha de acesso do aluno; 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: shell# echo $http_proxy http://ra:senha@186.251.39.92: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. senha: Para testar o acesso em linha de comando, com o wget, precisa passar também usuário e 9 Senhas criptografadas, naturalmente. Serviço web Apache www.jairo.pro.br 12/22

shell# 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 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 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]. Convém reparar também que nesse arquivo tem uma include para sites-available/default, Serviço web Apache www.jairo.pro.br 15/22

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.92:3128 Onde: RA: é o RA do aluno; SENHA: é a senha de acesso do aluno; 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 www.jairo.pro.br 18/22

shell# echo $http_proxy http://ra:senha@186.251.39.92: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

B6 Configurar diretório protegido por senha No exemplo acima [diretório protegido por IP], o conteúdo do diretório somente pode ser acessado pelos clientes com determinado IP [ou rede]. Porém, existem casos em que o cliente está navegando com qualquer IP na internet e também precisa ter acesso a esse conteúdo na intranet. Nesse caso, a solução é colocar esse conteúdo num diretório protegido por senha, ou seja, quando o cliente tentar entrar naquele diretório, será solicitado um usuário e senha. Aproveitando o arquivo sites-available.default [que veio no arquivo apache2.tar.gz], observar que também foi incluída a seguinte diretiva: ========== arquivo sites-available.default ====================================== #Diretorio protegido por senha <Directory "/var/www/autenticado"> AllowOverride FileInfo AuthConfig Limit Order allow,deny Allow from all </Directory> ======================================================================= que configura o diretório "/var/www/autenticado" como protegido por senha. É preciso criar o diretório autenticado: shell# mkdir /var/www/autenticado Nesse diretório, precisa haver o arquivo.htaccess com o seguinte conteúdo: ========== arquivo /var/www/autenticado/.htaccess ============================== AuthUserFile /var/www/autenticado/.htpasswd AuthGroupFile /dev/null AuthName "Acesso Restrito" AuthType Basic require valid-user ======================================================================= Copiar o arquivo "ponto.htaccess" para "/var/www/autenticado/.htaccess": shell# cp ponto.htaccess /var/www/autenticado/.htaccess Serviço web Apache www.jairo.pro.br 21/22

No arquivo.htpasswd é que vão os usuários e senhas 10 usados nessa autenticação. Para criar o arquivo.htpasswd e incluir um usuário e senha, usar o comando htpasswd: shell# htpasswd -c /var/www/autenticado/.htpasswd aluno New password: Re-type new password: Adding password for user aluno onde a opção -c é para criar um arquivo novo. Se omitir essa opção, irá manter todos os usuários que existem no arquivo. IMPORTANTE: Se o arquivo.htpasswd já existe e for usado -c, todo o conteúdo anterior desse arquivo será perdido. Mas se o arquivo.htpasswd já existe e não for usado -c, apenas altera a senha do usuário que já existe no arquivo ou, caso ainda não exista o usuário, será automaticamente incluído nesse arquivo. senha: Para testar o acesso em linha de comando, com o wget, precisa passar também usuário e shell# 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 um usuário e senha para esse acesso. 10 Senhas criptografadas, naturalmente. Serviço web Apache www.jairo.pro.br 22/22