Avancado

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Avancado as PDF for free.

More details

  • Words: 92,436
  • Pages: 265
Guia Foca GNU/Linux ------------------Gleydson Mazioli da Silva Vers�o 6.05 - segunda, 18 de mar�o de 2002 ------------------------------------------------------------------------------Resumo -----Este documento tem por objetivo ser uma refer�ncia ao aprendizado do usu�rio e um guia de consulta, opera��o e configura��o de sistemas Linux (e outros tipos de *ix). A �ltima vers�o deste guia pode ser encontrada na P�gina Oficial do Foca GNU/Linux (http://focalinux.cipsga.org.br). Novas vers�es s�o lan�adas com uma freq��ncia mensal e voc� pode receber avisos de lan�amentos preenchendo um formul�rio na p�gina Web. Nota de Copyright ----------------Copyleft (C) 1999-2002 - Gleydson Mazioli da Silva. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License". ------------------------------------------------------------------------------Conte�do -------1. 1.1. 1.2. 1.3. 1.3.1.

Introdu��o Considera��es sobre o n�vel Avan�ado Pr�-requisitos para a utiliza��o deste guia O Linux Algumas Caracter�sticas do Linux

2. 2.1. 2.2.

Explica��es B�sicas Monitorando os logs Curingas

3. 3.1. 3.2. 3.3. 3.3.1. 3.3.1.1.

Hardware Placa de expans�o Nomes de dispositivos Configura��o de Hardware IRQ - Requisi��o de Interrup��o Prioridade das Interrup��es

3.3.2. 3.3.2.1. 3.3.3. 3.4. 3.4.1. 3.4.2. 3.4.3. 3.4.4. 3.4.4.1. 3.5. 3.6. 3.7. 3.8. 3.9. 3.10. 3.11. 3.12. 3.12.1. 3.12.2. 3.12.3. 3.12.4. 3.13. 3.13.1. 4. 4.1. 4.2. 4.3. 4.3.1. 4.3.2. 4.3.3. 4.3.4. 4.4. 4.4.1. 4.4.2. 4.5. 4.5.1. 4.6. 4.6.1. 4.6.2. 4.6.2.1. 4.6.2.2. 4.6.2.3. 4.6.2.4. 4.6.3. 4.7. 4.7.1. 4.7.2. 4.7.2.1. 4.8. 4.8.1. 4.8.2. 4.8.3. 4.8.3.1. 4.8.3.2.

DMA - Acesso Direto a Mem�ria Conflitos de DMA I/O - Porta de Entrada/Sa�da Hardwares configur�veis por jumpers, dip-switches, jumperless e Plug-and-Play. Jumpers Dip-Switches Jumperless (sem jumper) Plug-and-Play Entendendo o arquivo de configura��o `isapnp.conf' Conflitos de hardware Barramento Placas on-board / off-board Hardwares espec�ficos ou "For Windows" Dispositivos espec�ficos para GNU/Linux Aterramento Descargas est�ticas Melhoria de performance Particionamento Spindles Fazendo ajustes finos de performance do disco Data de acesso a arquivos/diret�rios Perif�ricos SCSI Configurando uma SCSI ID e termina��o Rede O que � uma rede Protocolo de Rede Endere�o IP Classes de Rede IP Refer�ncia r�pida de m�scara de redes Para instalar uma m�quina usando o Linux em uma rede existente Endere�os reservados para uso em uma rede Privada Interface de rede A interface loopback Atribuindo um endere�o de rede a uma interface (ifconfig) Roteamento Configurando uma rota no Linux Resolvedor de nomes (DNS) O que � um nome? Arquivos de configura��o usados na resolu��o de nomes /etc/resolv.conf /etc/host.conf /etc/hosts /etc/networks Executando um servidor de nomes Servi�os de Rede Servi�os iniciados como Daemons de rede Servi�os iniciados atrav�s do inetd /etc/inetd.conf Seguran�a da Rede e controle de Acesso /etc/ftpusers /etc/securetty O mecanismo de controle de acessos tcpd /etc/hosts.allow /etc/hosts.deny

4.8.3.3. 4.8.3.4. 4.8.4. 4.9. 4.9.1. 4.9.2. 4.10. 5. 5.1. 5.2. 5.2.1. 5.2.1.1. 5.2.2. 5.3. 5.4. 5.4.1. 5.4.2. 5.5. 6. 6.1. 6.2. 6.3. 6.4. 6.4.1.

/etc/hosts.equiv e /etc/shosts.equiv Verificando a seguran�a do TCPD e a sintaxe dos arquivos Firewall Outros arquivos de configura��o relacionados com a rede /etc/services /etc/protocols Definindo diversos endere�os IP para a mesma interface de rede Arquivos e daemons de Log Formato do arquivo de log Daemons de log do sistema syslogd Arquivo de configura��o `syslog.conf' klogd logger Programas �teis para monitora��o e gerenciamento de arquivos de logs logcheck logrotate Configurando um servidor de logs

6.5. 6.6.

A distribui��o Debian GNU/Linux Como obter a Debian Programas de configura��o Arquivos de inicializa��o N�veis de Execu��o Entendendo o funcionamento dos n�veis de execu��o do sistema (runlevels) Bug tracking system Onde encontrar a Debian para Download?

7. 7.1. 7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8. 7.9.

Personaliza��o do Sistema Vari�veis de Ambientes Modificando o Idioma usado em seu sistema alias Arquivo `/etc/profile' Arquivo `.bash_profile' Arquivo `.bashrc' Arquivo `.hushlogin' Arquivo `/etc/environment' Diret�rio `/etc/skel'

8. 8.1. 8.2. 8.3. 8.4. 8.4.1. 8.5. 8.5.1. 8.5.2. 8.6. 8.6.1. 8.6.2. 8.6.3. 8.6.4.

Impress�o Portas de impressora Imprimindo diretamente para a porta de impressora Imprimindo via spool Impress�o em modo gr�fico Ghost Script Magic Filter Instala��o e configura��o do Magic Filter Outros detalhes t�cnicos sobre o Magic Filter Impress�o remota Dando permiss�o para impres�o remota via lpd/lprng Impress�o via rlpr Impress�o via printcap Gerenciando impress�o de m�quinas Windows

9. 9.1. 9.1.1. 9.1.2. 9.1.3. 9.1.4. 9.1.5. 9.1.6. 9.1.7. 9.1.8. 9.1.9. 9.1.10. 9.1.11. 9.1.12. 9.1.13. 9.1.14. 9.1.15. 9.1.16. 9.2. 9.2.1. 9.2.2. 9.2.3. 9.2.4. 9.2.5. 9.2.6. 9.2.7. 9.2.8. 9.2.9. 9.2.10. 9.2.11. 9.3. 9.3.1. 9.3.2. 9.3.3. 9.3.3.1. 9.3.3.2. 9.3.3.3. 9.3.4. 9.3.5. 9.3.6. 9.3.6.1. 9.3.6.2. 9.3.6.3. 9.4. 9.4.1. 9.4.2. 9.4.3. 9.4.3.1. 9.4.4. 9.4.4.1. 9.4.5. 9.5. 9.5.1. 9.5.1.1. 9.5.1.2. 9.6. 9.6.1.

Firewall iptables Introdu��o Vers�o Um resumo da hist�ria do iptables Caracter�sticas do firewall iptables Ficha t�cnica Requerimentos Arquivos de logs criados pelo iptables Instala��o Enviando Corre��es/Contribuindo com o projeto O que aconteceu com o `ipchains' e `ipfwadm'? Tipos de firewalls O que proteger? O que s�o regras? O que s�o chains? O que s�o tabelas? Habilitando o suporte ao iptables no kernel Ligando sua rede interna a Internet Manipulando chains Adicionando regras - A Listando regras - L Apagando uma regra - D Inserindo uma regra - I Substituindo uma regra - R Criando um novo chain - N Listando os nomes de todos os chains atuais Limpando as regras de um chain - F Apagando um chain criado pelo usu�rio - X Zerando contador de bytes dos chains - Z Especificando o policiamento padr�o de um chain - P Outras op��es do iptables Especificando um endere�o de origem/destino Especificando a interface de origem/destino Especificando um protocolo Especificando portas de origem/destino Especificando mensagens do protocolo ICMP Especificando pacotes syn Especificando fragmentos Especificando uma exce��o Especificando um alvo Alvo REJECT Especificando LOG como alvo Especificando RETURN como alvo A tabela nat (Network Address Translation) - fazendo nat Criando um novo chain na tabela NAT Fazendo IP masquerading (para os apressados) Fazendo SNAT Fazendo IP Masquerading Fazendo DNAT Redirecionamento de portas Monitorando conex�es feitas na tabela nat A tabela mangle Especificando o tipo de servi�o Especificando o TOS para tr�fego de sa�da Especificando o TOS para o tr�fego de entrada Outros m�dulos do iptables Conferindo de acordo com o estado da conex�o

9.6.2. 9.6.3. 9.6.4. 9.6.5. 9.6.6. 9.6.7. 9.6.8. 9.7. 9.7.1. 9.7.2. 9.7.3. 9.7.4.

9.8.3. 9.8.4.

Limitando o n�mero de vezes que a regra confere Prote��o contra ping da morte Prote��o contra syn flood Prote��o contra IP spoofing Especificando m�ltiplas portas de origem/destino Especificando o endere�o MAC da interface Conferindo com quem criou o pacote Caminho percorrido pelos pacotes nas tabelas e chains Ping de 192.168.1.1 para 192.168.1.1 Conex�o FTP de 192.168.1.1 para 192.168.1.1 Conex�o FTP de 192.168.1.1 para 192.168.1.4 Conex�o FTP de 200.217.29.67 para a m�quina ftp.debian.org.br Ping de 192.168.1.4 para 192.168.1.1 Conex�o FTP de 192.168.1.4 para 192.168.1.1 Conex�o FTP de 192.168.1.4 para ftp.debian.org.br Conex�o FTP de 200.198.129.162 para 200.217.29.167 Gr�fico geral da passagem dos pacotes Exemplos de configura��es do iptables Bloqueando conex�es de fora para sua m�quina Monitorando tentativa de conex�o de trojans em sua m�quina Conectando sua rede interna a Internet Um exemplo de firewall simples

10. 10.1. 10.2. 10.2.1. 10.2.2. 10.2.3. 10.2.4. 10.3. 10.3.1. 10.3.2. 10.3.3. 10.3.4. 10.3.5. 10.3.6. 10.4. 10.4.1. 10.4.2.

Gerenciamento de contas e cuidados para a prote��o de senhas Introdu��o Cria��o, monitora��o e seguran�a de contas Definindo valores padr�es de restri��o Senhas f�ceis de adivinhar e escolha de boas senhas Atualiza��o de senhas de m�ltiplas contas A senha do usu�rio root Tipos de ataques mais comuns para se conseguir uma senha. Dedu��o Engenharia Social Ataques por dicion�rio Brute Force Monitora��o de toques do teclado Login falso Melhorando a seguran�a das senhas armazenadas em seu sistema Shadow Passwords Senhas MD5

11. 11.1. 11.1.1. 11.1.2. 11.1.3. 11.1.4. 11.1.5. 11.1.6. 11.1.7. 11.1.8. 11.1.9.

Apache Introdu��o Vers�o Um resumo da Hist�ria do Apache Enviando Corre��es/Contribuindo com o projeto Caracter�sticas do Apache Ficha t�cnica Requerimentos Arquivos de log criados pelo Apache Instala��o Iniciando o servidor/reiniciando/recarregando a configura��o Op��es de linha de comando Configurando a porta padr�o do Apache Adicionando uma p�gina no Apache

9.7.5. 9.7.6. 9.7.7. 9.7.8. 9.7.9. 9.8. 9.8.1. 9.8.2.

11.1.10. 11.2. 11.3.

11.4. 11.5. 11.6. 11.7. 11.7.1. 11.7.2. 11.7.2.1. 11.7.2.2. 11.7.2.3. 11.7.3. 11.7.3.1. 11.7.4. 11.7.5. 11.7.6. 11.7.7. 11.8. 11.9. 11.10. 11.10.1. 11.10.2. 11.10.3. 11.10.4. 11.10.5. 11.10.6. 11.10.7. 11.10.8. 11.10.9. 11.10.10. 11.10.11. 11.10.12. 11.10.13. 11.10.14. 11.10.15. 11.11. 11.11.1. 11.11.2. 11.12. 11.12.1. 11.12.2. 11.12.3. 11.13. 11.13.1. 11.13.2. 11.13.3. 11.13.4. 11.13.5. 11.14. 11.14.1. 11.14.2. 11.14.3. 11.15.

Configurando as interfaces que o Apache atender� Especificando endere�os/portas adicionais (a diretiva _Listen_) Especificando op��es/permiss�es para as p�ginas Restri��es de Acesso Autoriza��o Autentica��o Criando um arquivo de Senhas Autentica��o atrav�s de usu�rios Autentica��o usando grupos Usando autoriza��o e autentica��o juntos Acesso diferenciado em uma mesma diretiva O arquivo `.htaccess' Usando a diretiva SetEnvIf com Allow e Deny A diretiva Diretiva Definindo documentos de erro personalizados M�dulos DSO Sistema de Log do Apache AgentLog ErrorLog CustomLog RefererLog RewriteLog RewriteLogLevel ScriptLog ScriptLogBuffer ScriptLogLength TransferLog LogFormat LogLevel Anonymous_LogEmail CookieLog Relat�rio gr�fico de acesso ao sistema Configurando o Apache como servidor proxy Controlando o acesso ao servidor proxy Redirecionamento de conex�es no Apache Virtual Hosts Virtual hosts baseados em IP Virtual hosts baseados em nome Seguran�a no uso de IP's em Virtual Hosts Uso de criptografia SSL Servidor apache com suporte a ssl Gerando um certificado digital Exemplo de configura��o do m�dulo mod-ssl Autorizando acesso somente a conex�es SSL Iniciando o servidor Web com suporte a SSL Exemplo comentado de um arquivo de configura��o do Apache httpd.conf srm.conf access.conf C�digos HTTP

12. 12.1. 12.1.1. 12.1.2. 12.1.3.

Servidor ident Introdu��o Vers�o Contribuindo Caracter�sticas

12.1.4. 12.1.5. 12.1.6. 12.1.7. 12.1.8. 12.1.9. 12.1.10. 12.1.11. 12.1.12. 13. 13.1. 13.1.1. 13.1.2. 13.1.3. 13.1.4. 13.1.5. 13.1.6. 13.1.7. 13.1.8. 13.2. 13.3. 13.4.

Ficha t�cnica Requerimentos de Hardware Arquivos de log criados pelo Ident Instala��o Instala��o via Inetd Usando tcpwrappers com oidentd Iniciando o servidor/reiniciando/recarregando a configura��o Op��es de linha de comando Exemplos Servidor telnet Introdu��o Vers�o Caracter�sticas Ficha t�cnica Requerimentos de Hardware Arquivos de log criados pelo servidor telnet Instala��o Iniciando o servidor/reiniciando/recarregando a configura��o Op��es de linha de comando Controle de acesso Recomenda��es Fazendo conex�es ao servidor telnet

14. 14.1. 14.1.1. 14.1.2. 14.1.3. 14.1.4. 14.1.5. 14.1.6. 14.1.7. 14.1.8. 14.1.9.

Servidor ssh Introdu��o Vers�o Hist�ria Contribuindo Caracter�sticas Ficha t�cnica Requerimentos de Hardware Arquivos de log criados pelo servidor ssh Instala��o do servidor openSSH Iniciando o servidor/reiniciando/recarregando a configura��o 14.1.10. Op��es de linha de comando 14.2. Usando aplicativos clientes 14.2.1. ssh 14.2.1.1. Redirecionamento de conex�es do X 14.2.1.2. Cliente ssh para Windows 14.2.2. scp 14.2.2.1. Cliente scp para Windows 14.2.3. sftp 14.3. Servidor ssh 14.3.1. sshd 14.3.2. Controle de acesso 14.3.3. Usando autentica��o RSA - chave p�blica/privada 14.3.4. Diferen�as nas vers�es do protocolo 14.3.5. Exemplo de `sshd_config' com explica��es das diretivas 15. 15.1. 15.1.1. 15.1.2. 15.1.3.

Servidor pop3 Introdu��o Vers�o Contribuindo Caracter�sticas

15.1.4. 15.1.5. 15.1.6. 15.1.7. 15.1.8. 15.1.9. 15.1.10. 15.1.11. 15.1.12. 15.1.13. 16. 16.1. 16.1.1. 16.1.2. 16.1.3. 16.1.4. 16.1.5. 16.1.6. 16.2. 16.2.1. 16.2.2. 16.2.3. 16.2.4. 16.2.5. 16.2.6. 16.3. 16.4. 16.5. 16.6. 16.7. 16.8. 16.9. 16.10. 16.11. 16.11.1. 16.11.2. 16.11.3. 16.11.4. 16.11.5. 16.12. 16.13. 16.14. 16.14.1. 16.14.2. 16.14.3. 16.14.4. 16.14.5. 17. 17.1. 17.2.

Ficha t�cnica Requerimentos de Hardware Arquivos de log criados pelo qpopper Instala��o Iniciando o servidor/reiniciando/recarregando a configura��o Testando o servidor pop3 Op��es de linha de comando Enviando boletins de mensagens Especificando quotas para as caixas de correio Restringindo acesso ao servidor pop3 Restri��es de recursos/servi�os Limitando recursos no `bash' Uso do comando readonly para exportar vari�veis Restri��es nos diret�rios de usu�rios e root Restri��es b�sicas do shell bash com bash -r/--restricted, rbash Finalizando consoles inativos Desabilitando o registro de comandos digitados Desabilitando servi�os de shell para usu�rios Limita��o de recursos usando PAM Descobrindo se um determinado programa tem suporte a PAM Definindo um policiamento padr�o restritivo Restringindo/Bloqueando o login Restri��es de servi�os PAM baseados em dia/hora Permitindo acesso a grupos extras Limita��o de recursos do shell Restri��es de acesso a programas/diret�rios/arquivos usando grupos Dando poderes de root para executar determinados programas Restringindo o comando `su' Restri��es baseadas em usu�rio/IP Desabilitando servi�os n�o usados no Inetd Evitando o uso de `hosts.equiv' e `.rhosts' Restringindo o uso do shutdown Restringindo o acesso ao sistema de arquivos /proc Limitando o uso de espa�o em disco (quotas) Instalando o sistema de quotas Editando quotas de usu�rios/grupos Verificando a quota dispon�vel ao usu�rio Verificando a quota de todos os usu�rios/grupos do sistema Avisando usu�rios sobre o estouro de quota Suporte a senhas ocultas Suporte a senhas md5 Restri��es no hardware do sistema BIOS do sistema Retirada da unidade de disquetes Placas de rede com eprom de boot Protegendo o LILO Disco r�gido Introdu��o ao uso de criptografia para transmiss�o/armazenamento de dados Introdu��o Sniffer

17.2.1. 17.3. 17.3.1. 17.3.2. 17.3.3. 17.3.4. 17.3.5. 17.3.6. 17.3.7. 17.4. 17.5. 17.5.1. 17.5.2. 17.5.3. 17.5.4. 17.5.5. 17.5.6. 17.5.7. 17.5.8. 17.5.9. 17.5.10. 17.5.11. 17.5.12. 17.5.13.

Detectando a presen�a de sniffers Alternativas seguras a servi�os sem criptografia http Transmiss�o segura de e-mails Servidor pop3 Transfer�ncia de arquivos login remoto Bate papo via IRC Transmiss�o de mensagens via ICQ Sistemas de arquivos criptogr�fico Usando pgp (`gpg')para criptografia de arquivos Instalando o PGP Criando um par de chaves p�blica/privada Encriptando dados Descriptando dados com o gpg Assinando arquivos Checando assinaturas Extraindo sua chave p�blica do chaveiro Adicionando chaves p�blicas ao seu chaveiro pessoal Listando chaves de seu chaveiro Apagando chaves de seu chaveiro Mudando sua FraseSenha Assinando uma chave digital Listando assinaturas digitais

18. 18.1. 18.2. 18.3. 18.4. 18.5. 18.6. 18.7.

Ap�ndice Sobre este guia Refer�ncias de aux�lio ao desenvolvimento do guia Onde encontrar a vers�o mais nova do guia? Colaboradores do Guia Marcas Registradas Futuras vers�es Chave P�blica PGP

------------------------------------------------------------------------------1. Introdu��o ------------Bem vindo ao guia _Foca GNU/Linux_. A vers�o que esta lendo agora cont�m o(s) n�vel(is) de aprendizado: * Avan�ado Entre o conte�do do guia, voc� encontrar�: * An�lise de logs do sistema GNU/Linux e aplica��o para a solu��o de problemas (Cap�tulo 5, `Arquivos e daemons de Log'). * Gerenciamento de contas de usu�rios, defini��o de periodo autom�tico para troca de senha peri�dica, politicas de seguran�a, etc (Cap�tulo 10, `Gerenciamento de contas e cuidados para a prote��o de senhas'). * Principais tipos de ataques para descoberta de senhas e alguns m�todos de como evita-las (Se��o 10.2.2, `Senhas f�ceis de adivinhar e escolha de boas senhas'). * Sistemas de prote��o de senhas do sistema (Se��o 10.4,

`Melhorando a seguran�a das senhas armazenadas em seu sistema'). * Criptografia e seguran�a na transmiss�o de dados, usando exemplos pr�ticos do uso de sniffers para entender o porque da uso de criptografia para transmiss�o segura de dados (Cap�tulo 17, `Introdu��o ao uso de criptografia para transmiss�o/armazenamento de dados'). * Uso de servi�os alternativos criptogr�ficos (Se��o 17.3, `Alternativas seguras a servi�os sem criptografia'). * Criptografia usando `gnupgp' (Se��o 17.5, `Usando pgp (`gpg')para criptografia de arquivos'). * Uso de sistema de arquivos criptogr�ficos para armazenamento de dados (Se��o 17.4, `Sistemas de arquivos criptogr�fico'). * Otimiza��o de performance na transfer�ncia de dados do disco r�gido atrav�s de particionamento e `hdparm', uso de spidles para cria��o de swap (Se��o 3.12, `Melhoria de performance'). * O que s�o descargas est�ticas e a import�ncia do aterramento da instala��o el�trica do computador (dirigido a usu�rios dom�sticos e de pequenas instala��es) (Se��o 3.11, `Descargas est�ticas'). * Maiores considera��es a seguran�a de sistema e a problemas de seguran�a relativos a falhas de configura��o (distribuida entre os cap�tulos de daemons e servidores). * Montagem de um servidor Web usando o `Apache' (Cap�tulo 11, `Apache'). * Montagem de um firewall para prote��o do sistema (filtragem de pacotes) usando o `iptables', redirecionamento de pacotes, nat, masquerading, balanceamento de carga, marca��o de pacotes, logging (Cap�tulo 9, `Firewall iptables'). * Servidor de acesso para permitir o acesso a dist�ncia ao seu computador usando o `telnetd' (Cap�tulo 13, `Servidor telnet'). * Servidor de acesso para permitir o acesso a dist�ncia a seu computador com criptografia usando o `ssh' (Cap�tulo 14, `Servidor ssh'). * Servidor de identifica��o usando o `oidentd' (Cap�tulo 12, `Servidor ident'). * Montagem de um servidor pop3 para que suas esta��es de rede possam acessar o email na m�quina servidor `Linux' usando programas como `Outlook', `Communicator', `Mutt', `sylpheed' e outros que utilizem o protocolo `pop3' (Cap�tulo 15, `Servidor pop3'). * Restri��es de acesso a instala��o do computador, acesso a grupos do sistema, restri��es de login usando _PAM_ (Cap�tulo 16, `Restri��es de recursos/servi�os'). * Restri��es de espa�o usado em disco por usu�rios/grupos usando o

sistema de quotas (Se��o 16.11, `Limitando o uso de espa�o em disco (quotas)'). * Uso de grupos dos sistema para restri��es de acesso (Se��o 16.3, `Restri��es de acesso a programas/diret�rios/arquivos usando grupos'). * Restri��es de acesso via hardware: bios, disquete, placa com boot via rede, LILO, disco r�gido (Se��o 16.4, `Dando poderes de root para executar determinados programas'). * Manipula��es de vari�veis no bash (, , , , , , etc). * Montagem de shell b�sico restrito (Se��o 16.1.3, `Restri��es b�sicas do shell bash com bash -r/--restricted, rbash'). * Uso do `sudo' para dar privil�gio de execu��o de programas como root a determinados usu�rios (Se��o 16.4, `Dando poderes de root para executar determinados programas'). Para melhor organiza��o, dividi o guia em 3 vers�es: _Iniciante_, _Intermedi�rio_ e _Avan�ado_. Sendo que a vers�o _Iniciante_ � voltada para o usu�rio que n�o tem `nenhuma' experi�ncia no `GNU/Linux'. A �ltima vers�o deste guia pode ser encontrada em: Foca GNU/Linux HomePage (http://focalinux.cipsga.org.br). Caso tiver alguma sugest�o, corre��o, cr�tica para a melhoria deste guia, envie um e-mail para . O _Foca GNU/Linux_ � atualizado freq�entemente, por este motivo recomendo que preencha a ficha do aviso de atualiza��es na p�gina web em Foca GNU/Linux HomePage (http://focalinux.cipsga.org.br) no fim da p�gina principal. Ap�s preencher a ficha do aviso de atualiza��es, voc� receber� um e-mail sobre o lan�amento de novas vers�es do guia e o que foi modificado, desta forma voc� poder� decidir em copia-la caso a nova vers�o contenha modifica��es que considera importantes. 1.1. Considera��es sobre o n�vel Avan�ado ----------------------------------------Este guia foi compilado incluindo o n�vel _Avan�ado_ do guia FOCA GNU/Linux, ele n�o tem a inten��o de oferecer detalhes completos sobre a configura��o de servi�os, servidores, aplicativos, nem garantia que ele atender� a determinada finalidade espec�fica do usu�rio (principalmente de uma rede, que depende de uma perfeita compreensao para adapta��o de acordo com os requisitos de uma instala��o local). Seu foco principal � a instala��o do servi�o, considera��es voltadas a seguran�a, e exemplos de configura��o e seu funcionamento. Com rela��o a cap�tulos sobre servidores, � importante observar qual vers�o � documentada no guia e se confere com a instalada em seu sistema, a fim de que tudo funcione corretamente. Entretanto, na maioria dos casos, as explica��es relacionadas a uma vers�o de um programa s�o inteiramente v�lidas em uma nova vers�o.

1.2. Pr�-requisitos para a utiliza��o deste guia -----------------------------------------------� assumido que voc� ja tenha experi�ncia na configura��o de sistemas `Linux', conhe�a boa parte dos comandos e sua utiliza��o, tenha no��es de rede e saiba como procurar documenta��o para complementar o que vem aprendendo. Enfim, requer que se tiver interesse em se aprofundar em determinada �rea, que utilize os m�todos de busca de documenta��o sugeridos no guia para complementa��o do aprendizado. O guia n�o cont�m todos os materiais para que a pessoa se torne um `expert' no assunto, mas cont�m as refer�ncias para documenta��es mais espec�ficas sobre determinadas �reas do sistema. Este guia n�o cobre a instala��o do sistema. Para detalhes sobre instala��o, consulte a documenta��o que acompanha sua distribui��o `GNU/Linux'. 1.3. O Linux -----------O `Linux' � um sistema operacional criado em 1991 por _Linus Torvalds_ na universidade de Helsinki na Finl�ndia. � um sistema Operacional de c�digo aberto distribu�do gratuitamente pela Internet. Seu c�digo fonte � liberado como _Free Software_ (software livre) o aviso de copyright do kernel feito por Linus descreve detalhadamente isto e mesmo ele est� proibido de fazer a comercializa��o do sistema. Isto quer dizer que voc� n�o precisa pagar nada para usar o Linux, e n�o � crime fazer c�pias para instalar em outros computadores, n�s inclusive incentivamos voc� a fazer isto. Ser um sistema de c�digo aberto pode explicar a performance, estabilidade e velocidade em que novos recursos s�o adicionados ao sistema. Para rodar o `Linux' voc� precisa, no m�nimo, de um computador 386 SX com 2 MB de mem�ria e 40MB dispon�veis em seu disco r�gido para uma instala��o b�sica e funcional. O sistema segue o padr�o _POSIX_ que � o mesmo usado por sistemas _UNIX_ e suas variantes. Assim, aprendendo o `Linux' voc� n�o encontrar� muita dificuldade em operar um sistema do tipo `UNIX, FreeBSD, HPUX, SunOS,' etc., bastando apenas aprender alguns detalhes encontrados em cada sistema. O c�digo fonte aberto permite que qualquer pessoa veja como o sistema funciona (�til para aprendizado), corrija alguma problema ou fa�a alguma sugest�o sobre sua melhoria, esse � um dos motivos de seu r�pido crescimento, do aumento da compatibilidade de perif�ricos (como novas placas sendo suportadas logo ap�s seu lan�amento) e de sua estabilidade. Outro ponto em que ele se destaca � o suporte que oferece a placas, CD-Roms e outros tipos de dispositivos de �ltima gera��o e mais antigos (a maioria deles j� ultrapassados e sendo completamente suportados pelo sistema operacional). Este � um ponto forte para empresas que desejam manter seus micros em funcionamento e pretendem investir em avan�os tecnol�gicos com as m�quinas que possui.

Hoje o `Linux' � desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo sua contribui��o ou mantendo alguma parte do kernel gratuitamente. _Linus Torvalds_ ainda trabalha em seu desenvolvimento e tamb�m ajuda na coordena��o entre os desenvolvedores. O suporte ao sistema tamb�m se destaca como sendo o mais eficiente e r�pido do que qualquer programa comercial dispon�vel no mercado. Existem centenas de consultores especializados espalhados ao redor do mundo. Voc� pode se inscrever em uma lista de discuss�o e relatar sua d�vida ou alguma falha, e sua mensagem ser� vista por centenas de usu�rios na Internet e algum ir� te ajudar ou avisar� as pessoas respons�veis sobre a falha encontrada para devida corre��o. 1.3.1. Algumas Caracter�sticas do Linux --------------------------------------* � de gra�a e desenvolvido voluntariamente por programadores experientes, hackers, e contribuidores espalhados ao redor do mundo que tem como objetivo a contribui��o para a melhoria e crescimento deste sistema operacional. Muitos deles estavam cansados do excesso de propaganda (Marketing) e baixa qualidade de sistemas comerciais existentes * Convivem sem nenhum tipo de conflito com outros sistemas operacionais (com o `DOS', `Windows', `OS/2') no mesmo computador. * Multitarefa real * Multiusu�rio * Suporte a nomes extensos de arquivos e diret�rios (255 caracteres) * Conectividade com outros tipos de plataformas como _Apple, Sun, Macintosh, Sparc, Alpha, PowerPc, ARM, Unix, Windows, DOS, etc_. * Prote��o entre processos executados na mem�ria RAM * Suporte ha mais de 63 terminais virtuais (consoles) * Modulariza��o - O `GNU/Linux' somente carrega para a mem�ria o que � usado durante o processamento, liberando totalmente a mem�ria assim que o programa/dispositivo � finalizado * Devido a modulariza��o, os drivers dos perif�ricos e recursos do sistema podem ser carregados e removidos completamente da mem�ria RAM a qualquer momento. Os drivers (m�dulos) ocupam pouco espa�o quando carregados na mem�ria RAM (cerca de 6Kb para a Placa de rede NE 2000, por exemplo) * N�o h� a necessidade de se reiniciar o sistema ap�s a modificar a configura��o de qualquer perif�rico ou par�metros de rede. Somente � necess�rio reiniciar o sistema no caso de uma instala��o interna de um novo perif�rico, falha em algum hardware (queima do processador, placa m�e, etc.). * N�o precisa de um processador potente para funcionar. O sistema roda bem em computadores 386sx 25 com 4MB de mem�ria RAM (sem rodar o sistema gr�fico X, que � recomendado 8MB de RAM). J� pensou no seu desempenho em um 486 ou Pentium ;-) * O crescimento e novas vers�es do sistema n�o provocam lentid�o, pelo contr�rio, a cada nova vers�o os desenvolvedores procuram buscar maior compatibilidade, acrescentar recursos �teis e melhor desempenho do sistema (como o que aconteceu na passagem do kernel 2.0.x para 2.2.x). * N�o � requerida uma licen�a para seu uso. O `GNU/Linux' � licenciado de acordo com os termos da GNU.

* Acessa sem problemas discos formatados pelo `DOS, Windows, Novell, OS/2, NTFS, SunOS, Amiga, Atari, Mac,' etc. * Utiliza permiss�es de acesso a arquivos, diret�rios e programas em execu��o na mem�ria RAM. * N�O EXISTEM VIRUS NO LINUX! Em 9 anos de exist�ncia, nunca foi registrado NENHUM tipo de v�rus neste sistema. Isto tudo devido a grande seguran�a oferecida pelas permiss�es de acesso do sistema que funcionam inclusive durante a execu��o de programas. * Rede TCP/IP mais r�pida que no Windows e tem sua pilha constantemente melhorada. O `GNU/Linux' tem suporte nativo a redes TCP/IP e n�o depende de uma camada intermedi�ria como o Winsock. Em acessos via modem a Internet, a velocidade de transmiss�o � 10% maior. Jogadores do `Quake' ou qualquer outro tipo de jogo via Internet preferem o `GNU/Linux' por causa da maior velocidade do Jogo em rede. � f�cil rodar um servidor `Quake' em seu computador e assim jogar contra v�rios advers�rios via Internet. * Roda aplica��es _DOS_ atrav�s do `DOSEMU'. Para se ter uma id�ia, � poss�vel dar o boot em um sistema _DOS_ qualquer dentro dele e ao mesmo tempo usar a multitarefa deste sistema. * Roda aplica��es _Windows_ atrav�s do `WINE'. * Suporte a dispositivos infravermelho. * Suporte a rede via r�dio amador. * Suporte a dispositivos Plug-and-Play. * Suporte a dispositivos USB. * V�rios tipos de firewalls de alta qualidade e com grande poder de seguran�a de gra�a. * Roteamento est�tico e din�mico de pacotes. * Ponte entre Redes. * Proxy Tradicional e Transparente. * Possui recursos para atender a mais de um endere�o IP na mesma placa de rede, sendo muito �til para situa��es de manuten��o em servidores de redes ou para a emula��o de "mais computadores" virtualmente. O servidor WEB e FTP podem estar localizados no mesmo computador, mas o usu�rio que se conecta tem a impress�o que a rede possui servidores diferentes. * O sistema de arquivos usado pelo `GNU/Linux' (`Ext2') organiza os arquivos de forma inteligente evitando a fragmenta��o e fazendo-o um poderoso sistema para aplica��es multi-usu�rias exigentes e grava��es intensivas. * Permite a montagem de um servidor Web, E-mail, News, etc. com um baixo custo e alta performance. O melhor servidor Web do mercado, o `Apache', � distribu�do gratuitamente junto com o Linux. O mesmo acontece com o `Sendmail'. * Por ser um sistema operacional de c�digo aberto, voc� pode ver o que o c�digo fonte (o que foi digitado pelo programador) faz e adapta-lo as suas necessidades ou de sua empresa. Esta caracter�stica � uma seguran�a a mais para empresas s�rias e outros que n�o querem ter seus dados roubados (voc� n�o sabe o que um sistema sem c�digo fonte faz na realidade enquanto esta processando o programa). * Suporte a diversos dispositivos e perif�ricos dispon�veis no mercado, tanto os novos como obsoletos. * Pode ser executado em 10 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc.). * Consultores t�cnicos especializados no suporte ao sistema espalhados por todo o mundo.

* Entre muitas outras caracter�sticas que voc� descobrir� durante o uso do sistema. TODOS OS ITENS DESCRITOS ACIMA S�O VERDADEIROS E TESTADOS PARA QUE TIVESSE PLENA CERTEZA DE SEU FUNCIONAMENTO. ------------------------------------------------------------------------------2. Explica��es B�sicas ---------------------Este cap�tulo traz explica��es sobre os principais componentes existentes no computador e do sistema operacional. 2.1. Monitorando os logs -----------------------Os arquivos de logs residem acontecem com o kernel, com s�o muito importantes tanto sistema como para ajudar na

em `/var/log' e registram tudo o que os daemons e utilit�rios do sistema. Eles para monitorar o que acontece com o seu solu��o de problemas diversos.

Acostume-se a olhar constantemente os arquivos de log em seu sistema, isto pode ser importante para encontrar poss�veis falhas de seguran�a, tentativa de acesso ao sistema e, principalmente, solucionar problemas (principalmente os mais complicados). Leia Cap�tulo 5, `Arquivos e daemons de Log' para mais detalhes. 2.2. Curingas ------------Curingas (ou refer�ncia global) � um recurso usado para especificar um ou mais arquivos ou diret�rios do sistema de uma s� vez. Este � um recurso permite que voc� fa�a a filtragem do que ser� listado, copiado, apagado, etc. S�o usados 3 tipos de curingas no `GNU/Linux': * "*" - Faz refer�ncia a um nome completo/restante de um arquivo/diret�rio. * "?"

- Faz refer�ncia a uma letra naquela posi��o.

* `[padr�o]' - Faz refer�ncia a um padr�o contido em um arquivo. Padr�o pode ser: * `[a-z][1-0]' - Faz refer�ncia a caracteres de `a' at� `z' ou de `1' at� `10'. * `[a,z][1,0]' - Faz a refer�ncia aos caracteres `a' e `z' ou `1' e `10' naquela posi��o. * `[a-z,1,0]' - Faz refer�ncia aos caracteres de `a' at� `z' e `1' e `10' naquela posi��o. A procura de caracteres � "Case Sensitive" assim se voc� deseja que sejam localizados todos os caracteres alfab�ticos voc� deve usar `[a-zA-Z]'. Caso a express�o seja seguida de um `^', faz refer�ncia a qualquer caracter exceto o da express�o. Por exemplo `[^abc]'

faz refer�ncia a qualquer caracter exceto `a', `b' e `c'. Lembrando que os 3 tipos de curingas ("*", "?" e "[]") podem ser usados juntos. Para entender melhor vamos a pr�tica: Vamos dizer que tenha 5 arquivo no diret�rio `/usr/teste': `teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new'. Caso deseje listar _todos_ os arquivos do diret�rio `/usr/teste' voc� pode usar o curinga "*" para especificar todos os arquivos do diret�rio: `cd /usr/teste' e `ls *' ou `ls /usr/teste/*'. N�o tem muito sentido usar o comando `ls' com "*" porque todos os arquivos ser�o listados se o `ls' for usado sem nenhum Curinga. Agora para listar todos os arquivos `teste1.txt, teste2.txt, teste3.txt' com excess�o de `teste4.new', `teste5.new', podemos usar inicialmente 3 m�todos: 1. 2.

3.

Usando o comando `ls *.txt' que pega todos os arquivos que come�am com qualquer nome e terminam com `.txt'. Usando o comando `ls teste?.txt', que pega todos os arquivos que come�am com o nome `teste', tenham qualquer caracter no lugar do curinga `?' e terminem com `.txt'. Com o exemplo acima `teste*.txt' tamb�m faria a mesma coisa, mas se tamb�m tiv�ssemos um arquivo chamado `teste10.txt' este tamb�m seria listado. Usando o comando `ls teste[1-3].txt', que pega todos os arquivos que come�am com o nome `teste', tenham qualquer caracter entre o n�mero 1-3 no lugar da 6a letra e terminem com `.txt'. Neste caso se obt�m uma filtragem mais exata, pois o curinga _?_ especifica qualquer caracter naquela posi��o e [] especifica n�meros, letras ou intervalo que ser� usado.

Agora para listar somente `teste4.new' e `teste5.new' podemos usar os seguintes m�todos: 1. `ls *.new' que lista todos os arquivos que terminam com `.new' 2. `ls teste?.new' que lista todos os arquivos que come�am com `teste', contenham qualquer caracter na posi��o do curinga _?_ e terminem com `.new'. 3. `ls teste[4,5].*' que lista todos os arquivos que come�am com `teste' contenham n�meros de 4 e 5 naquela posi��o e terminem com qualquer extens�o. Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma s� vez. O uso de curingas ser� �til ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema. Alias esta � uma caracter�stica do `GNU/Linux': permitir que a mesma coisa possa ser feita com liberdade de v�rias maneiras diferentes. ------------------------------------------------------------------------------3. Hardware -----------

Hardware � tudo que diz respeito a parte f�sica do computador. Nesta se��o ser�o abordados assuntos relacionados com a configura��o de hardwares, escolha de bons hardwares, dispositivos for Windows, etc. 3.1. Placa de expans�o ---------------------� um circuito eletr�nico encaixado na placa m�e que tem por objetivo adicionar novas funcionalidades ao computador. Esta placa pode ser uma: * `placa de som' - para fazer o computador emitir sons, m�sicas, ligar um joystick, etc. * `fax-modem' - para enviar/receber fax, conectar-se a internet, BBS, acesso remoto, bina, etc. * `rede' - para permitir a comunica��o com outros computadores em uma rede interna * `controladora de perif�ricos' - Para ligar discos r�gidos, unidades de disquete, impressora, mouse, joystick, etc. * `SCSI' - Para ligar unidades de disco r�gidos e perif�ricos de alto desempenho. * `Controladora de Scanner' - Para ligar um Scanner externo ao micro computador. O encaixe da placa m�e que recebe as placas de expans�o s�o chamados de _Slots_. 3.2. Nomes de dispositivos -------------------------Seria terr�vel se ao configurar CADA programa que utilize o mouse ou o modem precis�ssemos nos se referir a ele pela IRQ, I/O, etc... para evitar isso s�o usados os _nomes de dispositivos_. Os _nomes de dispositivos_ no sistema `GNU/Linux' s�o acessados atrav�s do diret�rio `/dev'. Ap�s configurar corretamente o modem, com sua porta I/O 0x2F8 e IRQ 3, ele � identificado automaticamente por `/dev/ttyS1' (equivalente a `COM2' no `DOS'). Daqui para frente basta se referir a `/dev/ttyS1' para fazer alguma coisa com o modem. Voc� tamb�m pode fazer um link de `/dev/ttyS1' para um arquivo chamado `/dev/modem' usando: `ln -s /dev/ttyS1 /dev/modem', fa�a a configura��o dos seus programas usando `/dev/modem' ao inv�s de `/dev/ttyS1' e se precisar reconfigurar o seu modem e a porta serial mudar para `/dev/ttyS3', ser� necess�rio somente apagar o link `/dev/modem' antigo e criar um novo apontando para a porta serial `/dev/ttyS0'. N�o ser� necess�rio reconfigurar os programas que usam o modem pois eles est�o usando `/dev/modem' que est� apontando para a localiza��o

correta.

Isto � muito �til para um bom gerenciamento do sistema.

Abaixo uma tabela com o nome do dispositivo no `GNU/Linux', portas I/O, IRQ, DMA e nome do dispositivo no `DOS' (os nomes de dispositivos est�o localizados no diret�rio `/dev'): Dispos. Linux ttyS0 ttyS1 ttyS2 ttyS3 lp0 lp1 /dev/hda1 /dev/hda2 /dev/hdb1

Dispos. DOS

IRQ

DMA

I/O

COM1 COM2 COM3 COM4 LPT1 LPT2 C: D: * D: *

4 3 4 3 7 5 14 14 15

3(ECP) 3(ECP) -

0x3F8 0x2F8 0x3E8 0x2E8 0x378 0x278 0x1F0,0x3F6 0x1F0,0x3F6 0x170,0x376

* A designa��o de letras de unidade do `DOS' n�o � padr�o como no `GNU/Linux' e depende da exist�ncia de outras unidades f�sicas/l�gicas no computador. 3.3. Configura��o de Hardware ----------------------------A configura��o consiste em ajustar as op��es de funcionamento dos dispositivos (perif�ricos) para comunica��o com a placa m�e. Um sistema bem configurado consiste em cada dispositivo funcionando com suas portas I/O, IRQ, DMA bem definidas, n�o existindo conflitos com outros dispositivos. Isto tamb�m permitir� a adi��o de novos dispositivos ao sistema sem problemas. � importante conhecer bem a configura��o dos dispositivos do sistema para saber identificar e corrigir poss�veis problemas de conflitos e o que deve ser modificado, caso seja necess�rio. Os par�metros usados para configurar dispositivos de hardware s�o a _IRQ_, _DMA_ e _I/O_. Nem todo dispositivo usam estes tr�s par�metros, alguns apenas a _I/O_ e _IRQ_, outros apenas a _I/O_, etc. 3.3.1. IRQ - Requisi��o de Interrup��o -------------------------------------Existem dois tipos b�sicos de interrup��es: as usadas por dispositivos (para a comunica��o com a placa m�e) e programas (para obter a aten��o do processador). As _interrup��es de software_ s�o mais usadas por programas, incluindo o sistema operacional e _interrup��es de hardware_ mais usado por perif�ricos. Daqui para frente ser� explicado somente detalhes sobre interrup��es de hardware. Os antigos computadores 8086/8088 (XT) usavam somente `8' interrup��es de hardware operando a 8 bits. Com o surgimento do AT foram inclu�das 8 novas interrup��es, operando a 16 bits. Os computadores 286 e superiores tem `16' interrup��es de hardware numeradas de 0 a 15. Estas interrup��es oferecem ao dispositivo associado a capacidade de interromper o que o processador estiver fazendo, pedindo aten��o

imediata. As interrup��es do sistema podem ser visualizadas no kernel com o comando `cat /proc/interrupts'. Abaixo um resumo do uso mais comum das 16 interrup��es de hardware: 0

Timer do Sistema

- Fixa

01

Teclado - Fixa

02

Controlador de Interrup��o Program�vel - Fixa. Esta interrup��o � usada como ponte para a IRQ 9 e vem dos antigos processadores 8086/8088 que somente tinham 8 IRQs. Assim, pera tornar processadores 8088 e 80286 comunic�veis, a IRQ 2 � usada como um redirecionador quando se utiliza uma interrup��o acima da 8.

03

Normalmente usado por /dev/ttyS1 mas seu uso depende dos dispositivos instalados em seu sistema (como fax-modem, placas de rede 8 bits, etc).

04

Normalmente usado por /dev/ttyS0 e quase sempre usada pelo mouse serial a n�o ser que um mouse PS2 esteja instalado no sistema.

05

Normalmente a segunda porta paralela. Muitos micros n�o tem a segunda porta paralela, assim � comum encontrar placas de som e outros dispositivos usando esta IRQ.

06

Controlador de Disquete - Esta interrup��o pode ser compartilhada com placas aceleradoras de disquete usadas em tapes (unidades de fita).

07

Primeira porta de impressora. Pessoas tiveram sucesso compartilhando esta porta de impressora com a segunda porta de impressora. Muitas impressoras n�o usam IRQs.

08

Rel�gio em tempo real do CMOS - N�o pode ser usado por nenhum outro dispositivo.

09

Esta � uma ponte para IRQ2 e deve ser a �ltima IRQ a ser utilizada. No entanto pode ser usada por dispositivos.

10

Interrup��o livre para dispositivos

11

Interrup��o livre para dispositivos

12

Interrup��o normalmente livre para dispositivos. O mouse PS/2, quando presente, utiliza esta interrup��o.

13

Processador de dados num�ricos - N�o pode ser usada ou compartilhada

14

Esta interrup��o � usada pela primeira controladora de discos r�gidos e n�o pode ser compartilhada.

15

Esta � a interrup��o usada pela segunda controladora de discos e n�o pode ser compartilhada. Pode ser usada caso a segunda controladora esteja desativada. Dispositivos ISA, VESA, EISA, SCSI n�o permitem o compartilhamento de

uma mesma IRQ, talvez isto ainda seja poss�vel caso n�o haja outras op��es dispon�veis e/ou os dois dispositivos n�o acessem a IRQ ao mesmo tempo, mas isto � uma solu��o prec�ria. Conflitos de IRQ ocorrem quando dois dispositivos disputam uma mesma IRQ, e normalmente ocasionam a parada ou mal funcionamento de um dispositivo e/ou de todo o sistema. Para resolver um conflito de IRQs, deve-se conhecer quais IRQs est�o sendo usadas por quais dispositivos (usando `cat /proc/interrupts') e configurar as interrup��es de forma que uma n�o entre em conflito com outra. Isto normalmente � feito atrav�s dos jumpers de placas ou atrav�s de software (no caso de dispositivos jumperless ou plug-and-play). Dispositivos PCI s�o projetados para permitir o compartilhamento de uma mesma IRQ pois as manipulam de forma diferente. Se for necess�rio usar uma interrup��o normal, o chipset (ou BIOS) mapear� a interrup��o para uma interrup��o normal do sistema (normalmente usando alguma interrup��o entre a IRQ 9 e IRQ 12). 3.3.1.1. Prioridade das Interrup��es -----------------------------------Cada IRQ no sistema tem um n�mero que identifica a prioridade que ser� atendida pelo processador. Nos antigos sistemas XT as prioridades eram identificadas em seq��ncia de acordo com as interrup��es existentes: IRQ 0 1 2 3 4 5 6 7 8 PRI 1 2 3 4 5 6 7 8 9 Com o surgimento do barramento AT (16 bits), as interrup��es passaram a ser identificadas da seguinte forma: IRQ 0 PRI 1

1 2

2 3

(9 4

10 5

11 6

12 7

13 8

14 9

15) 3 4 5 6 7 8 10 11 12 13 14 15 16

Note que a prioridade segue em seq��ncia atrav�s da `ponte' da IRQ 2 para IRQ 9. Os dispositivos com prioridade mais baixa s�o atendidos primeiro, mas � uma diferen�a de desempenho praticamente impercept�vel de ser notada nos sistemas atuais. 3.3.2. DMA - Acesso Direto a Mem�ria -----------------------------------A _DMA_ � usada para permitir a transfer�ncia de dados entre dispositivos I/O e a mem�ria sem precisar do processador faze-lo. Ele livra esta carga do processador e resulta em uma r�pida transfer�ncia de dados. O PC padr�o tem dois controladores de DMA. O primeiro controla os canais `0, 1, 2, 3' e o segundo os canais `4, 5, 6, 7,' assim temos `8' canais. No entanto, o canal `4' � perdido porque � usado pelo _controlador de acesso direto a mem�ria_. Os canais 0-3 s�o chamados de canais baixos porque podem somente mover um byte (_8 bits_) por transfer�ncia enquanto canais altos movem 2 bytes (_16 bits_) por transfer�ncia. Os dados movidos usando a DMA _n�o_ s�o movidos atrav�s do controlador

de DMA. Isto oferece uma limita��o porque a DMA somente podem mover dados entre os dispositivos (portas I/O) e a mem�ria. N�o � poss�vel mover dados entre as portas ou entre a mem�ria. Existem dois controladores de DMA nos computadores AT e superiores. Ao contr�rio do que acontece com os dois controladores de IRQ, o primeiro controlador � ligado ao segundo e n�o o segundo ao primeiro. Os canais de DMA altos (5 ao 7) somente podem ser acessados por dispositivos de 16 bits (aqueles que utilizam a segunda parte do slot AT). Como resultado temos 8 canais de DMA, de 0 a 7, sendo que a DMA 4 � usada como liga��o entre eles. Os canais de DMA em uso no sistema podem ser visualizados com `cat /proc/dma'. Abaixo uma listagem de uso mais comum dos canais de DMA. DMA 0 1

Barram. 8/16 bits

2

8/16 bits

3

8/6 bits

4 5

16 bits

6

16 bits

7

16 bits

Uso Usada pelo circuito de refresh da mem�ria DRAM Normalmente usado por placas de som (canal 8 bits), porta paralela ECP, adaptadoras SCSI, placas de rede ou controladora de scanner. Normalmente usado pela controladora de disquetes ou controladoras de tapes. Usado pela porta paralela ECP, placa de som, controladoras de tapes, controladoras SCSI ou controladora de scanner antiga. Usada como ponte para a outra controladora de DMA (0-3) Normalmente usada pela placa de som (canal 16 bits), placas controladoras SCSI, placas de rede ou controladora de scanner. Placa de som (canal 16 bits), controladora de scanner ou placa de rede. Placa de som (canal 16 bits), controladora de scanner ou placa de rede.

Somente dispositivos ISA e derivados dele, como o EISA e VESA, usam os canais de DMA padr�o. Os atuais dispositivos de alta taxa de transfer�ncia (normalmente PCI) possuem seu pr�prio controlador de DMA embutido, muito mais r�pido do que a DMA padr�o. Este controlador de DMA � chamado de _Bus Mastering_ e muito usado nos discos r�gidos atuais e pode atingir taxas de 33,3MB/s (no modo 2) e 66MB/s (no modo 4 - requer um cabo IDE com aterramento para evitar interfer�ncias de ru�dos externos). 3.3.2.1. Conflitos de DMA ------------------------Um canal de DMA n�o pode ser compartilhado entre dispositivos. Ainda � poss�vel configurar dois dispositivos para usarem um mesmo canal de DMA, desde que ele n�o seja usado ao mesmo tempo. Isto acontece com Scanners paralelos que compartilham a mesma porta paralela com a impressora. Se voc� for uma pessoa que explora os recursos de multitarefa de seu Linux e seu desempenho, evite estes tipos de dispositivos, prefira aqueles que utilizam seus pr�prios recursos. Quando ocorre um conflito de DMA, os dados podem ser misturados e ocorre desde coisas estranhas at� o travamento total do sistema. Este tipo de conflito � dif�cil de se diagnosticar, a n�o ser que o t�cnico seja experiente o bastante e tenha desconfiado do que o problema se

trata... 3.3.3. I/O - Porta de Entrada/Sa�da ----------------------------------Cada dispositivo possui um endere�o de porta. O endere�o � uma localiza��o da mem�ria usada pelo computador para enviar dados ao dispositivo e onde o dispositivo envia dados ao computador. Ao contr�rios da IRQ e DMA, o dispositivo pode usar mais de uma porta de Entrada/Sa�da ou uma faixa de endere�os. Por exemplo, uma placa de som padr�o usa as portas 0x220, 0x330 e 0x388, respectivamente `audio digital', `midi' e `opl3'. As placas de rede normalmente transferem grandes quantidades de dados, assim ocupam uma faixa de endere�os. Minha NE2000, por exemplo, ocupa a faixa de endere�os 0x260 a 0x27F (0x260-0x27F). O tamanho da faixa de endere�os varia de acordo com o tipo de dispositivo. Os endere�os de _I/O_ em uso no sistema podem ser visualizados com o comando `cat /proc/ioports'. Endere�os das portas de entrada/sa�da n�o podem ser compartilhados 3.4. Hardwares configur�veis por jumpers, dip-switches, jumperless e Plug-and-Play. ---------------------------------------------------------------------------3.4.1. Jumpers -------------Hardwares configur�veis por _jumpers_ (pinos met�licos protegidos por uma capa pl�stica) tem sua configura��o alterada atrav�s da coloca��o, retirada ou mudan�a de posi��o. Hardwares configur�veis por jumpers s�o os preferidos por t�cnicos de inform�tica muito experientes. Estes hardwares possuem a caracter�stica de somente terem seus par�metros modificados atrav�s da mudan�a da posi��o dos jumpers da placa, desta forma se obt�m uma configura��o fixa (n�o podendo ser modificada por qualquer tipo de programa) e o dispositivo estar� sempre pronto para ser ativado ap�s a inicializa��o de qualquer sistema operacional. O �nico inconveniente � a necessidade de se retirar a placa do computador para se ter acesso aos jumpers de configura��o, a n�o ser que estejam manualmente acess�veis. Alguns hardwares configur�veis atrav�s de jumpers podem tamb�m funcionar como Plug-and-Play, atrav�s de um ajuste da posi��o dos jumpers para Plug-and-Play. Normalmente as placas controladoras SIDE, rede, bons modelos de fax-modens, placas de som, SCSI, etc., s�o configuradas por jumpers e possuem um mapa de configura��o gravado em seu circuito impresso que explica as posi��es de como os jumpers devem ser posicionados para operar na configura��o desejada. Normalmente � poss�vel escolher uma entre v�rios tipos de configura��o, mas � recomendado optar por valores padr�es (para detalhes veja Se��o 3.3.1, `IRQ - Requisi��o de Interrup��o', Se��o 3.3.2, `DMA - Acesso Direto a Mem�ria' e Se��o 3.3.3, `I/O - Porta de Entrada/Sa�da').

As disposi��o dos jumpers s�o normalmente definidas em _fechado/aberto_ e _multi-posi��o_. Na disposi��o _fechado/aberto_, o jumper pode ou n�o ser colocado, definindo a configura��o do dispositivo: ::|:: Esta disposi��o � facilmente encontrada na sele��o de IRQ e I/O em placas de fax-modem. Na disposi��o _multi-posi��o_, os pinos de encaixe s�o numerados de 1 a 3 (ou 1 a 4, 1 a 5, etc) e os pinos podem ou n�o ser colocados na placa e a posi��o que s�o colocados tamb�m influencia os valores escolhidos para o funcionamento do dispositivo (a posi��o 1-2 especificam um valor enquanto 2-3 especificam outro). A associa��o entre a posi��o dos jumpers e a configura��o desejada � feita consultando o mapa desenhado no circuito impresso da placa ou o manual de instru��es da placa. A configura��o de jumper atrav�s de multi-posi��o � normalmente usada em placas m�e para definir a _freq��ncia de opera��o do barramento_, a _freq��ncia de multiplica��o_ ou o _tipo do processador_. Se n�o possuir o mapa de configura��o de sua placa e/ou o manual de instru��es, ser� necess�rio fazer um mapeamento manual da placa, mas para isto voc� precisar� conhecer detalhadamente a configura��o de portas I/O, DMA, IRQ usadas na m�quina que ser� usada e anotar as diferen�as obtidas atrav�s da modifica��o da pinagem do dispositivo. Isto n�o � f�cil, mas t�cnicos de inform�tica experientes conhecer�o as `armadilhas' encontradas pelo mapeamento manual de placas e far�o o esquema de configura��o completo do dispositivo, obtendo um excelente manual de instru��es. Nesta hora a experi�ncia conta mais que o uso de programas de diagn�stico. Outra caracter�stica de hardwares configurados atrav�s de jumpers � que raramente apresentam problemas de funcionamento, a n�o ser que seus par�metros como IRQ, DMA, ou I/O estejam em conflitos com outro dispositivo, mas isso n�o � culpa do fabricante e nem mesmo do dispositivo... 3.4.2. Dip-Switches ------------------� a mesma coisa que os hardwares configur�veis por jumpers exceto que s�o usados _dip-switches_ no lugar de jumpers. O _dip-switches_ � um conjunto de chaves numeradas que podem ser colocadas para cima ou para baixo (como um disjuntor ou v�rios interruptores _LIGA/DESLIGA_ colocados um ao lado do outro) para se modificar a configura��o do dispositivo. Normalmente as chaves est�o acess�veis na parte met�lica da placa (onde os hardwares s�o conectados) para permitir a f�cil mudan�a de configura��o sem retirar a placa. � ainda comum encontrar isto em algumas placas de fax-modem. 3.4.3. Jumperless (sem jumper) ------------------------------

Os hardwares _jumperless_ n�o possuem jumpers e s�o configurados atrav�s de um programa que acompanha a pr�pria placa. Neste programa � escolhida a IRQ, DMA, I/O e a configura��o � salva na pr�pria placa ou restaurada ap�s cada inicializa��o por um programa carregado na mem�ria. Devido a configura��o via software, se obt�m uma configura��o fixa com muito mais facilidade do que via jumpers (por n�o haver a necessidade de se retirar a placa). A maioria das placas jumperless podem funcionar tamb�m como Plug-and-Play. Existem muitas placas de rede, fax-modem, scanner jumperless no mercado. 3.4.4. Plug-and-Play -------------------O _Plug-and-Play_ � um protocolo que l� os valores de opera��o dispon�veis para a placa e permitem que o usu�rio possa especificar facilmente qual ser� sua IRQ, DMA, I/O. A diferen�a em rela��o ao modo jumperless � que o mesmo programa de configura��o Plug-and-Play permite configurar todas as placas Plug-and-Play e a placa somente recebe os valores de IRQ, DMA e I/O ap�s ser ativada por este programa, normalmente o `isapnp' no Linux. Isto significa que a placa n�o tem nenhum par�metro de IRQ, DMA e I/O na partida do sistema. Desta forma, somente sistemas operacionais que possuem suporte ao Plug-and-Play (como o `GNU/Linux', `Windows') ou programas acionadores PnP (como o `ICU' para o `DOS') podem ativar e usar estes tipos de placas. Placas Plug-and-Play permitem muita flexibilidade de configura��o de dispositivos. O programa usado para a configura��o de placas Plug-and-Play no `GNU/Linux' � o `isapnp' e a configura��o de todas as placas Plug-and-Play s�o definidas no arquivo `/etc/isapnp.conf'. Veja a pr�xima se��o para entender como funciona o arquivo de configura��o `isapnp.conf' e assim poder ativar seu dispositivo Plug-and-Play. 3.4.4.1. Entendendo o arquivo de configura��o `isapnp.conf' ----------------------------------------------------------Segue abaixo um exemplo de arquivo `/etc/isapnp.conf' gerado atrav�s do `pnpdump' para a configura��o de uma placa de Som `Sound Blaster' com porta IDE embutida no `GNU/Linux'. O objetivo � configurar a placa Sound Blaster para operar na configura��o: * `IO=0x220' * `IRQ=5' * `DMA=1' * `DMA16=5' * `MIDI=0x330' * `OPL=0x388' * `IDE operando como placa controladora quarten�ria na porta 0x168/0x36e' - N�s queremos ligar um HD na placa de som, _SIM_ o

`GNU/Linux' permite isso, e ele ser� configurado como `/dev/hdg1' * `JOYSTICK na porta 0x220' - � bom para jogos e controle do `xmms' Observe que as linhas iniciando com `#' s�o apenas coment�rios e n�o ser�o interpretadas pelo `isapnp': # $Id: pnpdump.c,v 1.21 1999/12/09 22:28:33 fox Exp $ # Release isapnptools-1.21 (library isapnptools-1.21) # # Para detalhes do formato do arquivo de sa�da, veja a p�gina de # manual do isapnp.conf # # A se��o abaixo faz o isolamento da placa atrav�s da BIOS (normalmente n�o # precisa ser alterado). Com a configura��o abaixo, os dados sobre # dispositivos ser�o obtidos diretamente da BIOS. # Em placas m�e que n�o suportam Plug-and-Play, � necess�rio apenas o # par�metro (ISOLATE) para que o isapnp possa assumir totalmente o controle # para identifica��o dos dispositivos Plug-and-Play (READPORT 0x0273) (ISOLATE PRESERVE) (IDENTIFY *) (VERBOSITY 2) (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # ou WARNING # # # # # # # # # #

Card 1: (serial identifier fc 10 01 fb 5d 28 00 8c 0e) Vendor Id CTL0028, Serial Number 268565341, checksum 0xFC. Version 1.0, Vendor version 1.0 ANSI string -->Creative SB16 PnP<-Descomente os valores desejados abaixo, selecionando a configura��o requerida. Note que o valor padr�o equivale ao primeiro par�metro dispon�vel (Minimum) "(CONFIGURE" inicia um bloco de configura��o e finaliza com "(ACT Y)" Para ativar as configura��es selecionadas, basta descomentar a linha "#(ACT Y)" no final do bloco de configura��o.

(CONFIGURE CTL0028/268565341 (LD 0 # ANSI string -->Audio<-# Pela string acima, esta � a configura��o de Audio da Sound Blaster # Hora de m�ltiplas escolhas, escolha apenas uma! # Inicia fun��es dependentes, classificada por prioridade aceit�vel # # IRQ 5, 7 ou 10. (INT 0 (IRQ 5 (MODE +E))) # Foi especificada a IRQ 5 na configura��o acima # Primeiro canal DMA 0, 1 ou 3. # Somente DMA de 8 bits # Dispositivo l�gico n�o � um bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode (DMA 0 (CHANNEL 1)) # O valor da DMA 8 bits padr�o � 0 (o mais baixo), mas este n�o � o valor # que desejamos. Ajustamos o valor para 1. # # #

Next DMA channel 5, 6 or 7. 16 bit DMA only Logical device is a bus master

# DMA may not execute in count by byte mode # DMA may execute in count by word mode # DMA channel speed in compatible mode (DMA 1 (CHANNEL 5)) # O canal DMA 16 bits desejado para a Sound Blaster � o 5. Apenas # descomentamos a linha acima. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0220 # Maximum IO base address 0x0280 # IO base alignment 32 bytes # Number of IO addresses required: 16 (IO 0 (SIZE 16) (BASE 0x0220)) # Apenas descomentamos a linha. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0300 # Maximum IO base address 0x0330 # IO base alignment 48 bytes # Number of IO addresses required: 2 (IO 1 (SIZE 2) (BASE 0x0330)) # O valor padr�o � 0x0300 para a porta MIDI, mas n�s desejamos usar o # valor 0x0330. Descomentamos a linha e alteramos o valor da I/O. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0388 # Maximum IO base address 0x0388 # IO base alignment 1 bytes # Number of IO addresses required: 4 (IO 2 (SIZE 4) (BASE 0x0388)) # Apenas descomentamos a linha. 0x0388 � um valor padr�o para OPL # Fim de fun��es dependentes (NAME "CTL0028/268565341[0]{Audio }") (ACT Y) #Descomentamos para ativar este bloco de configura��o acima )) ######################################## # Logical device id CTL2011 # # Descomente os valores desejados abaixo, selecionando a configura��o requerida. # Note que o valor padr�o equivale ao primeiro par�metro dispon�vel (Minimum) # "(CONFIGURE" inicia um bloco de configura��o e finaliza com "(ACT Y)" # Para ativar as configura��es selecionadas, basta descomentar a linha # "#(ACT Y)" no final do bloco de configura��o. (CONFIGURE CTL0028/268565341 (LD 1 # Compatible device id PNP0600 # ANSI string -->IDE<-# Pela string acima sabemos que esta � a configura��o da IDE embutida na SB # Hora de m�ltiplas escolhas, escolha apenas uma! # Inicia fun��es dependentes: Prioridade Preferida # IRQ 10. (INT 0 (IRQ 10 (MODE +E))) # Descomentamos e aceitamos o valor acima, pois n�o entra em conflito com

# nenhum outro dispositivo do sistema. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0168 # Maximum IO base address 0x0168 (IO 0 (SIZE 8) (BASE 0x0168)) # Descomentamos e aceitamos o valor acima, pois n�o entra em conflito com # nenhum outro dispositivo do sistema. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x036e # Maximum IO base address 0x036e # IO base alignment 1 bytes # Number of IO addresses required: 2 (IO 1 (SIZE 2) (BASE 0x036e)) # Descomentamos e aceitamos o valor acima, pois n�o entra em conflito com # nenhum outro dispositivo do sistema. # End dependent functions (NAME "CTL0028/268565341[1]{IDE }") (ACT Y) # Descomentando esta linha, a placa IDE da Sound Blaster passar� a # funcionar como IDE quarten�ria (de acordo com os recursos passados) )) ####################################### # Logical device id CTL7001 # # Descomente os valores desejados abaixo, selecionando a configura��o requerida. # Note que o valor padr�o equivale ao primeiro par�metro dispon�vel (Minimum) # "(CONFIGURE" inicia um bloco de configura��o e finaliza com "(ACT Y)" # Para ativar as configura��es selecionadas, basta descomentar a linha # "#(ACT Y)" no final do bloco de configura��o. (CONFIGURE CTL0028/268565341 (LD 3 # Compatible device id PNPb02f # ANSI string -->Game<-# Pela string acima sabemos que � a Entrada para Joystick # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0200 # Maximum IO base address 0x0200 # IO base alignment 1 bytes # Number of IO addresses required: 8 (IO 0 (SIZE 8) (BASE 0x0200)) (NAME "CTL0028/268565341[3]{Jogo }") (ACT Y) # Sem muitos coment�rios... descomentamos a linha IO acima e # ativamos a configura��o (descomentando (ACT Y)). A diferen�a # � que especificamos o nome GAME para o recurso atrav�s da # linha (NAME "CTL0028/268565341[3]{Jogo }") # Este nome ser� mostrado quando o Joystick for ativado )) # Returns all cards to the 'Wait for Key' state (WAITFORKEY) Note ainda que o `isapnp.conf' gerado atrav�s do `pnpdump' cont�m v�rios tipos de prioridades de configura��o para o mesmo bloco de

configura��o e a prioridade que usamos acima foi `priority acceptable' para o bloco de audio da Sound Blaster e `priority preferred' para a porta IDE e Joystick. Os tipos de prioridades dispon�veis s�o: * `priority preferred' - Configura��o preferida para o funcionamento do hardware. � a recomendada pelo fabricante do hardware e tamb�m recomend�vel se voc� n�o tem muita experi�ncia na configura��o de hardwares, pois lista somente uma configura��o por recurso. Se a placa entrar em conflito com outras placas usando `priority preferred', tente a `priority acceptable'. * `priority acceptable' - Lista todas as configura��es aceitas pelo seu hardware. Ela � minha op��o preferida, pois permite analisar dinamicamente todas as configura��es permitidas pelo hardware e escolher qual � a mais adequada para funcionar sem problemas no sistema. * `priority functional' - Pode conter 1 ou mais blocos de `prioriade funcional' por hardware. Note que alguns recursos do hardware podem n�o estar dispon�vel neste tipo de prioridade. � �til para uso em casos de conflito, quando o hardware pode ser colocado em funcionamento de forma alternativa ou parcial. Ap�s a grava��o do arquivo `/etc/isapnp.conf', basta voc� digitar `isapnp /etc/isapnp.conf' para ativar a configura��o dos dispositivos listados com as configura��es que voc� escolheu. Se o `isapnp' lhe mostrar mensagens de conflito ou qualquer outro problema, verifique as configura��es do hardware e modifique, se necess�rio. Depois execute novamente o `/etc/isapnp.conf'. Para detalhes sobre outros par�metros n�o explicados aqui, veja a p�gina de manual do `isapnp.conf'. A maioria das distribui��es `GNU/Linux' configura os dispositivos Plug-and-Play existentes neste arquivo automaticamente na inicializa��o (como � o caso da `Debian' e a `Red Hat'). Se este n�o for o seu caso, coloque a linha `isapnp /etc/isapnp.conf' em um dos scripts de inicializa��o de sua distribui��o. 3.5. Conflitos de hardware -------------------------Ocorre quando um ou mais dispositivos usam a mesma _IRQ_, _I/O_ ou _DMA_. Um sistema com configura��es de hardware em conflito tem seu funcionamento inst�vel, travamentos constantes, mal funcionamento de um ou mais dispositivos e at� mesmo, em casos mais graves, a perda de dados. Sempre que poss�vel conhe�a e utilize os valores padr�es para a configura��o de perif�ricos, isto pode te livrar de conflitos com outros dispositivos e mal funcionamento do sistema. Alguns programas de diagn�stico ou de auto-detec��o podem n�o localizar seu dispositivo caso ele esteja usando um valor muito diferente do padr�o. Para resolver conflitos de hardware ser� necess�rio conhecer a configura��o de cada dispositivo em seu sistema. Os comandos `cat /proc/interrupts', `cat /proc/dma' e `cat /proc/ioports' podem ser �teis para se verificar as configura��es usadas.

Lembre-se que o barramento PCI permite o compartilhamento de IRQs entre placas PCI. 3.6. Barramento --------------O tipo de _slot_ varia de acordo com o barramento usado no sistema, que pode ser um(s) do(s) seguinte(s): ISA 8 Bits `Industry Standard Architecture' - � o padr�o mais antigo, encontrado em computadores PC/XT. ISA 16 Bits Evolu��o do padr�o ISA 8 Bits, possui um conector maior e permite a conex�o de placas de 8 bits. Sua taxa de transfer�ncia chega a 2MB/s. VESA `Video Electronics Standard Association' - � uma interface feita inicialmente para placas de v�deo r�pidas. O barramento VESA � basicamente um ISA com um encaixe extra no final. Sua taxa de transfer�ncia pode chegar a 132MB/s. EISA `Enhanced Industry Standard Architecture' - � um barramento mais encontrado em servidores. Tem a capacidade de bus mastering, que possibilita a comunica��o das placas sem a interfer�ncia da CPU. MCA `Micro Channel Architecture' - Barramento 32 bits propriet�rio da IBM. Voc� n�o pode usar placas ISA nele, possui a caracter�stica de bus mastering, mas pode procurar por dispositivos conectados a ele, procurando configura��o autom�tica. Este barramento estava presente no PS/1 e PS/2, hoje n�o � mais usado. PCI `Peripheral Component Interconnect' - � outro barramento r�pido produzido pela Intel com a mesma velocidade que o VESA. O barramento possui um chipset de controle que faz a comunica��o entre os slots PCI e o processador. O barramento se configura automaticamente (atrav�s do Plug-and-Play). O PCI � o barramento mais usado por Pentiums e est� se tornando uma padr�o no PC. AGP `Accelerated Graphics Port' - � um novo barramento criado exclusivamente para a liga��o de placas de video. � um slot marrom (em sua maioria) que fica mais separado do ponto de fixa��o das placas no chassis (comparado ao PCI). Estas placas permitem obter um desempenho elevado de v�deo se comparado as placas onboards com mem�ria compartilhada e mesmo PCI externas. O consumo de pot�ncia em placas AGP x4 podem chegar at� a 100W, portanto � importante dimensionar bem o sistema e ter certeza que a fonte de alimenta��o pode trabalhar com folga. PCMCIA `Personal Computer Memory Card International Association' - � um slot especial usado para conex�es de placas externas (normalmente revestivas de pl�stico) e chamadas de _cart�es PCMCIA_. Estes cart�es podem adicionar mais mem�ria ao sistema, conter um fax-modem, placa de rede, disco r�gido, etc. Os cart�es PCMCIA s�o divididos em 3 tipos: `Tipo 1' Tem a espessura de 3.3 mil�metros, e podem conter mais

AMR

mem�ria RAM ou mem�ria Flash. `Tipo 2' Tem a espessura de 5 mil�metros e capacidade de opera��es I/O. � um tipo usado para placas de fax-modem, rede, som. Computadores que aceitam cart�es PCMCIA do tipo 2, mant�m a compatibilidade com o tipo 1. `Tipo 3' Tem a espessura de 10.5 mil�metros e normalmente usado para discos r�gidos PCMCIA. Slots PCMCIA do tipo 3 mant�m a compatibilidade com o tipo 2 e 1. `Audio Modem Raise' - Pequeno barramento criado pela Intel para a conex�o de placas de som e modem. Placas de som e modem AMR usam o HSP (host signal processor) e s�o como as Placas on-board e todo o processamento � feito pela CPU do computador (veja detalhes em Se��o 3.7, `Placas on-board / off-board' e Se��o 3.8, `Hardwares espec�ficos ou "For Windows"'. Sua vantagem � o pre�o: um modem ou placa de som AMR custa em torno de R$ 25,00.

CNR

`Communication and Networking Rise' - Pequeno barramento criado pela Intel para a conex�o de placas de som, modems e placas de rede. Este � um pequenino slot marrom que � localizado no ponto de fixa��o das placas no chassis do gabinete. Elas s�o como as Placas on-board e todo o processamento � feito pela CPU do computador (veja detalhes em Se��o 3.7, `Placas on-board / off-board' e Se��o 3.8, `Hardwares espec�ficos ou "For Windows"'.

3.7. Placas on-board / off-board -------------------------------Placas _on-board_ s�o embutidas na placa m�e (_motherboard_). Placas _off-board_ s�o placas externas encaixadas nos slots de expans�o da placa m�e. No inicio da era do PC/XT todos as placas eram embutidas na placa m�e (na �poca eram somente a placa de v�deo e controladora). Com o surgimento do padr�o AT, diversas empresas de inform�tica desenvolveram dispositivos concorrentes e assim o usu�rio tinha a liberdade de escolha de qual dispositivo colocar em sua placa m�e (ou o mais barato ou o de melhor qualidade e desempenho), isto permitiu a adi��o de perif�ricos de qualidade sem romper com seu or�amento pessoal (comprando uma placa de som, depois uma de fax-modem, placa de v�deo melhor, etc). Atualmente parece que voltamos ao ponto de partida e tudo vem embutido na placa m�e (_on-board_) e o usu�rio n�o tem como escolher qual dispositivo usar em seu computador. � muito dif�cil (praticamente imposs�vel) encontrar uma placa m�e que satisfa�a completamente as necessidades do usu�rio ou recomenda��es de um bom t�cnico de inform�tica (a n�o ser que seja um t�cnico experiente e encontre alguma alternativa). Certamente o �nico dispositivo que funciona melhor se embutido placa m�e � a _placa controladora de perif�ricos_. Esta placa para se conectar unidades de disquete, discos r�gidos, CD-ROM, seriais, paralelas, joystick ao computador. Os HDs conectados

na � usada portas em uma

controladora embutida conseguem ter um desempenho muito maior do que em placas conectadas externamente, sem causar nenhum tipo de problema. Felizmente os �ltimos modelos de placas m�e 486 e os Pentium j� trazem a placa controladora de perif�ricos embutida. Hardwares embutidos na placa m�e (como fax-modem, v�deo, som) s�o em m�dia 30% mais baratos que os vendidos separadamente mas quase sempre s�o usados dispositivos de baixo desempenho e qualidade para reduzir o pre�o da placa m�e e quase sempre usados hardwares `For Windows'. Hoje em dia por causa do pre�o da placa m�e, � comum encontrar pessoas que verificam somente o pre�o e sequer procuram saber ou conhecem a qualidade das placas embutidas na placa m�e. Pior ainda � encontrar vendedores despreparados que sequer sabem explicar o porque que uma placa de som Sound Blaster 64 � mais cara que uma de modelo gen�rico... Certa vez fiz um teste de desempenho em um jogo chamado _Network Rally_ do _DOS_ com minha m�quina Pentium 120 MHZ (s� com a _placa controladora_ embutida), 16 MB RAM, placa de som Sound Blaster 16, placa de v�deo Trident 9680 com 1MB _versus_ um computador Pentium 200 MMX, 32 MB RAM, placa de v�deo embutida (usando 2 MB de mem�ria compartilhada), fax modem Rockwell embutido, e som CMI 8330 tamb�m embutido. O resultado foi que o jogo rodava perfeito em meu pentium 120MHZ e no outro computador com o som pipocando e imagem apresentando paradas. O problema � que em dispositivos de baixa qualidade e baratos, sua carga de processamento � jogada para o processador, resultando em menos pot�ncia para executar os programas (veja Se��o 3.8, `Hardwares espec�ficos ou "For Windows"' para maiores detalhes sobre o problema). A mem�ria de v�deo compartilhada quer dizer que parte da mem�ria RAM � usada para mem�ria de v�deo ao inv�s de uma mem�ria DRAM espec�fica e desenvolvida exclusivamente para acelera��o de v�deo. Isto traz mais lentid�o pois a mem�ria de v�deo (RAM) tamb�m ser� acessada pelo barramento do computador, envolvendo mais carga para o processador, etc. A t�cnica de mem�ria compartilhada � exclusiva de placas de v�deo embutidas. Outro perif�rico que traz problemas e muita carga para o processador � o fax-modem for Windows, HSP, AMR, micromodem, etc. A maioria destes perif�ricos se recusam a funcionar em computadores inferiores ao Pentium 150, n�o trazem seu chip de processamento e o pior: o chip UART. Isto faz com que o perif�rico, mesmo marcando conex�o a 57.600 ou mais tenha um desempenho de at� duas vezes menor que um fax-modem inteligente com chip de processamento pr�prio e UART (sem contar com os controles internos do modem, como os protocolos de corre��o de erros, e sua extensa interface de programa��o via comandos). A economia, neste caso, ser� paga em sua conta telef�nica. Outra vantagem de fax-modens inteligentes � que os modelos atuais vem com _FlashBios_ o que significa que podem ser reprogramados facilmente para passar de 33.600 para 57.600 sem trocar a placa, ou aceitarem novas tend�ncias de tecnologia. Para detalhes veja Se��o 3.8, `Hardwares espec�ficos ou "For Windows"'. Se voc� estiver em uma situa��o destas, certamente os computadores de menor pot�ncia e com hardwares inteligentes (que possuem seus pr�prios

chips de controle e processamento) ter�o um desempenho muito melhor. Mas tamb�m existem placas embutidas que tem a mesma qualidade de placas separadas (como alguns modelos de placas m�e que trazem a _Sound Blaster_ embutida). O pre�o pode ser maior mas voc� estar� pagando por um dispositivo de melhor qualidade e que certamente trar� benef�cios a voc� e ao seu sistema. Consulte um t�cnico em inform�tica experiente para te indicar uma placa m�e de bom pre�o e de qualidade. � muito comum encontrar falta de profissionalismo em pessoas que n�o sabem distinguir as caracter�sticas, fun��es e vantagens entre uma placa de boa qualidade e um hardware for Windows a n�o ser o pre�o mais barato. 3.8. Hardwares espec�ficos ou "For Windows" ------------------------------------------Esta se��o foi retirada do manual de instala��o da Debian GNU/Linux. Uma tend�ncia que perturba � a prolifera��o de Modems e impressoras espec�ficos para Windows. Em muitos casos estes s�o especialmente fabricados para operar com o Sistema Operacional Microsoft Windows e costumam ter a legenda `WinModem', `for Windows', ou `Feito especialmente para computadores baseados no Windows'. Geralmente estes dispositivos s�o feitos retirando os processadores embutidos daquele hardware e o trabalho deles s�o feitos por drivers do Windows que s�o executados pelo processador principal do computador. Esta estrat�gia faz o hardware menos expans�vel, mas o que � poupado n�o � passado para o usu�rio e este hardware pode at� mesmo ser mais caro quanto dispositivos equivalentes que possuem intelig�ncia embutida. Voc� deve evitar o hardware baseado no Windows por duas raz�es: 1.

O primeiro � que aqueles fabricantes n�o tornam os recursos dispon�veis para criar um driver para Linux. Geralmente, o hardware e a interface de software para o dispositivo � propriet�ria, e a documenta��o n�o � dispon�vel sem o acordo de n�o revela��o, se ele estiver dispon�vel. Isto impede seu uso como software livre, desde que os escritores de software gr�tis descubram o c�digo fonte destes programas.

2.

A segunda raz�o � que quando estes dispositivos tem os processadores embutidos removidos, o sistema operacional deve fazer o trabalho dos processadores embutidos, freq�entemente em prioridade de tempo real, e assim a CPU n�o esta dispon�vel para executar programas enquanto ela esta controlando estes dispositivos. Um exemplo t�pico disso s�o os Modems for Windows; Al�m da carga jogada na CPU, o dispositivo n�o possui o chip UART 16550, que � essencial para uma boa taxa de transfer�ncia do modem. O que alguns dispositivos fazer � a emula��o deste chip exigindo no m�nimo uma CPU Pentium de 166 MHZ para operar adequadamente nesta taxa de transmiss�o. Mesmo assim, devido a falta do chip UART, um modem destes iniciar uma transmiss�o de arquivo a 57.600, a tend�ncia � sua taxa de transfer�ncia ir caindo na medida que um arquivo � transferido (at� se estabilizar em 21/25 Kbps).

Assim o usu�rio t�pico do Windows n�o obt�m um multi-processamento t�o intensivo como um usu�rio do Linux, o fabricante espera que aquele usu�rio do Windows simplesmente n�o note a carga de trabalho que este hardware p�e naquela CPU. No entanto, qualquer sistema operacional de multi-processamento, at� mesmo Windows 95 / 98 ou NT, s�o prejudicados quando fabricantes de perif�ricos retiram o processador embutido de suas placas e colocam o processamento do hardware na CPU. Voc� pode ajudar a reverter esta situa��o encorajando estes fabricantes a lan�arem a documenta��o e outros recursos necess�rios para n�s desenvolvermos drivers para estes hardwares, mas a melhor estrat�gia � simplesmente evitar estes tipos de hardwares at� que ele esteja listado no HOWTO de hardwares compat�veis com Linux. Note que hoje j� existem muitos drivers para WinModems e outros hardwares for Windows para o Linux. Veja a lista de hardwares compat�veis no HARDWARE-HOWTO ou procure o driver no site do fabricante de seu dispositivo. Mesmo assim a dica � evitar hardwares for Windows e comprar hardwares inteligentes onde cada um faz sua fun��o sem carregar a CPU. 3.9. Dispositivos espec�ficos para GNU/Linux -------------------------------------------Esta se��o foi retirada do manual de instala��o da Debian GNU/Linux. Existem diversos vendedores, agora, que vendem sistemas com a `Debian' ou outra distribui��o do GNU/Linux pr�-instaladas. Voc� pode pagar mais para ter este privil�gio, mas compra um n�vel de paz de mente, desde ent�o voc� pode ter certeza que seu hardware � bem compat�vel com GNU/Linux. Praticamente todas as placas que possuem processadores pr�prios funcionam sem nenhum problema no Linux (algumas placas da `Turtle Beach' e `mwave' tem suporte de som limitado). Se voc� tiver que comprar uma m�quina com Windows instalado, leia cuidadosamente a licen�a que acompanha o Windows; voc� pode rejeitar a licen�a e obter um desconto de seu vendedor. Veja http://www.linuxmall.com/refund/ para detalhes. Se n�o estiver comprando um computador com `GNU/Linux' instalado, ou at� mesmo um computador usado, � importante verificar se os hardwares existentes s�o suportados pelo kernel do `GNU/Linux'. Verifique se seu hardware � listado no _Hardware Compatibility HOWTO_, na documenta��o do c�digo fonte do kernel no diret�rio `Documentation/sound' ou consulte um t�cnico de `GNU/Linux' experiente. Deixe seu vendedor (se conhecer) saber que o que est� comprando � para um sistema `GNU/Linux'. Desta forma isto servir� de experi�ncia para que ele poder� recomendar o mesmo dispositivo a outras pessoas que procuram bons dispositivos para sistemas `GNU/Linux'. Ap�ie vendedores de hardwares amigos do `GNU/Linux'. 3.10. Aterramento -----------------

O aterramento correto da instala��o el�trica � _essencial_ para garantir a prote��o de seu microcomputador (e outros aparelhos que requerem isto). Muitos usu�rios simplesmente removem o pino central da tomada de seu computador, ou ligam o terra junto ao neutro da rede el�trica, isto � errado e pode trazer s�rias consequencias. O computador possui componentes sens�veis que geram descargas est�ticas durante seu funcionamento (fonte, discos, placas, etc), estas descargas e ru�dos s�o absorvidas pelo sistema de aterramento (que � ligado no gabinete do computador e outros componentes internos). Sem aterramento o seu gabinete passar� a dar choques el�tricos (teste com uma chave de testes, ela acender� indicando a circula��o de corrente el�trica) e a corrente acumulada poder� queimar componentes internos sens�veis (placa m�e, HD, mem�rias, placas expansoras). A liga��o do terra ao neutro da rede � menos perigosa em condi��es normais, mas se um raio cair na rede el�trica as conseq��ncias poder�o ser piores. Mesmo a rede de ilumina��o p�blica tendo aterramento em cada poste isto pode n�o ser o suficiente para reduzir a carga de um raio que caia nas proximidades. O sistema de aterramento residencial para PC deve ser feito com uma estaca de cobre com no m�nimo 2 metros de altura. O cobre � um �timo condutor de eletricidade, perdendo somente para o ouro. Cave um buraco no solo com a ajuda de uma cavadeira (hehe, nunca ouviu falar nisso? :-), se estiver com dificuldades para cavar por causa de solo ressecado, molhe a terra para facilitar as coisas. Com a estaca enterrada, prenda um cabo el�trico em sua extremidade. O ideal para testar este sistema de aterramento seria ter um equipamento chamado `terrometro' (medidor de aterramento), mas utilizaremos 2 alternativas mais acess�veis: * Ligue uma l�mpada incandescente de 100W em um bocal com uma ponta ligada na extremidade positiva da rede el�trica (fase) e a outra ponta no fio da barra de cobre. O aterramento est� bem feito quando a l�mpada acender quase em sua pot�ncia total. Ligue o fio do aterramento no pino central da tomada de seu computador. _OBS:_ Cuidado para n�o tomar um baita choque durante esta opera��o em alguns casos pode ser fatal. Utilize sandalhas ou sapatos de borracha (materiais isolantes) isto evitar� tomar o choque caso aconte�a. * Ligue a outra extremidade do fio que vem da barra de cobre no pino central da tomada de seu computador e ligue-o. Consiga um mult�metro (anal�gico ou digital) e coloque para medir em escala DC 10V. Coloque a ponta negativa (preta) no _neutro_ da rede el�trica e encoste a ponta positiva (vermelha) no gabinete de seu computador. O aterramento estar� aprovado caso o valor medido seja de no m�ximo 2.5 volts. Caso algo ocorra errado, cheque novamente os passos acima. Se desconfiar das condi��es do solo, use uma barra maior ou ligue 2 barras de cobre juntas. 3.11. Descargas est�ticas ------------------------� a energia que se acumula durante o choque das mol�culas de ar seco ou atrito com outros objetos. Pode acontecer de em dias secos voc� tomar um "choque" ao abrir seu carro ou tocar em algum objeto

met�lico, isto � uma descarga est�tica. Na realidade voc� n�o tomou um choque, ao tocar em um objeto met�lico esta energia � descarregada violentamente. Esta energia pode chegar na ordem de 5 mil volts quando acumulada (assustador n�o?). � por este motivo que caminh�es que transportam combust�vel `arrastam' uma corrente no ch�o, esta corrente funciona como um aterramento (veja Se��o 3.10, `Aterramento') eliminando descargas est�ticas que possam gerar fa�scas e causar um desastre. Pulseiras, cord�es, objetos met�licos podem ser usados para eliminar descargas est�ticas de pessoas. O contato freq�ente com o solo � um m�todo muito �til. Existem casos em que um colar salvou a vida de pessoas atingidas por raio, justamente pelas explica��es acima. O colar derrete com a drenagem da eletricidade do raio mas a pessoa tem mais chances de sair viva. Em indiv�duos realmente sens�veis, uma chapinha de metal pode ser colocada no sapato fazendo contato com o calcanhar drenando constantemente estas descargas, isto � eficaz e bem melhor que sair arrastando correntes por ai :-) Se voc� trabalha com hardwares ou � apenas mais um fu�ador agora voc� entender� porque � recomend�vel sempre tocar em met�licas do computador antes de mexer em qualquer placa e aquele seu amigo disse que a placa dele queimou depois que limpar seus contatos.

de PC's, partes porque resolveu

3.12. Melhoria de performance ----------------------------3.12.1. Particionamento ----------------------Para um melhor desempenho, os dados que s�o solicitados constantemente dever�o ser armazenados em uma parti��o no inicio do disco r�gido. Esta �rea � a mais r�pida e checa a ser 60% mais r�pida que o final do HD (em alguns modelos). Em especial, a parti��o de boot, swap e bin�rios do sistema poder�o ser armazenados nesta parti��o para aumentar a velocidade da carga de programas e n�o prejudicar a performance do sistema quando o uso da parti��o de troca (swap) for necess�ria. Em discos r�gidos grandes (6GB ou maiores) � recomend�vel criar no m�nimo uma parti��o pequena para `/boot', outra para `/', outra para `swap' e outra para `/usr'. Ficando distribu�das da seguinte maneira no disco r�gido: BBRRRRRRRRRRRRRRRRRRRRR RRRRRRRRRRRRRRRRRRRRRRR SSSSSSSSSSUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU

B R S U

-

/boot Ra�z / Swap /usr

Mas a swap n�o ficaria ainda mais r�pida sendo a primeira parti��o no disco? Sim e n�o: Realmente fica r�pida (na teoria conforme explicado acima), mas levando em considera��o que o deslocamento das cabe�as de leitura/grava��o do disco r�gido leva certo tempo, � mais vantajoso mant�-la entre as 2 parti��es mais acessadas, isto diminui o tempo de acesso caso um programa esteja fazendo uso constante de `/' ou `/usr' e precisar trocar dados na parti��o `swap'. Al�m do mais, a parti��o `/' geralmente � pequena (no m�ximo 800M) deixando a swap em uma �rea muito pr�xima do inicio do disco r�gido. Com base nisto, voc� poder� ter uma melhor vis�o t�cnica para a constru��o de suas parti��es dependendo da fun��o do sistema. 3.12.2. Spindles ---------------Em sistemas que utilizam um disco r�gido dedicado para fazer `swap', a liga��o deste em uma placa controladora independente aumentar� bastante a performance do sistema, pois enquanto o disco principal ligado em sua controladora estiver fazendo uma opera��o de leitura, o outro poder� estar fazendo sua opera��o de swap simultaneamente. O mesmo n�o acontece quando dois discos r�gidos IDE est�o ligados no mesmo cabo (isto n�o acontece no SCSI). 3.12.3. Fazendo ajustes finos de performance do disco ----------------------------------------------------O `hdparm' � um programa que permite modificar caracter�sticas diversas da unidade de disco r�gido como modo de transfer�ncia de dados, leitura adiante, dma, cache, leitura simult�nea de setores, hiberna��o, etc. Por padr�o as transfer�ncias de dados entre a controladora do HD (a plaquinha que fica embaixo dele) e a controladora de perif�ricos � feita em 16 bits. Para exibir a configura��o atual do disco r�gido `/dev/hda' (por exemplo), digite o seguinte comando: `hdparm /dev/hda' /dev/hdb: multcount I/O support unmaskirq using_dma keepsettings nowerr readonly readahead

= = = = = = = =

0 0 0 1 0 0 0 8

(off) (16-bit) (off) (off) (off) (off) (off) (on)

Imediatamente podemos modificar os seguintes campos para melhorar sensivelmente o desempenho do disco r�gido: multcount Pode ser modificada com _-m[num]_ e especifica o n�mero m�ximo de setores que ser�o acessados de uma s� vez na opera��o de leitura da unidade. O valor m�ximo recomendado � igual a capacidade

m�xima suportada pelo seu disco r�gido, que pode ser obtida com o comando: `hdparm -i /dev/hda' Model=TS6324A2, FwRev=.340 , SerialNo=A99B99JA Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% } RawCHS=13228/15/63, TrkSize=0, SectSize=0, ECCbytes=0 BuffType=unknown, BuffSize=256kB, MaxMultSect=16, MultSect=16 CurCHS=13228/15/63, CurSects=12500460, LBA=yes, LBAsects=12500460 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5 O campo _MaxMultSect=16_ indica o valor de 16 como m�ximo suportado em uma �nica opera��o pela unidade. Valores maiores poder�o ser especificados mas n�o trar�o tenho de performance. Para discos r�gidos _Western Digital_ � recomend�vel deixar este valor como `0', porque eles possuem um mecanismo embutido para leitura de setores. Para experimentar valores fora dos padr�es, coloque seu sistema de arquivos como somente leitura para n�o perder dados caso algo saia errado. Note que o comando `hdparm -i' mostra alguns detalhes interessantes sobre a configura��o do disco r�gido e modos de opera��o suportados. I/O support Modificado com _-c[num]_. O n�mero especificado pode ser `0' para transfer�ncia de dados em 16 bits, `1' para 32 bits e `3' para 32 bits com uma seq�encia especial de sincronismo (alguns chips requerem esta ao inv�s da `1'). using_dma Modificado com _-d[num]_. Habilita ou n�o o uso de DMA para a transfer�ncia de dados do HD, ativando o controle de algumas opera��es pelo chipset livrando a CPU para processamento. `0' desativa DMA e `1' ativa. Note que nem todos os chipsets aceitam esta opera��o. A ativa��o de dma pode ser feita automaticamente na recompila��o do kernel ou especificando o par�metro _ideX=dma_ (`X' � o n�mero da controladora IDE) na linha de comando de `boot:' ou no arquivo `/etc/lilo.conf'. unmaskirq Modificado com _-u[num]_. Habilita ou n�o o controlador de disco mascarar as interrup��es de processador durante o processamento das interrup��es de disco. `0' desativa esta fun��o e `1' ativa. Use esta op��o com cuidado e sob seu pr�prio risco: algumas placas controladores de HD e controladoras de perif�ricos n�o trabalham bem com a taxa de transfer�ncia aumentada, podem ocorrer perda de dados. Coloque o sistema de arquivos como somente leitura antes de testar esta caracter�stica. readonly Modificado com _-r[num]_. Coloca o disco em modo somente leitura. A montagem da parti��o com a op��o _ro_ no `/etc/fstab' � preferida. readahead Modificado com _-a[num]_. Configura o n�mero de blocos que ser�o lidos antecipadamente no sistema de arquivos (por padr�o � usado 8 blocos - 4 Kb). Este n�mero poder� ser modificado para se adequar a utiliza��o do computador. Em sistemas com muita procura de arquivos pequenos (servidores web), um valor pequeno (como o padr�o) � recomend�vel. Se a m�quina � um servidor de arquivos dedicado, um valor maior trar� maiores benef�cios. Veja mais detalhes sobre o comando `hdparm' em sua p�gina de manual.

_OBS:_ Se o `Linux' resetar o disco r�gido, a maioria das configura��es retornar�o ao seu valor padr�o. Isto ocorre devido a op��es mau utilizadas no `hdparm', n�o suportadas pelo disco r�gido ou por problemas no HD/controladora. Exemplos: # Ajusta o n�mero de setores simult�neos para 16 e o modo de transfer�ncia para # 32 bits no disco r�gido /dev/hda hdparm -c1 -m16 /dev/hda # Programa a leitura adiante do HD para 64 blocos (32kb), o modo de transfer�ncia # para 32 bits, usar DMA, e 16 setores simult�neos. hdparm -c1 -d1 -m16 -a64 /dev/hda #Mostra os valores de configura��o atuais do disco r�gido hdparm /dev/hda 3.12.4. Data de acesso a arquivos/diret�rios -------------------------------------------Toda vez que acessamos um arquivo ou diret�rio da m�quina `Linux' a data/hora � atualizada. Em m�quinas normais isto � OK mas em servidores onde o acesso a arquivos � constante (como no diret�rio `/var/spool' em servidores de e-mail ou `/usr/' em servidores diskless) � recomend�vel desativar esta caracter�stica. Isto reduzir� a quantidade de buscas das cabe�as do disco r�gido para a atualiza��o deste atributo e consequentemente aumentar� a performance na grava��o de arquivos (o disco r�gido usa o sistema mec�nico para ler/gravar dados, muito mais lento que a mem�ria RAM eletr�nica). chattr -R +A /var/spool O atributo `+A' desativa a grava��o da "data de acesso" dos arquivos e sub-diret�rios dentro de `/var/spool'. Para desativar a atualiza��o da "data de acesso" para toda a parti��o, voc� pode incluir a op��o de montagem `noatime' no seu `/etc/fstab': /dev/hda1

/var/spool

ext2

defaults,noatime

0

1

_OBS:_ O `Linux' utiliza tr�s atributos de data para controle de arquivos: * `atime' - Data/Hora de acesso: � atualizado toda vez que o arquivo � lido ou executado. * `mtime' - Data/Hora da modifica��o, atualizado sempre que alguma modifica��o ocorre no arquivo ou no conte�do do diret�rio. Esta � mais interessante que a `ctime' principalmente quando temos hardlinks. * `ctime' - Data/Hora da �ltima modifica��o do inodo do arquivo. Em parti��es onde a grava��o � frequente (como na pr�pria `/var/spool') a desativa��o do atributo `atime' al�m de melhorar o desempenho do disco, n�o far� muita falta. 3.13. Perif�ricos SCSI ----------------------

Hardwares SCSI (Small Computer System Interfaces) representam a tecnologia ideal para a transfer�ncia de dados em alta velocidade e liga��o de v�rios perif�ricos. A taxa de transfer�ncia especificada para dispositivos SCSI � sempre a padr�o se comparada a dispositivos IDE (quando uma taxa de 66Mb/s quase nunca � atingida). Estes dispositivos s�o classificados em 3 categorias: * `SCSI I' - Usa um cabo de 25 condutores para a liga��o de perif�ricos. Normalmente usado em scanners, impressoras e outros dispositivos. A taxa de transfer�ncia n�o � muito alta se comparado aos outros tipos SCSI. * `SCSI II' - Tamb�m chamado de _Fast SCSI_. Usa um cabo de 50 condutores para a liga��o de perif�ricos. Permite que sejam ligados at� 7 perif�ricos em uma mesma controladora (veja Se��o 3.13.1, `Configurando uma SCSI ID e termina��o'). � o mais comum encontrado hoje em dia, mas vem perdendo espa�o aos poucos para a tecnologia `SCSI III'. * `SCSI III' - Tamb�m chamado de _Fast SCSI SE_ ou _LVD_. Usa um cabo de 68 condutores para liga��o de perif�ricos (veja Se��o 3.13.1, `Configurando uma SCSI ID e termina��o'). Permite que sejam ligados at� 16 perif�ricos em uma mesma controladora. Um cabo SCSI pode ter o comprimento de at� 5 metros de extens�o. Os perif�ricos SCSI s�o identificados atrav�s de n�meros chamados de identificador SCSI ou SCSI ID. Estes n�meros v�o de 0 a 6 para o padr�o _SCSI 2_ e de 0 a 15 para o padr�o _SCSI 3_. Placas SCSI como a _Adaptec UV 19160_ permitem a liga��o de perif�ricos SCSI 2 e SCSI 3 na mesma placa com a taxa de transmiss�o de 160 MB/s por perif�rico, al�m de possuir um "setup" pr�prio para configurar as op��es dos dispositivos da placa e a opera��o da pr�pria. A tecnologia SCSI � algo realmente r�pido para a transfer�ncia de dados e cara tamb�m, seu uso � muito recomendado em servidores cr�ticos. Os pr�prios dispositivos SCSI como discos r�gidos, gravadores de CD, cd-rom, etc. s�o constru�dos de tal forma que tem a durabilidade maior que perif�ricos comuns, garantindo a m�xima confian�a para opera��o/armazenamento de dados em longos per�odos de opera��o. 3.13.1. Configurando uma SCSI ID e termina��o --------------------------------------------Uma SCSI ID � configurada independentemente por dispositivo e consiste em 3 jumpers (ou dip switches) que possuem os valores `1', `2' e `4'. Veja o exemplo abaixo de uma unidade de CD SCSI 2: +-------------------------------------------| | | |SCSI ID | | | _____ TERM | | | | | | o o o o o o | o o o o o o | 1 2 4 T | +---------------------------------------------

Se voc� deixar os 3 jumpers da SCSI ID abertos, o dispositivo usar� a SCSI ID 1. Colocando o jumper na posi��o 1, a unidade ter� a SCSI ID 1. Se voc� colocar um jumper na posi��o 1 e outro na 4, a unidade ser� identificada pela SCSI ID 5 (quando mais de um jumper � ligado, os n�meros ser�o somados). A termina��o SCSI funciona de forma semelhante a de uma rede BNC, o �ltimo perif�rico do cabo SCSI deve ter o jumper de termina��o colocado para indicar que � o �ltimo perif�rico do cabo e evitar deflex�o de dados. Algumas placas SCSI modernas ajustam automaticamente a termina��o de perif�ricos sem necessidade de ajustar manualmente. ------------------------------------------------------------------------------4. Rede ------Este cap�tulo descreve o que � uma rede, os principais dispositivos de rede no `GNU/Linux', a identifica��o de cada um, como configurar os dispositivos, escolha de endere�os IP, roteamento. Parte deste cap�tulo, uns 70% pelo menos, � baseado no documento NET3-4-HOWTO. (seria perda de tempo reescrever este assunto pois existe um material desta qualidade j� dispon�vel). 4.1. O que � uma rede --------------------Rede � a conex�o de duas ou mais m�quinas com o objetivo de compartilhar recursos entre uma m�quina e outra. Os recursos podem ser: * Compartilhamento do conte�do de seu disco r�gido (ou parte dele) com outros usu�rios. Os outros usu�rios poder�o acessar o disco como se estivesse instalado na pr�pria m�quina). Tamb�m chamado de servidor de arquivos. * Compartilhamento de uma impressora com outros usu�rios. Os outros usu�rios poder�o enviar seus trabalhos para uma impressora da rede. Tamb�m chamado de servidor de impress�o. * Compartilhamento de acesso a Internet. Outros usu�rios poder�o navegar na Internet, pegar seus e-mails, ler noticias, bate-papo no IRC, ICQ atrav�s do servidor de acesso Internet. Tamb�m chamado de servidor Proxy. * Servidor de Internet/Intranet. Outros usu�rios poder�o navegar nas p�ginas Internet localizadas em seu computador, pegar e-mails, usar um servidor de IRC para chat na rede, servidor de ICQ, etc Com os �tens acima funcionando � poss�vel criar permiss�es de acesso da rede, definindo quem ter� ou n�o permiss�o para acessar cada compartilhamento ou servi�o existente na m�quina (www, ftp, irc, icq, etc), e registrando/avisando sobre eventuais tentativas de violar a seguran�a do sistema, firewalls, pontes, etc. Entre outras ilimitadas possibilidades que dependem do conhecimento do

indiv�duo no ambiente `GNU/Linux', j� que ele permite muita flexibilidade para fazer qualquer coisa funcionar em rede. A comunica��o entre computadores em uma rede � feita atrav�s do _Protocolo de Rede_. 4.2. Protocolo de Rede ---------------------O protocolo de rede � a linguagem usada para a comunica��o entre um computador e outro. Existem v�rios tipos de protocolos usados para a comunica��o de dados, alguns s�o projetados para pequenas redes (como � o caso do NetBios) outros para redes mundiais (TCP/IP que possui caracter�sticas de roteamento). Dentre os protocolos, o que mais se destaca atualmente � o TCP/IP devido ao seu projeto, velocidade e capacidade de roteamento. 4.3. Endere�o IP ---------------O _endere�o IP_ s�o n�meros que identificam seu computador em uma rede. Inicialmente voc� pode imaginar o IP como um n�mero de telefone. O IP � compostos por quatro bytes e a conven��o de escrita dos n�meros � chamada de "nota��o decimal pontuada". Por conven��o, cada interface (placa usada p/ rede) do computador ou roteador tem um endere�o IP. Tamb�m � permitido que o mesmo endere�o IP seja usado em mais de uma interface de uma mesma m�quina mas normalmente cada interface tem seu pr�prio endere�o IP. As Redes do Protocolo Internet s�o seq��ncias cont�nuas de endere�os IP's. Todos os endere�os dentro da rede tem um n�mero de d�gitos dentro dos endere�os em comum. A por��o dos endere�os que s�o comuns entre todos os endere�os de uma rede s�o chamados de _por��o da rede_. Os d�gitos restantes s�o chamados de _por��o dos hosts_. O n�mero de bits que s�o compartilhados por todos os endere�os dentro da rede s�o chamados de _netmask_ (m�scara da rede) e o papel da _netmask_ � determinar quais endere�os pertencem ou n�o a rede. Por exemplo, considere o seguinte: ----------------Endere�o do Host M�scara da Rede Por��o da Rede Por��o do Host ----------------Endere�o da Rede Endere�o Broadcast -----------------

--------------192.168.110.23 255.255.255.0 192.168.110. .23 --------------192.168.110.0 192.168.110.255 ---------------

Qualquer endere�o que � finalizado em zero em sua _netmask_, revelar� o _endere�o da rede_ que pertence. O endere�o e rede � ent�o sempre o menor endere�o num�rico dentro da escalas de endere�os da rede e sempre possui a _por��o host_ dos endere�os codificada como zeros. O endere�o de _broadcast_ � um endere�o especial que cada computador

em uma rede "escuta" em adi��o a seu pr�prio endere�o. Este � um endere�o onde os datagramas enviados s�o recebidos por todos os computadores da rede. Certos tipos de dados como informa��es de roteamento e mensagens de alerta s�o transmitidos para o endere�o _broadcast_, assim todo computador na rede pode recebe-las simultaneamente. Existe dois padr�es normalmente usados para especificar o endere�o de _broadcast_. O mais amplamente aceito � para usar o endere�o `mais alto' da rede como endere�o broadcast. No exemplo acima este seria 192.168.110.255. Por algumas raz�es outros sites tem adotado a conven��o de usar o `endere�o de rede' como o endere�o broadcast. Na pr�tica n�o importa muito se usar este endere�o, mas voc� deve ter certeza que todo computador na rede esteja configurado para escutar o mesmo _endere�o broadcast_. 4.3.1. Classes de Rede IP ------------------------Por raz�es administrativas ap�s algum pouco tempo no desenvolvimento do protocolo IP alguns grupos arbitr�rios de endere�os foram formados em redes e estas redes foram agrupadas no que foram chamadas de _classes_. Estas classes armazenam um tamanho padr�o de redes que podem ser usadas. As faixas alocadas s�o: +--------------------------------------------------------+ | Classe | M�scara de | Endere�o da Rede | | | Rede | | +--------------------------------------------------------+ | A | 255.0.0.0 | 0.0.0.0 - 127.255.255.255 | | B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 | | C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 | |Multicast| 240.0.0.0 | 224.0.0.0 - 239.255.255.255 | +--------------------------------------------------------+ O tipo de endere�o que voc� deve utilizar depende exatamente do que estiver fazendo. 4.3.2. Refer�ncia r�pida de m�scara de redes -------------------------------------------A tabela abaixo faz refer�ncia as m�scaras de rede mais comuns e a quantidade de m�quinas m�ximas que ela atinge. Note que a especifica��o da m�scara tem influ�ncia direta na classe de rede usada: M�scara (Forma octal)

M�scara (Forma 32 bits)

N�mero M�ximo de M�quinas

Classe A: /8 /255.0.0.0

16,777,215

Classe B: /16 /255.255.0.0 /17 /255.255.128.0 /18 /255.255.192.0 /19 /255.255.224.0

65,535 32,767 16,383 8,191

/20 /21 /22 /23

/255.255.240.0 /255.255.248.0 /255.255.252.0 /255.255.254.0

Classe C /24 /255.255.255.0 /25 /255.255.255.128 /26 /255.255.255.192 /27 /255.255.255.224 /28 /255.255.255.240 /29 /255.255.255.248 /30 /255.255.255.252 /32 /255.255.255.255

4,095 2,047 1,023 511 255 127 63 31 15 7 3 1

Qualquer outra m�scara fora desta tabela (principalmente para a classe A), dever� ser redimensionada com uma calculadora de IP para chegar a um n�mero aproximado de redes/m�quinas aproximados que deseja. 4.3.3. Para instalar uma m�quina usando o Linux em uma rede existente --------------------------------------------------------------------Se voc� quiser instalar uma m�quina `GNU/Linux' em uma rede TCP/IP existente ent�o voc� deve contactar qualquer um dos administradores da sua rede e perguntar o seguinte: * Endere�o IP de sua m�quina * Endere�o IP da rede * Endere�o IP de broadcast * M�scara da Rede IP * Endere�o do Roteador * Endere�o do Servidor de Nomes (DNS) Voc� deve ent�o configurar seu dispositivo de rede `GNU/Linux' com estes detalhes. Voc� n�o pode simplesmente escolhe-los e esperar que sua configura��o funcione. 4.3.4. Endere�os reservados para uso em uma rede Privada -------------------------------------------------------Se voc� estiver construindo uma rede privada que nunca ser� conectada a Internet, ent�o voc� pode escolher qualquer endere�o que quiser. No entanto, para sua seguran�a e padroniza��o, existem alguns endere�os IP's que foram reservados especificamente para este prop�sito. Eles est�o especificados no RFC1597 e s�o os seguintes: +---------------------------------------------------------+ | ENDERE�OS RESERVADOS PARA REDES PRIVADAS | +---------------------------------------------------------+ | Classe | M�scara de | Endere�o da Rede | | de Rede | Rede | | +---------+---------------+-------------------------------+ | A | 255.0.0.0 | 10.0.0.0 - 10.255.255.255 | | B | 255.255.0.0 | 172.16.0.0 - 172.31.255.255 | | C | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 | +---------------------------------------------------------+ Voc� deve decidir primeiro qual ser� a largura de sua rede e ent�o escolher a classe de rede que ser� usada.

4.4. Interface de rede ---------------------As interfaces de rede no `GNU/Linux' est�o localizadas no diret�rio `/dev' e a maioria � criada dinamicamente pelos softwares quando s�o requisitadas. Este � o caso das interfaces `ppp' e `plip' que s�o criadas dinamicamente pelos softwares. Abaixo a identifica��o de algumas interfaces de rede no Linux (a `?' significa um n�mero que identifica as interfaces seq�encialmente, iniciando em 0): * `eth?' - Placa de rede Ethernet e WaveLan. * `ppp?' - Interface de rede PPP (protocolo ponto a ponto). * `slip?' - Interface de rede serial * `eql' - Balanceador de tr�fego para m�ltiplas linhas * `plip?' - Interface de porta paralela * `arc?e, arc?s' - Interfaces Arcnet * `sl?, ax?' - Interfaces de rede AX25 (respectivamente para kernels 2.0.xx e 2.2.xx. * `fddi?' - Interfaces de rede FDDI. * `dlci??, sdla?' - Interfaces Frame Relay, respectivamente para para dispositivos de encapsulamento DLCI e FRAD. * `nr?' - Interface Net Rom * `rs?' - Interfaces Rose * `st?' - Interfaces Strip (Starmode Radio IP) * `tr?' - Token Ring Para maiores detalhes sobre as interfaces acima, consulte o documento _NET3-4-HOWTO_. 4.4.1. A interface loopback --------------------------A interface _loopback_ � um tipo especial de interface que permite fazer conex�es com voc� mesmo. Todos os computadores que usam o protocolo TCP/IP utilizam esta interface e existem v�rias raz�es porque precisa fazer isto, por exemplo, voc� pode testar v�rios programas de rede sem interferir com ningu�m em sua rede. Por conven��o, o endere�o IP 127.0.0.1 foi escolhido especificamente para a loopback, assim se abrir uma conex�o telnet para 127.0.0.1, abrir� uma conex�o para o pr�prio computador local. A configura��o da interface loopback � simples e voc� deve ter certeza que fez isto (mas note que esta tarefa � normalmente feita pelos scripts padr�es de inicializa��o existentes em sua distribui��o). ifconfig lo 127.0.0.1 Caso a interface loopback n�o esteja configurada, voc� poder� ter problemas quando tentar qualquer tipo de conex�o com as interfaces locais, tendo problemas at� mesmo com o comando `ping'. 4.4.2. Atribuindo um endere�o de rede a uma interface (ifconfig) ---------------------------------------------------------------Ap�s configurada fisicamente, a interface precisa receber um endere�o IP para ser identificada na rede e se comunicar com outros computadores, al�m de outros par�metros como o endere�o de _broadcast_

e a _m�scara de rede_. (interface configure).

O comando usado para fazer isso � o `ifconfig'

Para configurar a interface de rede Ethernet (`eth0') com o endere�o 192.168.1.1, m�scara de rede 255.255.255.0, podemos usar o comando: ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up O comando acima ativa a interface de rede. A palavra `up' pode ser omitida, pois a ativa��o da interface de rede � o padr�o. Para desativar a mesma interface de rede, basta usar usar o comando: ifconfig eth0 down Digitando `ifconfig' s�o mostradas todas as interfaces ativas no momento, pacotes enviados, recebidos e colis�es de datagramas. Para mostrar a configura��o somente da interface eth0, use o comando: `ifconfig eth0' Para mais detalhes, veja a p�gina de manual do `ifconfig' ou o _NET3-4-HOWTO_. 4.5. Roteamento --------------Roteamento � quando uma m�quina com m�ltiplas conex�es de rede decide onde entregar os pacotes IP que recebeu, para que cheguem ao seu destino. Pode ser �til ilustrar isto com um exemplo. Imagine um simples roteador de escrit�rio, ele pode ter um link intermitente com a Internet, um n�mero de segmentos ethernet alimentando as esta��es de trabalho e outro link PPP intermitente fora de outro escrit�rio. Quando o roteador recebe um datagrama de qualquer de suas conex�es de rede, o mecanismo que usa determina qual a pr�xima interface deve enviar o datagrama. Computadores simples tamb�m precisam rotear, todos os computadores na Internet tem dois dispositivos de rede, um � a interface _loopback_ (explicada acima) o outro � um usado para falar com o resto da rede, talvez uma ethernet, talvez uma interface serial PPP ou SLIP. OK, viu como o roteamento funciona? cada computador mant�m uma lista de regras especiais de roteamento, chamada _tabela de roteamento_. Esta tabela cont�m colunas que tipicamente cont�m no m�nimo tr�s campos, o primeiro � o _endere�o de destino_, o segundo � o _nome da interface_ que o datagrama deve ser roteado e o terceiro � opcionalmente o _endere�o IP_ da outra m�quina que levar� o datagrama em seu pr�ximo passo atrav�s da rede. No `GNU/Linux' voc� pode ver a tabela de roteamento usando um dos seguintes comandos: cat /proc/net/route route -n netstat -r O processo de roteamento � muito simples: um datagrama (pacote IP) � recebido, o endere�o de destino (para quem ele �) � examinado e comparado com cada item da tabela de roteamento. O item que mais

corresponder com o endere�o � selecionado e o datagrama � direcionado a interface especificada. Se o campo _gateway_ estiver preenchido, ent�o o datagrama � direcionado para aquele computador pela interface especificada, caso contr�rio o endere�o de destino � assumido sendo uma rede suportada pela interface. 4.5.1. Configurando uma rota no Linux ------------------------------------A configura��o da rota � feita atrav�s da ferramenta `route'. Para adicionar uma rota para a rede 192.168.1.0 acess�vel atrav�s da interface eth0 basta digitar o comando: route add -net 192.168.1.0 eth0 Para apagar a rota acima da _tabela de roteamento_, basta substituir a palavra `add' por `del'. A palavra `net' quer dizer que 192.168.1.0 � um endere�o de rede (lembra-se das explica��es em Se��o 4.3, `Endere�o IP'?)) para especificar uma m�quina de destino, basta usar a palavra `-host'. Endere�os de m�quina de destino s�o muito usadas em conex�es de rede apenas entre dois pontos (como ppp, plip, slip). Por padr�o, a interface � especificada como �ltimo argumento. Caso a interface precise especifica-la em outro lugar, ela dever� ser precedida da op��o `-dev'. Para adicionar uma rota padr�o para um endere�o que n�o se encontre na tabela de roteamento, utiliza-se o _gateway padr�o da rede_. Atrav�s do gateway padr�o � poss�vel especificar um computador (normalmente outro gateway) que os pacotes de rede ser�o enviados caso o endere�o n�o confira com os da tabela de roteamento. Para especificar o computador 192.168.1.1 como _gateway padr�o_ usamos: route add default gw 192.168.1.1 eth0 O _gateway padr�o_ pode ser visualizado atrav�s do comando `route -n' e verificando o campo `gateway'. A op��o `gw' acima, especifica que o pr�ximo argumento � um endere�o IP (de uma rede j� acess�vel atrav�s das tabelas de roteamento). O computador _gateway_ est� conectado a duas ou mais redes ao mesmo tempo. Quando seus dados precisam ser enviados para computadores fora da rede, eles s�o enviados atrav�s do computador _gateway_ e o _gateway_ os encaminham ao endere�o de destino. Desta forma, a resposta do servidor tamb�m � enviada atrav�s do _gateway_ para seu computador (� o caso de uma t�pica conex�o com a Internet). A nossa configura��o ficaria assim: route add -net 192.168.1.0 eth0 route add default gw 192.168.1.1 eth0 Para mais detalhes, veja a p�gina de manual do `route' ou o _NET3-4-HOWTO_. 4.6. Resolvedor de nomes (DNS)

-----------------------------_DNS_ significa Domain Name System (sistema de nomes de dom�nio). O _DNS_ converte os nomes de m�quinas para endere�os IPs que todas as m�quinas da Internet possuem. Ele faz o mapeamento do nome para o endere�o e do endere�o para o nome e algumas outras coisas. Um mapeamento � simplesmente uma associa��o entre duas coisas, neste caso um nome de computador, como www.metainfo.org, e o endere�o IP desta m�quina (ou endere�os) como 200.245.157.9. O _DNS_ foi criado com o objetivo de tornar as coisas mais f�ceis para o usu�rio, permitindo assim, a identifica��o de computadores na Internet ou redes locais atrav�s de nomes (� como se tiv�ssemos apenas que decorar o nome da pessoa ao inv�s de um n�mero de telefone). A parte respons�vel por traduzir os nomes como `www.nome.com.br' em um endere�o IP � chamada de _resolvedor de nomes_. O _resolvedor de nomes_ pode ser um banco de dados local (controlador por um arquivo ou programa) que converte automaticamente os nomes em endere�os IP ou atrav�s de _servidores DNS_ que fazem a busca em um banco de dados na Internet e retornam o endere�o IP do computador desejado. Um servidor DNS mais difundido na Internet � o `bind'. Atrav�s do DNS � necess�rio apenas decorar o endere�o sem precisar se preocupar com o endere�o IP (alguns usu�rios simplesmente n�o sabem que isto existe...). Se desejar mais detalhes sobre _DNS_, veja o documento DNS-HOWTO. 4.6.1. O que � um nome? ----------------------Voc� deve estar acostumado com o uso dos nomes de computadores na Internet, mas pode n�o entender como eles s�o organizados. Os nomes de dom�nio na Internet s�o uma estrutura hier�rquica, ou seja, eles tem uma estrutura semelhante aos diret�rios de seu sistema. Um _dom�nio_ � uma fam�lia ou grupo de nomes. Um dom�nio pode ser colocado em um _sub-dom�nio_. Um _dom�nio principal_ � um dom�nio que n�o � um sub-dom�nio. Os dom�nios principais s�o especificados na RFC-920. Alguns exemplos de dom�nios principais comuns s�o: * `COM' - Organiza��es Comerciais * `EDU' - Organiza��es Educacionais * `GOV' - Organiza��es Governamentais * `MIL' - Organiza��es Militares * `ORG' - Outras Organiza��es * `NET' - Organiza��es relacionadas com a Internet * `Identificador do Pa�s' - S�o duas letras que representam um pa�s em particular. Cada um dos dom�nios principais tem sub-dom�nios. Os dom�nios principais baseados no nome do pa�s s�o freq�entemente divididos em sub-dom�nios baseado nos dom�nios `.com', `.edu', `.gov', `.mil' e `.org'. Assim, por exemplo, voc� pode finaliza-lo com: `com.au' e `gov.au' para organiza��es comerciais e governamentais na Austr�lia; note que isto n�o � uma regra geral, as organiza��es de dom�nio atuais dependem da autoridade na escolha de nomes de cada dom�nio. Quando o endere�o n�o especifica o dom�nio principal, como o endere�o `www.unicamp.br', isto quer dizer que � uma organiza��o acad�mica.

O pr�ximo n�vel da divis�o representa o nome da organiza��o. Subdom�nios futuros variam em natureza, freq�entemente o pr�ximo n�vel do sub-dom�nio � baseado na estrutura departamental da organiza��o mas ela pode ser baseada em qualquer crit�rio considerado razo�vel e significantes pelos administradores de rede para a organiza��o. A por��o mais a direita do nome � sempre o nome �nico da m�quina chamado _hostname_, a por��o do nome a direita do hostname � chamado _nome de dom�nio_ e o nome completo � chamado _nome do dom�nio completamente qualificado_ (_Fully Qualified Domain Name_). Usando o computador `www.debian.org.br' como exemplo: * `br' - Pa�s onde o computador se encontra * `org' - Dom�nio principal * `debian' - Nome de Dom�nio * `www' - Nome do computador A localiza��o do computador `www.debian.org.br' atrav�s de servidores DNS na Internet obedece exatamente a seq��ncia de procura acima. Os administradores do dom�nio `debian.org.br' podem cadastrar quantos sub-dom�nios e computadores quiserem (como `www.non-us.debian.org.br' ou `cvs.debian.org.br'). 4.6.2. Arquivos de configura��o usados na resolu��o de nomes -----------------------------------------------------------Abaixo a descri��o dos arquivos usados no processo de resolver um nome no sistema `GNU/Linux'. 4.6.2.1. /etc/resolv.conf ------------------------O `/etc/resolv.conf' � o arquivo de configura��o principal do c�digo do resolvedor de nomes. Seu formato � um arquivo texto simples com um par�metro por linha e o endere�o de servidores DNS externos s�o especificados nele. Existem tr�s palavras chaves normalmente usadas que s�o: domain Especifica o nome do dom�nio local. search Especifica uma lista de nomes de dom�nio alternativos ao procurar por um computador, separados por espa�os. A linha search pode conter no m�ximo 6 dom�nios ou 256 caracteres. nameserver Especifica o endere�o IP de um servidor de nomes de dom�nio para resolu��o de nomes. Pode ser usado v�rias vezes. Como exemplo, o `/etc/resolv.conf' se parece com isto: domain maths.wu.edu.au search maths.wu.edu.au wu.edu.au nameserver 192.168.10.1 nameserver 192.168.12.1 Este exemplo especifica que o nome de dom�nio a adicionar ao nome n�o qualificado (ie hostnames sem o dom�nio) � `maths.wu.edu.au' e que se o computador n�o for encontrado naquele dom�nio ent�o a procura segue para o dom�nio `wu.edu.au' diretamente. Duas linhas de nomes de servidores foram especificadas, cada uma pode ser chamada pelo c�digo resolvedor de nomes para resolver o nome.

4.6.2.2. /etc/host.conf ----------------------O arquivo `/etc/host.conf' � o local onde � poss�vel configurar alguns �tens que gerenciam o c�digo do resolvedor de nomes. O formato deste arquivo � descrito em detalhes na p�gina de manual resolv+. Em quase todas as situa��es, o exemplo seguinte funcionar�: order hosts,bind multi on Este arquivo de configura��o diz ao resolvedor de nomes para checar o arquivo `/etc/hosts' (par�metro `hosts') antes de tentar verificar um _servidor de nomes_ (par�metro `bind') e retornar um endere�o IP v�lido para o computador procurado e _multi on_ retornar� todos os endere�os IP resolvidos no arquivo `/etc/hosts' ao inv�s do primeiro. Os seguintes par�metros podem ser adicionados para evitar ataques de IP spoofing: nospoof on spoofalert on O par�metro _nospoof on_ ativa a resolu��o reversa do nome da bibliteca resolv (para checar se o endere�o pertence realmente �quele nome) e o _spoofalert on_ registra falhas desta opera��o no `syslog'. 4.6.2.3. /etc/hosts ------------------O arquivo `/etc/hosts' cont�m uma rela��o entre o endere�o IP e o nome de computadores. A inclus�o de um computador neste arquivo dispenda a consulta de um servidor de nomes para obter um endere�o IP, sendo muito �til para m�quinas que s�o acessadas frequentemente. A desvantagem de fazer isto � que voc� mesmo precisar� manter este arquivo atualizado e se o endere�o IP de algum computador for modificado, esta altera��o dever� ser feita em cada um dos arquivos `hosts' das m�quinas da rede. Em um sistema bem gerenciado, os �nicos endere�os de computadores que aparecer�o neste arquivo ser�o da interface loopback e os nomes de computadores. # /etc/hosts 127.0.0.1 192.168.0.1

localhost loopback this.host.name

Voc� pode especificar mais que um nome de computador por linha como demonstrada pela primeira linha, a que identifica a interface loopback. 4.6.2.4. /etc/networks ---------------------O arquivo `/etc/networks' tem uma fun��o similar ao arquivos `/etc/hosts'. Ele cont�m um banco de dados simples de nomes de redes contra endere�os de redes. Seu formato se difere por dois campos por linha e seus campos s�o identificados como: Nome_da_Rede

Endere�o_da_Rede

Abaixo um exemplo de como se parece este arquivo: loopnet localnet amprnet

127.0.0.0 192.168.1.0 44.0.0.0

Quando usar comandos como `route', se um destino � uma rede e esta rede se encontra no arquivo `/etc/networks', ent�o o comando `route' mostrar� o _nome da rede_ ao inv�s de seu endere�o. 4.6.3. Executando um servidor de nomes -------------------------------------Se voc� planeja executar um servidor de nomes, voc� pode fazer isto facilmente. Por favor veja o documento `DNS-HOWTO' e quaisquer documentos inclu�dos em sua vers�o do BIND (Berkeley Internet Name Domain). 4.7. Servi�os de Rede --------------------_Servi�os de rede_ � o que est� dispon�vel para ser acessado pelo usu�rio. No TCP/IP, cada servi�o � associado a um n�mero chamado _porta_ que � onde o servidor espera pelas conex�es dos computadores clientes. Uma porta de rede pode se referenciada tanto pelo n�mero como pelo nome do servi�o. Abaixo, alguns exemplos de portas padr�es usadas em servi�os TCP/IP: * `21' - FTP (transfer�ncia de arquivos) * `23' - Telnet (terminal virtual remoto) * `25' - Smtp (envio de e-mails) * `53' - DNS (resolvedor de nomes) * `79' - Finger (detalhes sobre usu�rios do sistema) * `80' - http (protocolo www - transfer�ncia de p�ginas Internet) * `110' - Pop-3 (recebimento de mensagens) * `119' - Nntp (usado por programas de noticias) O arquivo padr�o respons�vel pelo mapeamento do nome dos servi�os e das portas mais utilizadas � o `/etc/services' (para detalhes sobre o seu formato, veja a Se��o 4.9.1, `/etc/services'). 4.7.1. Servi�os iniciados como Daemons de rede ---------------------------------------------Servi�os de rede iniciados como _daemons_ ficam residente o tempo todo na mem�ria `esperando' que algu�m se conecte (tamb�m chamado de _modo standalone_). Um exemplo de _daemon_ � o servidor proxy `squid' e o servidor web `Apache' operando no modo _daemon_. Alguns programas servidores oferecem a op��o de serem executados como _daemons_ ou atrav�s do _inetd_. � recomend�vel escolher _daemon_ se o servi�o for solicitado freq�entemente (como � o caso dos servidores web ou proxy). Para verificar se um programa est� rodando como _daemon_, basta digitar `ps ax' e procurar o nome do programa, em caso positivo ele � um _daemon_.

Normalmente os programas que s�o iniciados como daemons possuem seus pr�prios recursos de seguran�a/autentica��o para decidir quem tem ou n�o permiss�o de se conectar. 4.7.2. Servi�os iniciados atrav�s do inetd -----------------------------------------Servi�os iniciados pelo _inetd_ s�o carregados para a mem�ria somente quando s�o solicitados. O controle de quais servi�os podem ser carregados e seus par�metros, s�o feitos atrav�s do arquivo `/etc/inetd.conf'. Um _daemon_ chamado `inetd' l� as configura��es deste arquivo e permanece residente na mem�ria, esperando pela conex�o dos clientes. Quando uma conex�o � solicitada, o daemon _inetd_ verifica as permiss�es de acesso nos arquivos `/etc/hosts.allow' e `/etc/hosts.deny' e carrega o programa servidor correspondente no arquivo `/etc/inetd.conf'. Um arquivo tamb�m importante neste processo � o `/etc/services' que faz o mapeamento das portas e nomes dos servi�os. Alguns programas servidores oferecem a op��o de serem executados como _daemons_ ou atrav�s do _inetd_. � recomend�vel escolher _inetd_ se o servi�o n�o for solicitado freq�entemente (como � o caso de servidores `ftp', `telnet', `talk', etc). 4.7.2.1. /etc/inetd.conf -----------------------O arquivo `/etc/inetd.conf' � um arquivo de configura��o para o daemon servidor _inetd_. Sua fun��o � dizer ao `inetd' o que fazer quando receber uma requisi��o de conex�o para um servi�o em particular. Para cada servi�o que deseja aceitar conex�es, voc� precisa dizer ao _inetd_ qual daemon servidor executar e como executa-lo. Seu formato � tamb�m muito simples. � um arquivo texto com cada linha descrevendo um servi�o que deseja oferecer. Qualquer texto em uma linha seguindo uma "#" � ignorada e considerada um coment�rio. Cada linha cont�m sete campos separados por qualquer n�mero de espa�os em branco (tab ou espa�os). O formato geral � o seguinte: servi�o

tipo_soquete

proto

op��es

usu�rio

caminho_serv. op��es_serv.

servi�o � o servi�o relevante a este arquivo de configura��o pego do arquivo `/etc/services'. tipo_soquete Este campo descreve o tipo do soquete que este item utilizar�, valores permitidos s�o: `stream', `dgram', `raw', `rdm', ou `seqpacket'. Isto � um pouco t�cnico de natureza, mas como uma regra geral, todos os servi�os baseados em _tcp_ usam `stream' e todos os protocolos baseados em _udp_ usam `dgram'. Somente alguns tipos de daemons especiais de servidores usam os outros valores. protocolo O protocolo � considerado v�lido para esta item. Isto deve bater com um item apropriado no arquivo `/etc/services' e tipicamente

ser� tcp ou udp. Servidores baseados no Sun RPC (_Remote Procedure Call_), utilizam rpc/tcp ou rpc/udp. op��es Existem somente duas configura��es para este campo. A configura��o deste campo diz ao _inetd_ se o programa servidor de rede libera o soquete ap�s ele ser iniciado e ent�o se inetd pode iniciar outra c�pia na pr�xima requisi��o de conex�o, ou se o inetd deve aguardar e assumir que qualquer servidor j� em execu��o pegar� a nova requisi��o de conex�o. Este � um pequeno truque de trabalho, mas como uma regra, todos os servidores tcp devem ter este par�metro ajustado para _nowait_ e a maior parte dos servidores udp deve t�-lo ajustado para _wait_. Foi alertado que existem algumas excess�es a isto, assim deixo isto como exemplo se n�o estiver seguro. usu�rio Este campo descreve que conta de usu�rio usu�rio no arquivo `/etc/passwd' ser� escolhida como _dono_ do daemon de rede quando este for iniciado. Isto � muito �til se voc� deseja diminuir os riscos de seguran�a. Voc� pode ajustar o usu�rio de qualquer item para o usu�rio _nobody_, assim se a seguran�a do servidor de redes � quebrada, a possibilidade de problemas � minimizada. Normalmente este campo � ajustado para _root_, porque muitos servidores requerem privil�gios de usu�rio root para funcionarem corretamente. caminho_servidor Este campo � o caminho para o programa servidor atual que ser� executado. argumentos_servidor Este campo inclui o resto da linha e � opcional. Voc� pode colocar neste campo qualquer argumento da linha de comando que deseje passar para o daemon servidor quando for iniciado. Uma dica que pode aumentar significativamente a seguran�a de seu sistema � comentar (colocar uma `#'no inicio da linha) os servi�os que n�o ser�o utilizados. Abaixo um modelo de arquivo `/etc/inetd.conf' usado em sistemas `Debian': # /etc/inetd.conf: veja inetd(8) para mais detalhes. # # Banco de Dados de configura��es do servidor Internet # # # Linhas iniciando com "#:LABEL:" ou "##" n�o devem # ser alteradas a n�o ser que saiba o que est� fazendo! # # # Os pacotes devem modificar este arquivo usando update-inetd(8) # # <nome_servi�o> <proto> <usu�rio> <args> # #:INTERNO: Servi�os internos #echo stream tcp nowait root internal #echo dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal #discard stream tcp nowait root internal

#discard #daytime #daytime time #time

dgram udp stream tcp dgram udp stream tcp dgram udp wait

wait root internal nowait root internal wait root internal nowait root internal root internal

#:PADR�ES: Estes s�o servi�os padr�es. #:BSD: Shell, login, exec e #shell stream tcp #login stream tcp #exec stream tcp talk dgram udp ntalk dgram udp /usr/sbin/in.ntalkd

talk s�o protocolos BSD. nowait root /usr/sbin/tcpd /usr/sbin/in.rshd nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd wait nobody.tty /usr/sbin/tcpd /usr/sbin/in.talkd wait nobody.tty /usr/sbin/tcpd

#:MAIL: Mail, news e servi�os uucp. smtp stream tcp nowait

mail

/usr/sbin/exim exim -bs

#:INFO: Servi�os informativos #:BOOT: O servi�o Tftp � oferecido primariamente para a inicializa��o. Alguns sites # o executam somente em m�quinas atuando como "servidores de inicializa��o". #:RPC: Servi�os baseados em RPC #:HAM-RADIO: servi�os de r�dio amador #:OTHER: Outros servi�os 4.8. Seguran�a da Rede e controle de Acesso ------------------------------------------Deixe-me iniciar esta se��o lhe alertando que a seguran�a da rede em sua m�quina e ataques maliciosos s�o uma arte complexa. Uma regra importante �: "N�o ofere�a servi�os de rede que n�o deseja utilizar". Muitas distribui��es vem configuradas com v�rios tipos de servi�os que s�o iniciados automaticamente. Para melhorar, mesmo que insignificantemente, o n�vel de seguran�a em seu sistema voc� deve editar se arquivo `/etc/inetd.conf' e comentar (colocar uma "#") as linhas que cont�m servi�os que n�o utiliza. Bons candidatos s�o servi�os tais como: `shell', `login', `exec', `uucp', `ftp' e servi�os de informa��o tais como `finger', `netstat' e `sysstat'. Existem todos os tipos de mecanismos de seguran�a e controle de acesso, eu descreverei os mais importantes deles. 4.8.1. /etc/ftpusers -------------------O arquivo `/etc/ftpusers' � um mecanismo simples que lhe permite bloquear a conex�o de certos usu�rios via _ftp_. O arquivo `/etc/ftpusers' � lido pelo programa daemon ftp (_ftpd_) quando um

pedido de conex�o � recebido. O arquivo � uma lista simples de usu�rios que n�o tem permiss�o de se conectar. Ele se parece com: # /etc/ftpusers - login de usu�rios bloqueados via ftp root uucp bin mail 4.8.2. /etc/securetty --------------------O arquivo `/etc/securetty' lhe permite especificar que dispositivos `tty' que o usu�rio _root_ pode se conectar. O arquivo /etc/securetty � lido pelo programa login (normalmente `/bin/login'). Seu formato � uma lista de dispositivos `tty' onde a conex�o � permitida, em todos os outros, a entrada do usu�rio _root_ � bloqueada. # /etc/securetty - terminais que o usu�rio root pode se conectar tty1 tty2 tty3 tty4 4.8.3. O mecanismo de controle de acessos tcpd ---------------------------------------------O programa `tcpd' que voc� deve ter visto listado no mesmo arquivo `/etc/inetd.conf', oferece mecanismos de registro e controle de acesso para os servi�os que esta configurado para proteger. Ele � um tipo de firewall simples e f�cil de configurar que pode evitar tipos indesejados de ataques e registrar poss�veis tentativas de invas�o. Quando � executado pelo programa inetd, ele l� dos arquivos contendo regras de acesso e permite ou bloqueia o acesso ao servidor protegendo adequadamente. Ele procura nos arquivos de regras at� que uma regra confira. Se nenhuma regra conferir, ent�o ele assume que o acesso deve ser permitido a qualquer um. Os arquivos que ele procura em seq��ncia s�o: `/etc/hosts.allow' e `/etc/hosts.deny'. Eu descreverei cada um destes arquivos separadamente. Para uma descri��o completa desta facilidade, voc� deve verificar a p�gina de manual apropriada (hosts_access (5) � um bom ponto de partida). 4.8.3.1. /etc/hosts.allow ------------------------O arquivo `/etc/hosts.allow' � um arquivo de configura��o do programa `/usr/sbin/tcpd'. O arquivo `hosts.allow' cont�m regras descrevendo que hosts tem permiss�o de acessar um servi�o em sua m�quina. O formato do arquivo � muito simples: # /etc/hosts.allow #

# lista de servi�os: lista de hosts : comando lista de servi�os � uma lista de nomes de servi�os separados por v�rgula que esta regra se aplica. Exemplos de nomes de servi�os s�o: `ftpd', `telnetd' e `fingerd'. lista de hosts � uma lista de nomes de hosts separada por v�rgula. Voc� tamb�m pode usar endere�os IP's aqui. Adicionalmente, voc� pode especificar nomes de computadores ou endere�o IP usando caracteres coringas para atingir grupos de hosts. Exemplos incluem: `gw.vk2ktj.ampr.org' para conferir com um endere�o de computador espec�fico, `.uts.edu.au' para atingir qualquer endere�o de computador finalizando com aquele string. Use 200.200.200. para conferir com qualquer endere�o IP iniciando com estes d�gitos. Existem alguns par�metros especiais para simplificar a configura��o, alguns destes s�o: `ALL' atinge todos endere�os, `LOCAL' atinge qualquer computador que n�o cont�m um "." (ie. est� no mesmo dom�nio de sua m�quina) e `PARANOID' atinge qualquer computador que o nome n�o confere com seu endere�o (falsifica��o de nome). Existe tamb�m um �ltimo par�metro que � tamb�m �til: o par�metro `EXCEPT' lhe permite fazer uma lista de exce��es. Isto ser� coberto em um exemplo adiante. comando � um par�metro opcional. Este par�metro � o caminho completo de um comando que dever� ser executado toda a vez que esta regra conferir. Ele pode executar um comando para tentar identificar quem esta conectado pelo host remoto, ou gerar uma mensagem via E-Mail ou algum outro alerta para um administrador de rede que algu�m est� tentando se conectar. Existem um n�mero de expans�es que podem ser inclu�das, alguns exemplos comuns s�o: %h expande o endere�o do computador que est� conectado ou endere�o se ele n�o possuir um nome, %d o nome do daemon sendo chamado. Se o computador tiver permiss�o de acessar um servi�o atrav�s do `/etc/hosts.allow', ent�o o `/etc/hosts.deny' n�o ser� consultado e o acesso ser� permitido. Como exemplo: # /etc/hosts.allow # # Permite que qualquer um envie e-mails in.smtpd: ALL # Permitir telnet e ftp somente para hosts locais e myhost.athome.org.au in.telnetd, in.ftpd: LOCAL, myhost.athome.org.au # Permitir finger para qualquer um mas manter um registro de quem � in.fingerd: ALL: (finger @%h | mail -s "finger from %h" root) Qualquer modifica��o no arquivo `/etc/hosts.allow' entrar� em a��o ap�s reiniciar o daemon _inetd_. Isto pode ser feito com o comando `kill -HUP [pid do inetd]', o `pid' do _inetd_ pode ser obtido com o comando `ps ax|grep inetd'. 4.8.3.2. /etc/hosts.deny ------------------------

O arquivo `/etc/hosts.deny' � um arquivo de configura��o das regras descrevendo quais computadores n�o tem a permiss�o de acessar um servi�o em sua m�quina. Um modelo simples deste arquivo se parece com isto: # /etc/hosts.deny # # Bloqueia o acesso de computadores com endere�os suspeitos ALL: PARANOID # # Bloqueia todos os computadores ALL: ALL A entrada `PARANOID' � realmente redundante porque a outra entrada nega tudo. Qualquer uma destas linhas pode fazer uma seguran�a padr�o dependendo de seu requerimento em particular. Tendo um padr�o _ALL: ALL_ no arquivo _/etc/hosts.deny_ e ent�o ativando especificamente os servi�os e permitindo computadores que voc� deseja no arquivo `/etc/hosts.allow' � a configura��o mais segura. Qualquer modifica��o no arquivo `/etc/hosts.deny' entrar� em a��o ap�s reiniciar o daemon _inetd_. Isto pode ser feito com o comando `kill -HUP [pid do inetd]', o `pid' do _inetd_ pode ser obtido com o comando `ps ax|grep inetd'. 4.8.3.3. /etc/hosts.equiv e /etc/shosts.equiv --------------------------------------------O arquivo `/etc/hosts.equiv' � usado para garantir/bloquear certos computadores e usu�rios o direito de acesso aos servi�os "r*" (rsh, rexec, rcp, etc) sem precisar fornecer uma senha. O `/etc/shosts.equiv' � equivalente mas � lido somente pelo servi�o ssh. Esta fun��o � �til em um ambiente seguro onde voc� controla todas as m�quinas, mesmo assim isto � um perigo de seguran�a (veja nas observa��es). O formato deste arquivo � o seguinte: #Acesso +

M�quina maquina2.dominio.com.br maquina4.dominio.com.br maquina1.dominio.com.br

Usu�rio usuario2 usuario2 +@usuarios

O primeiro campo especifica se o acesso ser� permitido ou negado caso o segundo e terceiro campo confiram. Por raz�es de seguran�a deve ser especificado o FQDN no caso de nomes de m�quinas. Grupos de rede podem ser especificados usando a sintaxe "+@grupo". Para aumentar a seguran�a, n�o use este mecanismo e encoraje seus usu�rios a tamb�m n�o usar o arquivo `.rhosts'. _ATEN��O_ O uso do sinal "+" sozinho significa permitir acesso livre a qualquer pessoa de qualquer lugar. Se este mecanismo for mesmo necess�rio, tenha muita aten��o na especifica��o de seus campos. Evita tamb�m A TODO CUSTO uso de nomes de usu�rios (a n�o ser para negar o acesso), pois � facil forjar o login, entrar no sistema tomar

conta de processos (como por exemplo do servidor `Apache' rodando sob o usu�rio `www-data' ou at� mesmo o _root_), causando enormes estragos. 4.8.3.4. Verificando a seguran�a do TCPD e a sintaxe dos arquivos ----------------------------------------------------------------O utilit�rio `tcpdchk' � �til para verificar problemas nos arquivos `hosts.allow' e `hosts.deny'. Quando � executado ele verifica a sintaxe destes arquivos e relata problemas, caso eles existam. Outro utilit�rio �til � o `tcpdmatch', o que ele faz � permitir que voc� simule a tentativa de conex�es ao seu sistema e observar ser ela ser� permitida ou bloqueada pelos arquivos `hosts.allow' e `hosts.deny'. � importante mostrar na pr�tica como o `tcpdmatch' funciona atrav�s de um exemplo simulando um teste simples em um sistema com a configura��o padr�o de acesso restrito: * O arquivo `hosts.allow' cont�m as seguintes linhas: ALL: 127.0.0.1 in.talkd, in.ntalkd: ALL in.fingerd: 192.168.1. EXCEPT 192.168.1.30 A primeira linha permite o loopback (127.0.0.1) acessar qualquer servi�o TCP/UDP em nosso computador, a segunda linha permite qualquer um acessar os servidor TALK (n�s desejamos que o sistema nos avise quando algu�m desejar conversar) e a terceira somente permite enviar dados do `finger' para computadores dentro de nossa rede privada (exceto para 192.168.1.30). * O arquivo `hosts.deny' cont�m a seguinte linha: ALL: ALL Qualquer outra conex�o ser� explicitamente derrubada. Vamos aos testes, digitando: "tcpdmatch in.fingerd 127.0.0.1" (verificar se o endere�o 127.0.0.1 tem acesso ao finger): client: server: matched: access:

address 127.0.0.1 process in.fingerd /etc/hosts.allow line 1 granted

Ok, temos acesso garantido com especificado pela linha 1 do `hosts.allow' (a primeira linha que confere � usada). Agora "tcpdmatch in.fingerd 192.168.1.29": client: server: matched: access:

address 192.168.1.29 process in.fingerd /etc/hosts.allow line 3 granted

O acesso foi permitido atrav�s da linha 3 do `hosts.allow'. "tcpdmatch in.fingerd 192.168.1.29":

Agora

client: server: matched: access:

address 192.168.1.30 process in.fingerd /etc/hosts.deny line 1 denied

O que aconteceu? como a linha 2 do `hosts.allow' permite o acesso a todos os computadores 192.168.1.* exceto 192.168.1.30, ela n�o bateu, ent�o o processamento partiu para o `hosts.deny' que nega todos os servi�os para qualquer endere�o. Agora um �ltimo exemplo: "tcpdmatch in.talkd www.debian.org" client: server: matched: access:

address www.debian.org process in.talkd /etc/hosts.allow line 2 granted

Ok, na linha 2 qualquer computador pode te chamar para conversar via talk na rede, mas para o endere�o DNS conferir com um IP especificado, o `GNU/Linux' faz a resolu��o DNS, convertendo o endere�o para IP e verificando se ele possui acesso. No lugar do endere�o tamb�m pode ser usado a forma `daemon@computador' ou `cliente@computador' para verificar respectivamente o acesso de daemons e cliente de determinados computadores aos servi�os da rede. Como pode ver o TCPD ajuda a aumentar a seguran�a do seu sistema, mas n�o confie nele al�m do uso em um sistema simples, � necess�rio o uso de um firewall verdadeiro para controlar minuciosamente a seguran�a do seu sistema e dos pacotes que atravessam os protocolos, roteamento e as interfaces de rede. Se este for o caso aprenda a trabalhar a fundo com firewalls e implemente a seguran�a da sua rede da forma que melhor planejar. 4.8.4. Firewall --------------Dentre todos os m�todos de seguran�a, o _Firewall_ � o mais seguro. A fun��o do Firewall � bloquear determinados tipos de tr�fego de um endere�o ou para uma porta local ou permitir o acesso de determinados usu�rios mas bloquear outros, bloquear a falsifica��o de endere�os, redirecionar tr�fego da rede, ping da morte, etc. A implementa��o de um bom firewall depender� da experi�ncia, conhecimentos de rede (protocolos, roteamento, interfaces, endere�amento, masquerade, etc), da rede local, e sistema em geral do Administrador de redes, a seguran�a de sua rede e seus dados dependem da escolha do profissional correto, que entenda a fundo o TCP/IP, roteamento, protocolos, servi�os e outros assuntos ligados a rede. Freq�entemente tem se ouvido falar de empresas que tiveram seus sistemas invadidos, em parte isto � devido a escolha do sistema operacional indevido mas na maioria das vezes o motivo � a falta de investimento da empresa em pol�ticas de seguran�a, que algumas simplesmente consideram a seguran�a de seus dados e sigilo interno como uma `despesa a mais'. Um bom firewall que recomendo � o `ipchains', `Sinus' e o `TIS'.

Particularmente gosto muito de usar o `ipchains' e o `Sinus' e � poss�vel fazer coisas inimagin�veis programando scripts para interagirem com estes programas... 4.9. Outros arquivos de configura��o relacionados com a rede -----------------------------------------------------------4.9.1. /etc/services -------------------O arquivo `/etc/services' � um banco de dados simples que associa um nome amig�vel a humanos a uma porta de servi�o amig�vel a m�quinas. � um arquivo texto de formato muito simples, cada linha representa um item no banco de dados. Cada item � dividido em tr�s campos separados por qualquer n�mero de espa�os em branco (tab ou espa�os). Os campos s�o: nome

porta/protocolo

apelido

# coment�rio

name Uma palavra simples que representa o nome do servi�o sendo descrito. porta/protocolo Este campo � dividido em dois sub-campos. * `porta' - Um n�mero que especifica o n�mero da porta em que o servi�o estar� dispon�vel. Muitos dos servi�os comuns tem designados um n�mero de servi�o. Estes est�o descritos no RFC-1340. * `protocolo' - Este sub-campo pode ser ajustado para _tcp_ ou _udp_. � importante notar que o item _18/tcp_ � muito diferente do item _18/udp_ e que n�o existe raz�o t�cnica porque o mesmo servi�o precisa existir em ambos. Normalmente o senso comum prevalece e que somente se um servi�o esta dispon�vel em ambos os protocolos _tcp_ e _udp_, voc� precisar� especificar ambos. apelidos Outros nomes podem ser usados para se referir a entrada deste servi�o. coment�rio Qualquer texto aparecendo em uma linha ap�s um caracter "#" � ignorado e tratado como coment�rio. 4.9.2. /etc/protocols --------------------O arquivo `/etc/protocols' � um banco de dados que mapeia n�meros de identifica��o de protocolos novamente em nomes de protocolos. Isto � usado por programadores para permiti-los especificar protocolos por nomes em seus programas e tamb�m por alguns programas tal como _tcpdump_ permitindo-os mostrar _nomes_ ao inv�s de _n�meros_ em sua sa�da. A sintaxe geral deste arquivo �: nomeprotocolo

n�mero

apelidos

4.10. Definindo diversos endere�os IP para a mesma interface de rede --------------------------------------------------------------------

Este interessante e �til recurso do `Linux' � conhecido como IP Aliasing e permite fazer nossa interface de rede local responder por diversos endere�os IP diferentes, mesmo sendo de classes de rede diferentes. Para usu�rios externos, a impress�o � que a rede tem "muitas" m�quinas, quando na realidade apenas uma responde por todos estes endere�os virtuais. Outra �til aplica��o � durante a transi��o de uma faixa de endere�os na rede de `192.168.0.*' para `192.168.1.*', por exemplo, isto poder� ser feito sem gerar transtornos na rede e sem parar o servidor. Este recurso � a base para a constru��o de M�quinas virtuais baseadas em endere�o IP (usado por daemons como `Apache', `proftpd' e outros). A configura��o deste recurso � simples, supondo que temos a interface `eth0' com o endere�o atual `192.168.1.1': 1. Compile seu kernel com o suporte a IP Aliasing (embutido ou como m�dulo). 2. Digite `ifconfig eth0:0 192.168.1.10' - Isto cria um apelido para a placa de rede chamado `eth0:0' que responder� as requisi��es para o endere�o `192.168.1.10'. 3. Execute o comando `ifconfig' (sem par�metros) para verificar se a nova interface foi ativada. Voc� dever� ver algo como: eth0 Encapsulamento do Link: Ethernet Endere�o de HW 00:80:AE:B3:AA:AA inet end.: 192.168.1.1 Bcast:192.168.1.255 Masc:255.255.255.0 UP BROADCASTRUNNING MULTICAST MTU:1500 M�trica:1 RX packets:979 errors:0 dropped:0 overruns:0 frame:0 TX packets:1228 errors:0 dropped:0 overruns:0 carrier:0 colis�es:1 txqueuelen:100 RX bytes:71516 (69.8 Kb) TX bytes:1146031 (1.0 Mb) IRQ:10 Endere�o de E/S:0x300 eth0:0

Encapsulamento do Link: Ethernet Endere�o de HW 00:80:AE:B3:AA:AA inet end.: 192.168.1.10 Bcast:192.168.1.255 Masc:255.255.255.0 UP BROADCASTRUNNING MULTICAST MTU:1500 M�trica:1 IRQ:10 Endere�o de E/S:0x300 Note que o endere�o de Hardware � o mesmo para ambos os dispositivos (porque a mesma placa de rede est� respondendo endere�os diferentes). 4. Se necess�rio ajuste as rotas ou gateway com o comando `route' (veja Se��o 4.5.1, `Configurando uma rota no Linux'). Podem ser especificados quantos apelidos voc� quiser e para qualquer faixa de endere�os que desejar: ifconfig eth0:1 192.168.1.11 ifconfig eth0:2 10.0.0.1 ifconfig eth0:3 200.132.12.10 Para desativar uma interface virtual, utilize o comando: `ifconfig eth0:1 down'. _ATEN��O:_ Quando voc� desativa uma interface f�sica (`eth0'), todas as interfaces virtuais tamb�m s�o desativadas.

------------------------------------------------------------------------------5. Arquivos e daemons de Log ----------------------------

A atividade dos programas s�o registradas em arquivos localizados em `/var/log' . Estes arquivos de registros s�o chamados de _logs_ e cont�m a data, hora e a mensagem emitida pelo programa (viola��es do sistema, mensagens de error, alerta e outros eventos) entre outros campos. Enfim, muitos detalhes �teis ao administrador tanto para acompanhar o funcionamento do seu sistema, comportamento dos programas ou ajudar na solu��o e preven��o de problemas. Alguns programas como o `Apache', `exim', `ircd' e `squid' criam diversos arquivos de log e por este motivo estes s�o organizados em sub-diret�rios (a mesma t�cnica � usada nos arquivos de configura��o em `/etc', conforme a padr�o FHS atual). 5.1. Formato do arquivo de log -----------------------------Um arquivo de log � normalmente composto pelos seguintes campos: Data|Hora|M�quina|daemon|mensagem O campo _m�quina_ � o nome do computador que registrou a mensagem (a m�quina pode atuar como um servidor de logs registrando mensagens de diversos computadores em sua rede). O campo _daemon_ indica qual programa gravou a _mensagem_. O uso dos utilit�rios do console pode ajudar muito na pesquisa e monitora��o dos logs, por exemplo, para obter todas as mensagens do daemon `kernel' da esta��o de trabalho `wrk1', eliminando os campos "wrk1" e "kernel": cat /var/log/*|grep 'wrk1'|grep 'kernel'|awk '{print $1 $2 $3 $6 $7 $8 $9 $10 $11 $12}' Os par�metros "$1", "$2" do comando `awk' indica que campos ser�o listados, (omitimos $4 e $5 que s�o respectivamente "wrk1" e "kernel"). Um bom utilit�rio para monitora��o de logs est� documentado em Se��o 5.4.1, `logcheck'. 5.2. Daemons de log do sistema -----------------------------Os daemons de log do sistema registram as mensagens de sa�da do kernel (`klogd') e sistema (`syslogd') nos arquivos em `/var/log' . A classifica��o de qual arquivo em `/var/log' receber� qual tipo de mensagem � controlado pelo arquivo de configura��o `/etc/syslog.conf' atrav�s de _facilidades_ e _n�veis_ (veja Se��o 5.2.1.1, `Arquivo de configura��o `syslog.conf'' para detalhes). 5.2.1. syslogd -------------Este daemon controla o registro de logs do sistema. `syslogd [_op��es_]'

_op��es_ -f Especifica um arquivo de configura��o alternativo ao `/etc/syslog.conf'. -h Permite redirecionar mensagens recebidas a outros servidores de logs especificados. -l [computadores] Especifica um ou mais computadores (separados por ":") que dever�o ser registrados somente com o nome de m�quina ao inv�s do FQDN (nome completo, incluindo dom�nio). -m [minutos] Intervalo em _minutos_ que o syslog mostrar� a mensagem `--MARK--'. O valor padr�o padr�o � 20 minutos, 0 desativa. -n Evita que o processo caia automaticamente em background. Necess�rio principalmente se o `syslogd' for controlado pelo `init'. -p [soquete] Especifica um soquete UNIX alternativo ao inv�s de usar o padr�o `/dev/log'. -r Permite o recebimento de mensagens atrav�s da rede atrav�s da porta UDP 514. Esta op��o � �til para criar um servidor de logs centralizado na rede. Por padr�o, o servidor `syslog' rejeitar� conex�es externas. -s [dom�nios] Especifica a lista de dom�nios (separados por ":") que dever�o ser retirados antes de enviados ao log. -a [soquetes] Especifica soquetes adicionais que ser�o monitorados. Esta op��o ser� necess�ria se estiver usando um ambiente `chroot'. � poss�vel usar at� 19 soquetes adicionais -d Ativa o modo de depura��o do `syslog'. O syslog permanecer� operando em primeiro plano e mostrar� as mensagens no terminal atual. Na distribui��o `Debian', o daemon `syslogd' � iniciado atrav�s do script `/etc/init.d/sysklogd'. 5.2.1.1. Arquivo de configura��o `syslog.conf' ---------------------------------------------O arquivo de configura��o `/etc/syslog.conf' possui o seguinte formato: facilidade.n�vel

destino

A _facilidade_ e _n�vel_ s�o separadas por um "." e cont�m par�metros que definem o que ser� registrado nos arquivos de log do sistema: * `facilidade' - � usada para especificar que tipo de programa est� enviando a mensagem. Os seguintes n�veis s�o permitidos (em ordem alfab�tica): * `auth' - Mensagens de seguran�a/autoriza��o (� recomend�vel usar authpriv ao inv�s deste). * `authpriv' - Mensagens de seguran�a/autoriza��o (privativas).

* `cron' - Daemons de agendamento (`cron' e `at'). * `daemon' - Outros daemons do sistema que n�o possuem facilidades espec�ficas. * `ftp' - Daemon de ftp do sistema. * `kern' - Mensagens do kernel. * `lpr' - Subsistema de impress�o. * `local0 a local7' - Reservados para uso local. * `mail' - Subsistema de e-mail. * `news' - Subsistema de not�cias da USENET. * `security' - Sin�nimo para a facilidade `auth' (evite usa-la). * `syslog' - Mensagens internas geradas pelo `syslogd'. * `user' - Mensagens gen�ricas de n�vel do usu�rio. * `uucp' - Subsistema de UUCP. * `*' - Confere com todas as facilidades. Mais de uma facilidade pode ser especificada na mesma linha do `syslog.conf' separando-as com ",". * `n�vel' - Especifica a import�ncia da mensagem. Os seguintes n�veis s�o permitidos (em ordem de import�ncia invertida; da mais para a menos importante): * `emerg' - O sistema est� inutiliz�vel. * `alert' - Uma a��o deve ser tomada imediatamente para resolver o problema. * `crit' - Condi��es cr�ticas. * `err' - Condi��es de erro. * `warning' - Condi��es de alerta. * `notice' - Condi��o normal, mas significante. * `info' - Mensagens informativas. * `debug' - Mensagens de depura��o. * `*' - Confere com todos os n�veis. * `none' - Nenhuma prioridade. Al�m destes n�veis os seguintes sin�nimos est�o dispon�veis: * `error' - Sin�nimo para o n�vel err. * `panic' - Sin�nimo para o n�vel emerg. * `warn' - Sin�nimo para o n�vel warning. * `destino' - O destino das mensagens pode ser um arquivo, um pipe (se iniciado por um "|"), um computador remoto (se iniciado por uma "@"), determinados usu�rios do sistema (especificando os logins separados por v�rgula) ou para todos os usu�rios logados via `wall' (usando "*"). Todas as mensagens com o n�vel especificado e superiores a esta especificadas no `syslog.conf' ser�o registradas, de acordo com as op��es usadas. Conjuntos de _facilidades_ e _n�veis_ podem ser agrupadas separando-as por ";". OBS1: Sempre use TABS ao inv�s de espa�os para separar os par�metros do `syslog.conf'. OBS2: Algumas facilidades como `security', emitem um beep de alerta no sistema e enviam uma mensagem para o console, como forma de alerta ao administrador e usu�rios logados no sistema. Existem ainda 4 caracteres que garantes fun��es especiais: "*", "=", "!" e "-": * "*" - Todas as mensagens da _facilidade_ especificada ser�o redirecionadas. * "=" - Somente o _n�vel_ especificado ser� registrado. * "!" - Todos os _n�veis_ especificados e maiores N�O ser�o

registrados. * "-" - Pode ser usado para desativar o sync imediato do arquivo ap�s sua grava��o. Os caracteres especiais "=" e "!" podem ser combinados em uma mesma regra. Exemplo: Veja abaixo um exemplo de um arquivo `/etc/syslog.conf' padr�o de sistemas `Debian' # # Primeiro alguns arquivos de log padr�es. Registrados por facilidade # auth,authpriv.* *.*;auth,authpriv.none cron.* daemon.* kern.* lpr.* mail.* user.* uucp.*

/var/log/auth.log -/var/log/syslog /var/log/cron.log -/var/log/daemon.log -/var/log/kern.log -/var/log/lpr.log /var/log/mail.log -/var/log/user.log -/var/log/uucp.log

# # Registro de logs do sistema de mensagens. Divididos para facilitar # a cria��o de scripts para manipular estes arquivos. # mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # Registro para o sistema de news INN # news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice # # Alguns arquivos de registro "pega-tudo". # S�o usadas "," para especificar mais de uma prioridade (por # exemplo, "auth,authpriv.none") e ";" para especificar mais de uma # facilidade.n�vel que ser� gravada naquele arquivo. # Isto permite deixar as regras consideravelmente menores e mais leg�veis # *.=debug;\ auth,authpriv.none;\ news.none;mail.none -/var/log/debug *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages # # Emerg�ncias s�o enviadas para qualquer um que estiver logado no sistema. Isto # � feito atrav�s da especifica��o do "*" como destino das mensagens e s�o # enviadas atrav�s do comando wall. # *.emerg *

# # Eu gosto de ter mensagens mostradas no console, mas somente em consoles que # n�o utilizo. # #daemon,mail.*;\ # news.=crit;news.=err;news.=notice;\ # *.=debug;*.=info;\ # *.=notice;*.=warn /dev/tty8 # O pipe /dev/xconsole � usado pelo utilit�rio "xconsole". Para usa-lo, # voc� deve executar o "xconsole" com a op��o "-file": # # $ xconsole -file /dev/xconsole [...] # # NOTA: ajuste as regras abaixo, ou ficar� maluco se tiver um um site # muito movimentado... # daemon.*;mail.*;\ news.crit;news.err;news.notice;\ *.=debug;*.=info;\ *.=notice;*.=warn |/dev/xconsole # A linha baixo envia mensagens importantes para o console em que # estamos trabalhando logados (principalmente para quem gosta de ter # controle total sobre o que est� acontecendo com seu sistema). *.err;kern.debug;auth.notice;mail.crit /dev/console 5.2.2. klogd -----------Este daemon controla o registro de mensagens do kernel. Ele monitora as mensagens do kernel e as envia para o daemon de monitoramento `syslogd', por padr�o. `klogd [_op��es_]' _op��es_ -d Ativa o modo de depura��o do daemon -f [arquivo] Envia as mensagens do kernel para o arquivo especificado ao inv�s de enviar ao daemon do `syslog' -i Envia um sinal para o daemon recarregar os s�mbolos de m�dulos do kernel. -I Envia um sinal para o daemon recarregar os s�mbolos est�ticos e de m�dulos do kernel. -n Evita a opera��o em segundo plano. �til se iniciado pelo `init' -k [arquivo] Especifica o arquivo que cont�m os s�mbolos do kernel. Exemplos deste arquivo est�o localizados em `/boot/System.map-xx.xx.xx'. -o Faz com que o daemon leia e registre todas as mensagens encontradas nos buffers do kernel, ap�s isto o daemon � encerrado.

-p

-s

Ativa o modo paran�ia. Isto far� o `klogd' somente carregar detalhes sobre os m�dulos quando os caracteres `Oops' forem detectados nas mensagens do kernel. � recomend�vel ter sempre a �ltima vers�o do klogd e evitar a utiliza��o desta op��o em ambientes cr�ticos. For�a a utiliza��o da interface de chamadas do sistema para comunica��o com o kernel.

-x

Esconde tradu��o EIP, assim ele n�o l� o arquivo `/boot/System.map-xx-xx-xx'. A especifica��o de um arquivo com a op��o `-k' � necess�ria se desejar que sejam mostradas a tabela de s�mbolos ao inv�s de endere�os num�ricos do kernel. 5.3. logger ----------Este comando permite enviar uma mensagem nos log do sistema. A mensagem � enviada aos logs via daemon `syslogd' ou via soquete do sistema, � poss�vel especificar a prioridade, n�vel, um nome identificando o processo, etc. Seu uso � muito �til em shell scripts ou em outros eventos do sistema. `logger [_op��es_] [_mensagem_]' Onde: _mensagem_ Mensagem que ser� enviada ao daemon _syslog_ _op��es_ -i Registra o PID do processo -s Envia a mensagem ambos para a sa�da padr�o (STDOUT) e syslog. -f [arquivo] Envia o conte�do do arquivo especificado como _mensagem_ ao syslog. -t [nome] Especifica o nome do processo respons�vel pelo log que ser� exibido antes do PID na mensagem do syslog. -p [prioridade] Especifica a prioridade da mensagem do syslog, especificada como `facilidade.n�vel'. Veja os tipos de prioridade/n�veis em Se��o 5.2.1.1, `Arquivo de configura��o `syslog.conf''. O valor padr�o _prioridade.n�vel_ � _user.notice_ -u [soquete] Envia a mensagem para o [soquete] especificado ao inv�s do syslog Mais detalhes sobre o funcionamento sobre o daemon de log do sistema `syslogd', pode ser encontrado em Se��o 5.2.1, `syslogd' Exemplos: `logger -i -t focalinux Teste teste teste', `logger -i -f /tmp/mensagem -p security.emerg' 5.4. Programas �teis para monitora��o e gerenciamento de arquivos de logs -------------------------------------------------------------------------

5.4.1. logcheck --------------� um programa usado para enviar um e-mail periodicamente ao administrador do sistema (atrav�s do `cron' ou outro daemon com a mesma fun��o) alertando sobre os eventos que ocorreram desde a �ltima execu��o do programa. As mensagens do `logcheck' s�o tratadas por arquivos em `/etc/logcheck' e organizadas em categorias antes de ser enviada por e-mail, isto garante muita praticidade na interpreta��o dos eventos ocorridos no sistema. As categorias s�o organizadas da mais importantes para a menos importante, e v�o desde "Hacking em andamento" (provid�ncias devem ser tomadas imediatamente para resolver a situa��o) at� "eventos anormais do sistema" (mensagens de inicializa��o, mensagens dos daemons do sistema, etc.). O tipo de mensagem que ser� inclu�da/ignorada nos logs enviados podem ser personalizadas pelo administrador do sistema atrav�s dos arquivos/diret�rios dentro de `/etc/logcheck'. Nomes de arquivos/diret�rios contendo a palavra "ignore" s�o usados para armazenar express�es regulares que N�O ser�o enviadas pelo `logcheck'. � permitido o uso de express�es regulares `perl/sed' para especificar as mensagens nos arquivos de log. 5.4.2. logrotate ---------------Usado para fazer backups dos logs atuais do sistema (programado via `cron', ou outro daemon com a mesma fun��o) e criando novos arquivos de logs que ser�o usados pelo sistema. Opcionalmente os arquivos de logs antigos ser�o compactados para diminuir a utiliza��o de espa�o em disco ou enviados por e-mail ao administrador. A rota��o dos arquivos de logs proporciona maior agilidade quando precisamos encontrar algum detalhe �til (que seria mais dif�cil de se achar em um arquivo de log de 10MB ou maior). A rota��o de logs � feita de acordo com o tamanho do arquivo de logs especificado, mas a op��o _-f_ pode ser usada para "for�ar" a rota��o de logs. A op��o _-d_ fornece mais detalhes sobre o que o `logrotate' est� fazendo. Seu arquivo principal de configura��o � o `/etc/logrotate.conf'. Um modelo deste tipo de arquivo � o seguinte: #### Estas op��es afetam globalmente o funcionamento do logrotate # roda os arquivos de log semanalmente weekly # mant�m as �ltimas 4 c�pias de logs anteriores rotate 4 # Erros de n�o exist�ncia dos logs s�o enviados para o usu�rio root mail root # Cria novos arquivos de log (vazios) ap�s rodar os antigos create # Descomente isso se desejar seus arquivos de logs compactados. O par�metro

# delaycompress � usado para que o primeiro log rodado seja mantido # descompactado compress delaycompress # Executam os scripts em prerotate e postrotate a cada vez que os logs # forem rodados. nosharedscripts # Definimos um diret�rio que poder� conter defini��es individuais para # diversos servi�os no sistema, eles podem ir neste arquivo mas # diversas configura��es individuais podem deixar a interpreta��o # deste arquivo confusa. include /etc/logrotate.d # Define op��es espec�ficas para a rota��o mensal de /var/log/wtmp, o novo arquivo # de log somente ser� rodados caso tenha mais de 5MB (size 5M), ser� criado # com a permiss�o 0664 e pertencer� ao usu�rio root grupo utmp # (create 0664 root utmp) e ser� mantida somente uma c�pia do log anterior. # (rotate 1) /var/log/wtmp { monthly create 0664 root utmp size 5M rotate 1 } # Define op��es espec�ficas para a rota��o mensal de /var/log/btmp, se o arquivo # n�o existir n�o ser� necess�rio gerar alertas (missinkok) que ser�o enviados # ao administrador. O novo arquivo criado dever� ter a permiss�o 0664 com o # dono root e grupo utmp (create 0664 root utmp) e ser� # mantida somente uma c�pia do log anterior. /var/log/btmp { missingok monthly create 0664 root utmp rotate 1 } # Define op��es espec�ficas para a rota��o mensal de /var/log/lastlog, o novo # arquivo ser� criado com a permiss�o 0664 com o dono root e grupo # utmp e ser� mantida somente uma c�pia do arquivo de log anterior # (rotate 1). /var/log/lastlog { missingok monthly create 0664 root utmp rotate 1 } # # # # # # #

Define op��es espec�ficas para a rota��o di�ria de /var/log/messages, o arquivo ser� rodado se atingir o tamanho de 1Mb, ent�o o novo arquivo ser� criado com as mesmas permiss�es do arquivo anterior. O comando killall -1 syslogd ser� executado ap�s a rota��o para que o daemon syslogd funcione corretamente mas somente uma vez durante a rota��o de v�rios arquivos de logs (sharedscripts). Ser�o mantidas as 10 �ltimas c�pias do arquivo /var/log/messages

# compactadas (o par�metro compress foi especificado na se��o global deste # arquivo de configura��o). /var/log/messages { daily size 1M sharedscripts postrotate /sbin/killall -1 syslogd endscript rotate 10 } # Define op��es espec�ficas para a rota��o mensal dos arquivos em /var/log/mirror/*, # a falta desses arquivos n�o precisa ser notificada ao administrador (missingok), # mesmo assim o par�metro "nomail" evitar� isto de qualquer forma. Os logs # rodados n�o ser�o compactados (nocompress) e ser�o mantidas as �ltimas 7 c�pias # dos logs. /var/log/mirror/* { montly nomail missingok nocompress rotate 7 } # logs espec�ficos do sistema podem ser configurados aqui. As op��es padr�es e # definidas na se��o global deste arquivo ser�o usadas para processar os # arquivos de logs restantes. Qualquer defini��o de par�metro especificado no arquivo de configura��o, substituir� as defini��es anteriores. Quando o n�mero m�ximo de logs mantidos pela op��o _rotate [num]_ � atingida, os logs eliminados ser�o enviados para o usu�rio especificado na op��o _mail [email]_. A utiliza��o da diretiva _nomail_ evita isso. _OBS:_ � importante enviar um sinal HUP ao programa que grava para aquele arquivo de log para que n�o ocorram problemas ap�s a rota��o, isto � feito usando o par�metro _postrotate_. 5.5. Configurando um servidor de logs ------------------------------------As mensagens das m�quinas de sua rede podem ser centralizadas em uma �nica m�quina, isto facilita o gerenciamento, an�lise e solu��o de problemas que ocorrem nas m�quinas da rede. Mais importante ainda � que qualquer invas�o a esta��o de trabalho n�o ser� registrada localmente (podendo ser apagada posteriormente pelo invasor, isso � comum). Configurando o servidor de logs Adicione a op��o _-r_ ao iniciar o daemon `syslogd' para aceitar logs enviados das m�quinas clientes. Na distribui��o `Debian' modifique o arquivo `/etc/init.d/sysklogd' colocando a op��o _-r_ na vari�vel <SYSLOGD> e reinicie o servi�o usando `./sysklogd restart'. Adicionalmente poder�o ser usadas as op��es _-l m�quina_ (� um "L" min�sculo n�o uma letra "I") para registrar o nome FQDN da

m�quina e _-h_ para redirecionar conex�es a outros servidores de logs (veja Se��o 5.2.1, `syslogd'). Configurando m�quinas cliente Modifique o arquivo `/etc/syslogd.conf' (veja Se��o 5.2.1.1, `Arquivo de configura��o `syslog.conf'' colocando o nome do computador seguido de "@" para redirecionar as mensagens dos logs: auth,authpriv.* @servlog *.*;auth,authpriv.none @servlog cron.* @servlog daemon.* @servlog kern.* -/var/log/kern.log kern.* @servlog lpr.* @servlog mail.* /var/log/mail.log user.* -/var/log/user.log user.* @servlog uucp.* -/var/log/uucp.log E reinicie o daemon `syslogd' da m�quina cliente para re-ler o arquivo de configura��o: `killall -HUP syslogd' ou `/etc/init.d/sysklogd restart'. _OBS1:_ Mantenha o rel�gio do servidor de logs sempre atualizado (use o `chrony' ou outro daemon de sincronismo NTP para automatizar esta tarefa). _OBS2:_ � interessante compilar um daemon `syslogd' personalizado modificando o nome e localiza��o do arquivo `/etc/syslog.conf' para enganar poss�veis invasores. Isto pode ser modificado no arquivo `syslogd.c' na linha: #define _PATH_LOGCONF

"/etc/syslog.conf"

Use a imagina��o para escolher um nome de arquivo e localiza��o que dificulte a localiza��o deste arquivo. _OBS3:_ Em uma grande rede, � recomend�vel configurar um computador dedicado como servidor de log (desativando qualquer outro servi�o) e configurar o `iptables' para aceitar somente o tr�fego indo para a porta UDP 514 (syslogd): iptables -P INPUT DROP iptables -A INPUT -p udp --dport 514 -j ACCEPT ------------------------------------------------------------------------------6. A distribui��o Debian GNU/Linux ---------------------------------Este cap�tulo traz algumas caracter�sticas sobre a distribui��o `Debian GNU/Linux', programas de configura��o e particularidades. A maioria dos trechos aqui descritos, tamb�m se aplicam a distribui��es baseadas na `Debian', como a _Corel Debian GNU/Linux_ e a _LibraNet_. Voc� deve estar se perguntando `mas porque um cap�tulo falando sobre a distribui��o Debian se eu uso outra?'. Bem, a partir da vers�o

_Intermedi�rio_ do _Foca Linux_ existem algumas partes que s�o especificas de algumas distribui��es Linux e que n�o se aplicam a outras, como a localiza��o dos arquivos de configura��o, nomes dos programas de configura��o e outros detalhes espec�ficos e esta vers�o � a baseada na `Debian'. Pegue na p�gina do Foca Linux (http://focalinux.cipsga.org.br) uma vers�o Intermedi�rio /Avan�ado do guia espec�fico para sua distribui��o. 6.1. Como obter a Debian -----------------------A instala��o da distribui��o pode ser obtida atrav�s de Download de ftp://ftp.debian.org/debian/dists/stable/main/disks-i386 (para Intel x86), seus programas diversos est�o dispon�veis em ftp://ftp.debian.org/debian/dists/stable/main/binary-i386. A distribui��o tamb�m pode ser obtida atrav�s de 3 (ou 4) CDs bin�rios (para a Debian 2.2). 6.2. Programas de configura��o -----------------------------* `dselect' - Seleciona pacote para instala��o/desinstala��o * `pppconfig' - Configura o computador para se conectar a Internet facilmente. Ap�s isto, use `pon' para se conectar a Internet, `poff' para se desconectar e `plog' para monitorar a conex�o. * `modconf' - Permite selecionar os m�dulos que ser�o automaticamente carregados na inicializa��o do sistema. Se requerido pelos m�dulos os par�metros I/O, IRQ e DMA tamb�m podem ser especificados. * `kbdconfig' - Permite selecionar o tipo de teclado que utiliza * `shadowconfig' - Permite ativar ou desativar o suporte a senhas ocultas (shadow password). Com as senhas ocultas ativadas, as senhas criptografadas dos usu�rios e grupos s�o armazenadas nos arquivos `shadow' e `gshadow' respectivamente, que somente podem ser acessadas pelo usu�rio root. Isto aumenta consideravelmente a seguran�a do sistema pois os arquivos `passwd' e `group' cont�m dados de usu�rios que devem ter permiss�o de leitura de todos os usu�rios do sistema. * `tasksel' - Permite selecionar/modificar de forma f�cil a instala��o de pacotes em seu sistema atrav�s da fun��o que sua m�quina ter� ou do seu perfil de usu�rio. * `tzconfig' - Permite modificar/selecionar o fuso-hor�rio usado na distribui��o. Al�m destes, a Debian 3.0 (Woody) conta com o sistema de configura��o baseado no `dpkg-reconfigure' que permite configurar de forma facil e r�pida aspecto de pacotes: `dpkg-reconfigure xserver-svga'.

6.3. Arquivos de inicializa��o -----------------------------Os arquivos de inicializa��o da distribui��o `Debian' (e baseadas nela) est�o localizados no diret�rio `/etc/init.d'. Cada daemon (programa residente na mem�ria) ou configura��o espec�fica possui um arquivo de onde pode ser ativado/desativado. Os sistemas residentes neste diret�rio n�o s�o ativados diretamente, mas sim atrav�s de links existentes nos diret�rios `/etc/rc?.d' onde cada diret�rio consiste em um n�vel de execu��o do sistema (veja tamb�m a Se��o 6.4, `N�veis de Execu��o'). Por padr�o, voc� pode usar as seguintes palavras chaves com os arquivos de configura��o: * `start' - Inicia o daemon ou executa a configura��o * `stop' - Interrompe a execu��o de um daemon ou desfaz a configura��o feita anteriormente (se poss�vel). * `restart' - Reinicia a execu��o de um daemon. � equivalente ao uso de `stop' e `start' mas se aplicam somente a alguns daemons e configura��es, que permitem a interrup��o de execu��o e reinicio. Por exemplo, para reconfigurar as interfaces de rede do computador, podemos utilizar os seguintes comandos: cd /etc/init.d ./networking restart 6.4. N�veis de Execu��o ----------------------Os _N�veis de execu��o_ (run levels) s�o diferentes modos de funcionamento do `GNU/Linux' com programas, daemons e recursos espec�ficos. Em geral, os sistemas `GNU/Linux' possuem sete n�veis de execu��o numerados de 0 a 6. O daemon `init' � o primeiro programa executado no `GNU/Linux' (veja atrav�s do `ps ax|grep init') e respons�vel pela carga de todos daemons de inicializa��o e configura��o do sistema. O n�vel de execu��o padr�o em uma distribui��o `GNU/Linux' � definido atrav�s do arquivo de configura��o do `/etc/inittab' atrav�s da linha id:2:initdefault: 6.4.1. Entendendo o funcionamento dos n�veis de execu��o do sistema (runlevels) ---------------------------------------------------------------------------Os n�vel de execu��o atual do sistema pode ser visualizado atrav�s do comando `runlevel' e modificado atrav�s dos programas `init' ou `telinit'. Quando � executado, o `runlevel' l� o arquivo `/var/run/utmp' e adicionamente lista o n�vel de execu��o anterior ou a letra `N' em seu lugar (caso ainda n�o tenha ocorrido a mudan�a do n�vel de execu��o do sistema). Na `Debian', os diret�rios `/etc/rc0.d' a `/etc/rc6.d' cont�m os links simb�licos para arquivos em `/etc/init.d' que s�o acionados pelo n�vel

de execu��o correspondente. Por exemplo, o arquivo `S10sysklogd' em `/etc/rc2.d', � um link simb�lico para `/etc/init.d/sysklogd'. O que aconteceria se voc� removesse o arquivo `/etc/rc2.d/S10sysklogd'? Simplesmente o daemon `sysklogd' deixaria de ser executado no n�vel de execu��o 2 do sistema (que � o padr�o da `Debian'). A `Debian' segue o seguinte padr�o para definir se um link simb�lico em `/etc/rc[0-6].d' iniciar� ou interromper� a execu��o de um servi�o em `/etc/init.d', que � o seguinte: * Se um link � iniciado com a letra `K' (kill), quer dizer que o servi�o ser� interrompido naquele n�vel de execu��o. O que ele faz � executar o daemon em `/etc/init.d' seguido de `stop'. * Se um link � iniciado com a letra `S' (start), quer dizer que o servi�o ser� iniciado naquele n�vel de execu��o (� equivalente a executar o daemon seguido de `start'). Primeiro os links com a letra `K' s�o executado e depois os `S'. A ordem que os links s�o executados dependem do valor num�rico que acompanha o link, por exemplo, os seguintes arquivos s�o executados em seq��ncia: S10sysklogd S12kerneld S20inetd S20linuxlogo S20logoutd S20lprng S89cron S99xdm Note que os arquivos que iniciam com o mesmo n�mero (`S20*') s�o executados alfabeticamente. O n�vel de execu��o do sistema pode ser modificado usando-se o comando `init' ou `telinit'. Os seguinte n�veis de execu��o est�o dispon�veis na `Debian': * `0' - Interrompe a execu��o do sistema. todos os programas e daemons finalizados. � acionado pelo comando `shutdown -h' * `1' - Modo monousu�rio, �til para manuten��o dos sistema. * `2' - Modo multiusu�rio (padr�o da Debian) * `3' - Modo multiusu�rio * `4' - Modo multiusu�rio * `5' - Modo multiusu�rio com login gr�fico * `6' - Reinicializa��o do sistema. Todos os programas e daemons s�o encerrados e o sistema � reiniciado. � acionado pelo comando `shutdown -r' e o pressionamento de `CTRL'+`ALT'+`DEL'. Por exemplo, para listar o n�vel de execu��o atual do sistema digite: `runlevel'. O `runlevel' dever� listar algo como: N 2 Agora para mudar para o n�vel de execu��o 1, digite: `init 3'. confira a mudan�a digitando: `runlevel'. Voc� dever� ver este resultado: 2 3

Agora

Isto quer dizer que o n�vel de execu��o anterior era o `2' e o atual � o `3'. 6.5. Bug tracking system -----------------------� o sistema para relatar bugs e enviar sugest�es sobre a distribui��o. Para relatar um bug primeiro voc� deve saber ingl�s (� a l�ngua universal entendida pelos desenvolvedores) e verificar se o bug j� foi relatado. O Debian _Bug tracking system_ pode ser acessado pelo endere�o: http://bugs.debian.org. Para relatar uma falha/sugest�o, envie um e-mail para: <[email protected]>, com o assunto referente a falha/sugest�o que deseja fazer e no corpo da mensagem: Package: pacote Severity: normal/grave/wishlist Version: vers�o do pacote E o relato do problema O bug ser� encaminhado diretamente ao mantenedor do pacote que verificar� o problema relatado. Os campos `Package' e `Severity' s�o obrigat�rios para definir o nome do pacote (para endere�ar o bug para a pessoa correta) e vers�o do pacote (esta falha pode ter sido relatada e corrigida em uma nova vers�o). 6.6. Onde encontrar a Debian para Download? ------------------------------------------No endere�o ftp://ftp.debian.org. Outros endere�os podem ser obtidos na p�gina oficial da `Debian' (http://www.debian.org) clicando no link `Download' e `mirrors'. A distribui��o Potato (2.2) completa, com 4350 pacotes ocupa em torno de 2.0 GB, (equivalente a 4 CDS de pacotes e mais 2 se quiser o c�digo fonte). Voc� tamb�m pode optar por fazer a instala��o dos pacotes opcionais via Internet atrav�s do m�todo apt. Para detalhes veja o guia do dselect ou envie uma mensagem para a lista de discuss�o <[email protected]> ------------------------------------------------------------------------------7. Personaliza��o do Sistema ---------------------------Este cap�tulo ensina como personalizar algumas caracter�sticas de seu sistema `GNU/Linux'. 7.1. Vari�veis de Ambientes ---------------------------

� um m�todo simples e pr�tico que permite a especifica��o de op��es de configura��o de programas sem precisar mexer com arquivos no disco ou op��es. Algumas vari�veis do `GNU/Linux' afetam o comportamento de todo o Sistema Operacional, como o idioma utilizado e o path . Vari�veis de ambientes s�o nomes que cont�m algum valor e tem a forma `Nome=Valor'. As vari�veis de ambiente s�o individuais para cada usu�rio do sistema ou consoles virtuais e permanecem residentes na mem�ria RAM at� que o usu�rio saia do sistema (logo-off) ou at� que o sistema seja desligado. As vari�veis de ambiente s�o visualizadas/criadas atrav�s do comando `set' ou `echo $NOME' (apenas visualiza) e exportadas para o sistemas com o comando `export NOME=VALOR'. Nos sistemas `Debian', o local usado para especificar vari�veis de ambiente � o `/etc/environment' (veja Se��o 7.8, `Arquivo `/etc/environment''). Todas as vari�veis especificadas neste arquivos ser�o inicializadas e automaticamente exportadas na inicializa��o do sistema. Exemplo: Para criar uma vari�vel chamada `TESTE' que contenha o valor `123456' digite: `export TESTE=123456'. Agora para ver o resultado digite: `echo $TESTE' ou `set|grep TESTE'. Note que o `$' que antecede o nome `TESTE' serve para identificar que se trata de uma vari�vel e n�o de um arquivo comum. 7.2. Modificando o Idioma usado em seu sistema ---------------------------------------------O idioma usado em seu sistema pode ser modificado facilmente atrav�s das vari�veis de ambiente. Atualmente a maioria dos programas est�o sendo _localizados_. A localiza��o � um recurso que especifica arquivos que cont�m as mensagens do programas em outros idiomas. Voc� pode usar o comando `locale' para listar as vari�veis de localiza��o do sistema e seus respectivos valores. As principais vari�veis usadas para determinar qual idioma os programas `localizados' utilizar�o s�o: * `LANG' - Especifica o idioma_PAIS local. Podem ser especificados mais de um idioma na mesma vari�vel separando-os com `:', desta forma caso o primeiro n�o esteja dispon�vel para o programa o segundo ser� verificado e assim por diante. A l�ngua Inglesa � identificada pelo c�digo `C' e usada como padr�o caso nenhum locale seja especificado. Por exemplo: `export LANG=pt_BR', `export LANG=pt_BR:pt_PT:C' * `LC_MESSAGES' - Especifica o idioma que ser�o mostradas as mensagens dos programas. Seu formato � o mesmo de `LANG'. * `LC_ALL' - Configura todas as vari�veis de localiza��o de uma s� vez. Seu formato � o mesmo de `LANG'. As mensagens de localiza��o est�o localizadas em arquivos individuais de cada programa em `/usr/share/locale/[Idioma]/LC_MESSAGES' . Elas s�o geradas atrav�s de arquivos `potfiles' (arquivos com a extens�o `.po' ou `.pot' e s�o gerados cat�logos de mensagens `.mo'. As vari�veis de ambiente podem ser especificadas no arquivo `/etc/environment' desta forma as vari�veis ser�o carregadas toda a vez que seu sistema for iniciado. Voc� tamb�m pode especificar as vari�veis de localiza��o em seu arquivos de inicializa��o `.bash_profile', `.bashrc' ou `.profile' assim toda a vez que entrar

no sistema, as vari�veis de localiza��o personalizadas ser�o carregadas. Siga as instru��es a seguir de acordo com a vers�o de sua distribui��o `Debian': Debian 3.0 Acrescente a linha `pt_BR ISO-8859-1' no arquivo `/etc/locale.gen', rode o utilit�rio `locale-gen' para gerar os locales e acrescente as vari�veis de localiza��o no arquivo `/etc/locales.def' seguindo a forma: export LANG=pt_BR export LC_ALL=pt_BR export LC_MESSAGES=pt_BR Note que o arquivo `/etc/environment' tamb�m pode ser usado para tal tarefa, mas o `locales.def' foi criado especialmente para lidar com vari�veis de localiza��o na `Debian' 3.0. Debian 2.2 Coloque estas vari�veis no arquivo `/etc/environment' (veja um exemplo deste arquivo em Se��o 7.8, `Arquivo `/etc/environment''), assim toda a vez que seu sistema for iniciado as vari�veis de localiza��o ser�o carregadas e exportadas para o sistema, estando dispon�veis para todos os usu�rios. Para as mensagens e programas do X-Window usarem em seu idioma local, � preciso colocar as vari�veis no arquivo `~/.xserverrc' do diret�rio home de cada usu�rio e dar a permiss�o de execu��o neste arquivo (`chmod 755 .xserverrc'). Lembre-se de incluir o caminho completo do arquivo execut�vel do seu gerenciador de janelas na �ltima linha deste arquivo (sem o `&' no final), caso contr�rio o Xserver ser� finalizado logo ap�s ler este arquivo. Abaixo exemplos de localiza��o com as explica��es: * `export LANG=pt_BR' - Usa o idioma pt_BR como l�ngua padr�o do sistema. Caso o idioma Portugues do Brasil n�o esteja dispon�vel, C � usado (Ingl�s). * `export LANG=C' - Usa o idioma Ingl�s como padr�o (� a mesma coisa de n�o especificar `LANG', pois o idioma Ingl�s � usado como padr�o). * `export LANG=pt_BR:pt_PT:es_ES:C' - Usa o idioma Portugu�s do Brasil como padr�o, caso n�o esteja dispon�vel usa o Portugu�s de Portugal, se n�o estiver dispon�vel usa o Espanhol e por fim o Ingl�s. � recomend�vel usar a vari�vel `LC_ALL' para especificar o idioma, desta forma todos os outras vari�veis (`LANG, MESSAGES, LC_MONETARY, LC_NUMERIC, LC_COLLATE, LC_CTYPE e LC_TIME') ser�o configuradas automaticamente. 7.3. alias ---------Permite criar um apelido a um comando ou programa. Por exemplo, se voc� gosta de digitar (como eu) o comando `ls --color=auto' para ver uma listagem longa e colorida, voc� pode usar o comando `alias' para facilitar as coisas digitando: `alias ls='ls --color=auto'' (n�o se esque�a da meia aspa 'para identificar o comando'). Agora quando voc� digitar `ls', a listagem ser� mostrada com cores.

Se voc� digitar `ls -la', a op��o `-la' ser� adicionada no final da linha de comando do alias: `ls --color=auto -la', e a listagem tamb�m ser� mostrada em cores. Se quiser utilizar isto toda vez que entrar no sistema, veja Se��o 7.5, `Arquivo `.bash_profile'' e Se��o 7.6, `Arquivo `.bashrc''. 7.4. Arquivo `/etc/profile' --------------------------Este arquivo cont�m comandos que s�o executados para _todos_ os usu�rios do sistema no momento do login. Somente o usu�rio root pode ter permiss�o para modificar este arquivo. Este arquivo � lido antes do arquivo de configura��o pessoal de cada usu�rio (`.profile'(root) e `.bash_profile'). Quando � carregado atrav�s de um shell que requer login (nome e senha), o `bash' procura estes arquivos em seq��ncia e executa os comandos contidos, caso existam: 1. `/etc/profile' 2. `~/.bash_profile' 3. `~/.bash_login' 4. `~/.profile' Caso o `bash' seja carregado atrav�s de um shell que n�o requer login (um terminal no X, por exemplo), o seguinte arquivo � executado: `~/.bashrc'. Observa��o: Nos sistemas Debian, o profile do usu�rio root est� configurado no arquivo `/root/.profile'. A raz�o disto � porque se o `bash' for carregado atrav�s do comando `sh', ele far� a inicializa��o cl�ssica deste shell lendo primeiro o arquivo `/etc/profile' e ap�s o `~/.profile' e ignorando o `.bash_profile' e `.bashrc' que s�o arquivos de configura��o usados somente pelo `Bash'. Exemplo, inserindo a linha `mesg y' no arquivo `/etc/profile' permite que todos os usu�rios do sistema recebam pedidos de `talk' de outros usu�rios. Caso um usu�rio n�o quiser receber pedidos de `talk', basta somente adicionar a linha `"mesg y"' no arquivo pessoal `.bash_profile'. 7.5. Arquivo `.bash_profile' ---------------------------Este arquivo reside no diret�rio pessoal de cada usu�rio. � executado por shells que usam autentica��o (nome e senha). `.bash_profile' cont�m comandos que s�o executados para o usu�rio no momento do login no sistema ap�s o `/etc/profile'. Note que este � um arquivo oculto pois tem um "." no inicio do nome. Por exemplo colocando a linha: `alias ls='ls --colors=auto'' no `.bash_profile', cria um apelido para o comando `ls --colors=auto' usando `ls', assim toda vez que voc� digitar `ls' ser� mostrada a listagem colorida. 7.6. Arquivo `.bashrc' ----------------------

Possui as mesmas caracter�sticas do `.bash_profile' mas � executado por shells que n�o requerem autentica��o (como uma se��o de terminal no X). Os comandos deste arquivo s�o executados no momento que o usu�rio inicia um shell com as caracter�sticas acima. Note que este � um arquivo oculto pois tem um "." no inicio do nome. 7.7. Arquivo `.hushlogin' ------------------------Deve ser colocado no diret�rio pessoal do usu�rio. Este arquivo faz o `bash' pular as mensagens do `/etc/motd', n�mero de e-mails, etc. Exibindo imediatamente o aviso de comando ap�s a digita��o da senha. 7.8. Arquivo `/etc/environment' ------------------------------Armazena as vari�veis de ambiente que s�o exportadas para todo o sistema. Uma vari�vel de ambiente controla o comportamento de um programa, registram detalhes �teis durante a se��o do usu�rio no sistema, especificam o idioma das mensagens do sistema, etc. Exemplo do conte�do de um arquivo `/etc/environment': LANG=pt_BR LC_ALL=pt_BR LC_MESSAGES=pt_BR 7.9. Diret�rio `/etc/skel' -------------------------Este diret�rio cont�m os modelos de `.bashrc' que ser�o copiados para o momento que for criada uma conta no precisar� configurar estes arquivos

arquivos `.bash_profile' e diret�rio pessoal dos usu�rios no sistema. Desta forma voc� n�o separadamente para cada usu�rio.

------------------------------------------------------------------------------8. Impress�o -----------Este capitulo descreve como imprimir em seu sistema `GNU/Linux' e as formas de impress�o via spool, rede, gr�fica, etc. Antes de seguir os passos descritos neste cap�tulo, tenha certeza que seu kernel foi compilado com o suporte a impressora paralela ativado, caso contr�rio at� mesmo a impress�o direta para a porta de impressora falhar�. . 8.1. Portas de impressora

------------------------Uma porta de impressora � o local do sistema usado para se comunicar com a impressora. Em sistemas `GNU/Linux', a porta de impressora � identificada como `lp0, lp1, lp2' no diret�rio `/dev', correspondendo respectivamente a `LPT1', `LPT2' e `LPT3' no `DOS' e `Windows'. Recomendo que o suporte a porta paralela esteja compilado como m�dulo no kernel. 8.2. Imprimindo diretamente para a porta de impressora -----------------------------------------------------Isto � feito direcionando a sa�da ou o texto com `>' diretamente para a porta de impressora no diret�rio `/dev'. Supondo que voc� quer imprimir o texto contido do arquivo `trabalho.txt' e a porta de impressora em seu sistema � `/dev/lp0', voc� pode usar os seguintes comandos: * `cat trabalho.txt >/dev/lp0' - Direciona a sa�da do comando `cat' para a impressora. * `cat /dev/lp0'. Faz a mesma coisa que o acima. * `cat -n trabalho.txt >/dev/lp0' - Numera as linhas durante a impress�o. * `head -n 30 trabalho.txt >/dev/lp0' - Imprime as 30 linhas iniciais do arquivo. * `cat trabalho.txt|tee /dev/lp0' - Mostra o conte�do do `cat' na tela e envia tamb�m para a impressora. Os m�todos acima servem somente para imprimir em modo texto (letras, n�meros e caracteres semi-gr�ficos). 8.3. Imprimindo via spool ------------------------A impress�o via spool tem por objetivo liberar logo o programa do servi�o de impress�o deixando um outro programa especifico tomar conta. Este programa � chamado de _daemon de impress�o_, normalmente � o `lpr' ou o `lprng' (recomendado) em sistemas `GNU/Linux'. Logo ap�s receber o arquivo que ser� impresso, o programa de spool gera um arquivo tempor�rio (normalmente localizado em `/var/spool/lpd') que ser� colocado em fila para a impress�o (um trabalho ser� impresso ap�s o outro, em seq��ncia). O arquivo tempor�rio gerado pelo programa de spool � apagado logo ap�s concluir a impress�o. Antes de se imprimir qualquer coisa usando os daemons de impress�o, � preciso configurar os par�metros de sua impressora no arquivo `/etc/printcap'. Um arquivo `/etc/printcap' para uma impressora local padr�o se parece com o seguinte: lp|Impressora compat�vel com Linux :lp=/dev/lp0 :sd=/var/spool/lpd/lp :af=/var/log/lp-acct :lf=/var/log/lp-errs :pl#66

:pw#80 :pc#150 :mx#0 :sh � poss�vel tamb�m compartilhar a impressora para a impress�o em sistemas remotos, isto ser� visto em uma se��o separada neste guia. Usando os exemplos anteriores da se��o `Imprimindo diretamente para uma porta de impressora', vamos acelerar as coisas: * `cat trabalho.txt |lpr' - Direciona a saida do comando `cat' para o programa de spool `lpr'. * `cat
de configura��o, gerenciamento de impress�o feito pelo _gs_ e por ser um formato universal, compat�veis com outros sistemas operacionais. Para imprimir um documento via Ghost Script, voc� precisar� do pacote `gs', `gsfonts' (para a distribui��o `Debian' e distribui��es baseadas, ou outros de acordo com sua distribui��o Linux) e suas depend�ncias. A distribui��o `Debian' vem com v�rios exemplos Pos Script no diret�rio `/usr/share/doc/gs/example' que s�o �teis para o aprendizado e testes com o Ghost Script. Hora da divers�o: * Copie os arquivos `tiger.ps.gz' e `alphabet.ps.gz' do diret�rio `/usr/share/doc/gs/examples' (sistemas `Debian') para `/tmp' e descompacte-os com o comando `gzip -d tiger.ps.gz e gzip -d alphabet.ps.gz'. Se a sua distribui��o n�o possui arquivos de exemplo ou voc� n�o encontra nenhuma refer�ncia de onde se localizam, mande um e-mail que os envio os 2 arquivos acima (s�o 32Kb). * O Ghost Script requer um monitor EGA, VGA ou superior para a visualiza��o dos seus arquivos (n�o tenho certeza se ele funciona com monitores CGA ou H�rcules Monocrom�tico) . Para visualizar os arquivos na tela digite: gs tiger.ps gs alphabet.ps Para sair do `Ghost Script' pressione `CTRL+C'. Neste ponto voc� deve ter visto um desenho de um tigre e (talvez) letras do alfabeto. Se o comando `gs alphabet.ps' mostrou somente uma tela em branco, voc� se esqueceu de instalar as fontes do Ghost Script (est�o localizadas no pacote `gsfonts' na distribui��o Debian). * Para imprimir o arquivo `alphabet.ps' use o comando: gs -q -dSAFER -dNOPAUSE -sDEVICE=epson -r240x72 -sPAPERSIZE=legal -sOutputFile=/dev/lp0 alphabet.ps O arquivo `alphabet.ps' deve ser impresso. Caso aparecerem mensagens como `Error: /invalidfont in findfont' no lugar das letras, voc� se esqueceu de instalar ou configurar as fontes do Ghost Script. Instale o pacote de fontes (`gsfonts' na `Debian') ou verifique a documenta��o sobre como configurar as fontes. Cada uma das op��es acima descrevem o seguinte: * `-q, -dQUIET' - N�o mostra mensagens de inicializa��o do Ghost Script. * `-dSAFER' - � uma op��o para ambientes seguros, pois desativa a opera��o de mudan�a de nome e dele��o de arquivo e permite somente a abertura dos arquivos no modo somente leitura. * `-dNOPAUSE' - Desativa a pausa no final de cada p�gina processada. * `-sDEVICE=dispositivo' - Dispositivo que receber� a saida do Ghost Script. Neste local pode ser especificada a marca o modelo de sua impressora ou um formato de arquivo diferente (como pcxmono, bmp256) para que o arquivo `.ps' seja convertido para o formato designado. Para detalhes sobre os dispositivos dispon�veis em seu Ghost Script, digite `gs --help|less' ou veja a p�gina de manual. Normalmente os nomes de impressoras e modelos s�o concatenados, por exemplo, bjc600 para a impressora _Canon BJC 600_, epson para impressoras padr�o epson, stcolor para

_Epson Stylus color_, etc. O Hardware-HOWTO cont�m refer�ncias sobre hardware suportados pelo `GNU/Linux', tal como impressoras e sua leitura pode ser �til. * `-rx' - Define a resolu��o de impress�o (em dpi) Horizontal e Vertical. Os valores dependem de sua impressora. * `-sPAPERSIZE=tamanho' - Tamanho do papel. Podem ser usados a4, legal, letter, etc. Veja a p�gina de manual do gs para ver os outros tipos suportados e suas medidas. * `-sOutputFile=dispositivo' - Dispositivo que receber� a saida de processamento do gs. Voc� pode especificar * `arquivo.epson' - Nome do arquivo que receber� todo o resultado do processamento. O `arquivo.epson' ter� toda a impress�o codificada no formato entendido por impressoras epson e poder� ser impresso com o comando `cat arquivo.epson >/dev/lp0'. Uma curiosidade �til: � poss�vel imprimir este arquivo em outros sistemas operacionais, tal como o `DOS' digitando: `copy /b arquivo.eps prn' (lembre-se que o `DOS' tem um limite de 8 letras no nome do arquivo e 3 na extens�o. Voc� deve estar compreendendo a flexibilidade que o `GNU/Linux' e suas ferramentas permitem, isso � s� o come�o. * `impressao%d.epson' - Nome do arquivo que receber� o resultado do processamento. Cada p�gina ser� gravada em arquivos separados como `impressao1.epson', `impressao2.epson'. Os arquivos podem ser impressos usando os mesmos m�todos acima. * `/dev/lp0' para uma impressora em `/dev/lp0' * `-' para redirecionar a sa�da de processamento do `gs' para a sa�da padr�o. � �til para usar o gs com pipes `|'. * `\|lpr' - Envia a sa�da do Ghost Script para o daemon de impress�o. O objetivo � deixar a impress�o mais r�pida. Se voc� � curioso ou n�o esta satisfeito com as op��es mostradas acima, veja a p�gina de manual do `gs'. 8.5. Magic Filter ----------------O _Magic Filter_ � um filtro de impress�o inteligente. Ele funciona acionado pelo spool de impress�o (mais especificamente o arquivo `/etc/printcap') e permite identificar e imprimir arquivos de diversos tipos diretamente atrav�s do comando `lpr arquivo'. � um �timo programa e _ALTAMENTE RECOMENDADO_ se voc� deseja apenas clicar no bot�o imprimir e deixar os programas fazerem o resto :-) A inte��o do programa � justamente automatizar os trabalhos de impress�o e spool. A maioria dos programas para ambiente gr�fico X11, incluindo o Netscape, Word Perfect, Gimp e Star Office trabalham nativamente com o `magicfilter'.

8.5.1. Instala��o e configura��o do Magic Filter -----------------------------------------------O Magic Filter � encontrado no pacote `magicfilter' da distribui��o `Debian' e baseadas. Sua configura��o pode ser feita com o programa `magicfilterconfig' que torna o processo de configura��o r�pido e f�cil para quem n�o conhece a sintaxe do arquivo `/etc/printcap' ou n�o tem muitas exig�ncias sobre a configura��o detalhada da impressora. Ap�s instalar o `magicfilter' reinicie o daemon de impress�o (se estiver usando a `Debian', entre no diret�rio `/etc/init.d' e como usu�rio `root' digite `./lpr restart' ou `./lprng restart'). Para testar o funcionamento do `magicfilter', digite `lpr alphabet.ps' e `lpr tiger.ps', os arquivos ser�o enviados para o `magicfilter' que identificar� o arquivo como _Pos Script_, executar� o Ghost Script e retornar� o resultado do processamento para o daemon de impress�o. O resultado ser� visto na impressora. Se tiver problemas, verifique se a configura��o feita com o `magicfilterconfig' est� correta. Caso precise re-configurar o `magicfilger', digite `magicfilterconfig --fource' (lembre-se que a op��o --force substitui qualquer configura��o personalizada que tenha adicionado ao arquivo `/etc/printcap'). 8.5.2. Outros detalhes t�cnicos sobre o Magic Filter ---------------------------------------------------Durante a configura��o do `magicfilter', a seguinte linha � adicionada ao arquivo `/etc/printcap': :if=/etc/magicfilter/epson9-filter N�o tenho nenhum contrato de divulga��o com a _epson_ :-) estou usando esta marca de impressora porque � a mais tradicional e facilmente encontrada. A linha que come�a com `:if' no `magicfilter' identifica um arquivo de filtro de impress�o. O arquivo `/etc/magicfilter/epcon9-filter' � criado usando o formato do magicfilter, e n�o � dif�cil entender seu conte�do e fazer algumas modifica��es: #! /usr/sbin/magicfilter # # Magic filter setup file for 9-pin Epson (or compatible) printers # # This file is in the public domain. # # This file has been automatically adapted to your system. # # wild guess: native control codes start with ESC 0 \033 cat # PostScript 0 %! filter /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutputFile=- - -c quit

0 \004%! filter /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutputFile=- - -c quit # PDF 0 %PDF fpipe /usr/bin/gs -q -dSAFER -dNOPAUSE -r120x72 -sDEVICE=epson -sOutputFile=- $FILE -c quit # TeX DVI 0 \367\002 fpipe /usr/bin/dvips -X 120 # compress'd data 0 \037\235 pipe /bin/gzip # 0 0 0 0

-R -q -f

-cdq

packed, gzipped, frozen and SCO LZH data \037\036 pipe /bin/gzip -cdq \037\213 pipe /bin/gzip -cdq \037\236 pipe /bin/gzip -cdq \037\240 pipe /bin/gzip -cdq

0 BZh pipe # 0 0 0 0 0

-Y 72

/usr/bin/bzip2

troff documents .\?\?\040 fpipe .\\\" '\\\" '.\\\" \\\"

fpipe fpipe fpipe fpipe

-cdq

`/usr/bin/grog -Tps $FILE` `/usr/bin/grog -Tps $FILE` `/usr/bin/grog -Tps $FILE` `/usr/bin/grog -Tps $FILE` `/usr/bin/grog -Tps $FILE`

Voc� deve ter notado que para cada tipo de arquivo existe o respectivo programa que � executado, basta voc� modificar as op��es usadas nos programas neste arquivo (como faria na linha de comando) para afetar o comportamento da impress�o. Por exemplo, modificando a resolu��o para -r240x72 no processamento de arquivos Pos Script (gs), a impressora passar� a usar esta resolu��o. 8.6. Impress�o remota --------------------Aqui ser� explicado como fazer seu sistema `Linux' atuar como um servidor de impress�o para outras m�quinas de sua rede. 8.6.1. Dando permiss�o para impres�o remota via lpd/lprng --------------------------------------------------------As m�quinas autorizadas a usar a impressora local dever�o ter seus nomes incluidos no arquivo `/etc/hosts.lpd' (para o daemon `lpd' padr�o) ou `/etc/lprng/lpd.perms' (para o daemon `lpd' do pacote `lprng'). O arquivo `/etc/lprng/lpd.perms' do `lprng' � mais configur�vel (e complexo), uma linha como: ACCEPT HOST=estacao1.dominio.org SERVICE=X,R,P,Q,M,C aceitar� os servi�os (SERVICE) de conex�o (X), lpr (R), impress�o de trabalhos (P), lpq (Q), lprm (M) e lpc (C) da m�quina

`estacao1.dominio.org'. Veja os coment�rios neste arquivo para entender o funcionamento de suas op��es ou a p�gina de manual do `lpd.perms'. 8.6.2. Impress�o via rlpr ------------------------O `rlpr' redireciona a impress�o diretamente ao servidor de impress�o. Sua vantagem � que a impress�o � feita diretamente sem a necessidade de configurar um arquivo `/etc/printcap' e dispensar trabalhos adicionais de administra��o. Ele envia o trabalho de impress�o diretamente ao daemon `lpd' na na porta 515 (a m�quina deve estar configurada para aceitar conex�es, veja Se��o 8.6.1, `Dando permiss�o para impres�o remota via lpd/lprng'). Para enviar o arquivo `listagem.txt' para a impressora _hp_ no servidor `impr.meudominio.org': rlpr -Himpr.meudominio.org -Php listagem.txt A op��o _-H_ especifica o nome do servidor de impress�o e _-P_ o nome da impressora. Caso n�o tenha permiss�es para imprimir na impressora remota, uma mensagem ser� mostrada. 8.6.3. Impress�o via printcap ----------------------------Atrav�s deste m�todo, a impress�o ser� tratada atrav�s do spool remoto (`lpd' ou `lprng') e enviada ao servidor de impress�o. Para que isto funcione, utilize a seguinte configura��o no seu arquivo `/etc/printcap': lp:Impressora remota:\ :sd=/var/spool/lpd/lp:\ :rm=impr.meudominio.org:\ :rp=hp:\ :sh: Ent�o quando for executado o comando `lpr' na m�quina remota, o `lprng' enviar� a impress�o para a impressora hp (_rp=hp_) na m�quina `impr.meudominio.org' (`rm=impr.meudominio.org'). Caso voc� tenha a op��o de imprimir tanto para uma impressora local quando para uma remota, voc� poder� usar uma configura��o como a seguinte: lp|hp|Impressora Local:\ :lp=/dev/lp0:\ :sd=/var/spool/lpd/hp:\ :sh:\ :pw#80:\ :pl#66: \ :px#1440:\ :mx#0:\ :if=/etc/magicfilter/dj930c-filter:\ :af=/var/log/lp-acct:\ :lf=/var/log/lp-errs:

hp-r|Impressora Remota:\ :sd=/var/spool/lpd/lp:\ :rm=impr.meudominio.org:\ :rp=hp:\ :sh: Para selecionar qual impressora ser� usada, adicione a op��o _-Pimpressora_ na linha de comando dos utilit�rios `lpr', `lpq', `lprm' (por exemplo, `lpr -Php-r relatorio.txt'. Quando a op��o _-P_ � especificada, a impressora _lp_ ser� usada por padr�o. _OBS_ Lembre-se de reiniciar seu daemon de impress�o toda vez que modificar o arquivo `/etc/printcap'. 8.6.4. Gerenciando impress�o de m�quinas Windows -----------------------------------------------Ser� necess�rio ter o pacote `samba' instalado e adicionar as seguintes linhas no seu arquivo `/etc/samba/smb.conf': [hp-printer] path = /tmp printer name=HP DeskJet 690C printable = yes print command = lpr -r -h -P %p %s valid users = winuser winuser2 create mode = 0700 O compartilhamento acima tornar� dispon�vel a impressora local "lp" as m�quinas Windows com o nome "HP DeskJet 690C". Uma impressora alternativa pode ser especificada modificando a op��o _-P_ da linha de comando do `lpr'. Note que somente os usu�rios "winuser" e "winuser2" poder�o usar esta impressora. Agora ser� necess�rio instalar o driver desta impressora no Windows (HP 690C) e escolher impressora instalada via rede e seguir os demais passos de configura��o. ------------------------------------------------------------------------------9. Firewall iptables -------------------Este cap�tulo documenta o funcionamento do firewall `iptables' que acompanha a s�rie do kernel 2.4, op��es usadas, e aponta alguns pontos fundamentais para iniciar a configura��o e constru��o de bons sistemas de firewall. 9.1. Introdu��o --------------O _Firewall_ � um programa que como objetivo proteger a m�quina contra acessos indesejados, tr�fego indesejado, proteger servi�os que estejam rodando na m�quina e bloquear a passagem de coisas que voc� n�o deseja receber (como conex�es vindas da Internet para sua segura rede local,

evitando acesso aos dados corporativos de uma empresa ou a seus dados pessoais). No kernel do Linux 2.4, foi introduzido o firewall `iptables' (tamb�m chamado de netfilter) que substitui o `ipchains' dos kernels da s�rie 2.2. Este novo firewall tem como vantagem ser muito est�vel (assim como o `ipchains' e `ipfwadm'), confi�vel, permitir muita flexibilidade na programa��o de regras pelo administrador do sistema, mais op��es dispon�veis ao administrador para controle de tr�fego, controle independente do tr�fego da rede local/entre redes/interfaces devido a nova organiza��o das etapas de roteamento de pacotes. O `iptables' � um firewall a n�vel de pacotes e funciona baseado no endere�o/porta de origem/destino do pacote, prioridade, etc. Ele funciona atrav�s da compara��o de regras para saber se um pacote tem ou n�o permiss�o para passar. Em firewalls mais restritivos, o pacote � bloqueado e registrado para que o administrador do sistema tenha conhecimento sobre o que est� acontecendo em seu sistema. Ele tamb�m pode ser usado para modificar e monitorar o tr�fego da rede, fazer NAT (masquerading, source nat, destination nat), redirecionamento de pacotes, marca��o de pacotes, modificar a prioridade de pacotes que chegam/saem do seu sistema, contagem de bytes, dividir tr�fego entre m�quinas, criar prote��es anti-spoofing, contra syn flood, DoS, etc. O tr�fego vindo de m�quinas desconhecidas da rede pode tamb�m ser bloqueado/registrado atrav�s do uso de simples regras. As possibilidades oferecidas pelos recursos de filtragem `iptables' como todas as ferramentas UNIX maduras dependem de sua imagina��o, pois ele garante uma grande flexibilidade na manipula��o das regras de acesso ao sistema, precisando apenas conhecer quais interfaces o sistema possui, o que deseja bloquear, o que tem acesso garantido, quais servi�os devem estar acess�veis para cada rede, e iniciar a constru��o de seu firewall. O `iptables' ainda tem a vantagem de ser modulariz�vel, fun��es podem ser adicionadas ao firewall ampliando as possibilidades oferecidas. Usei por 2 anos o `ipchains' e afirmo que este � um firewall que tem possibilidades de gerenciar tanto a seguran�a em m�quinas isoladas como roteamento em grandes organiza��es, onde a passagem de tr�fego entre redes deve ser minuciosamente controlada. Um firewall n�o funciona de forma autom�tica (instalando e esperar que ele fa�a as coisas por voc�), � necess�rio pelo menos conhecimentos b�sicos de rede tcp/ip, roteamento e portas para criar as regras que far�o a seguran�a de seu sistema. A seguran�a do sistema depende do controle das regras que ser�o criadas por voc�, as falhas humanas s�o garantia de mais de 95% de sucesso nas invas�es. Enfim o `iptables' � um firewall que agradar� tanto a pessoas que desejam uma seguran�a b�sica em seu sistema, quando administradores de grandes redes que querem ter um controle minucioso sobre o tr�fego que passam entre suas interfaces de rede (controlando tudo o que pode passar de uma rede a outra), controlar o uso de tr�fego, monitora��o, etc. 9.1.1. Vers�o ------------� assumido que esteja usando a vers�o 1.2.3 do `iptables' e baseadas

nas op��es do kernel 2.4.16 (sem o uso de m�dulos experimentais). As explica��es contidas aqui podem funcionar para vers�es posteriores, mas � recomend�vel que leia a documenta��o sobre modifica��es no programa (changelog) em busca de mudan�as que alterem o sentido das explica��es fornecidas aqui. 9.1.2. Um resumo da hist�ria do iptables ---------------------------------------O `iptables' � um c�digo de firewall das vers�es 2.4 do kernel, que substituiu o `ipchains' (presente nas s�ries 2.2 do kernel). Ele foi inclu�do no kernel da s�rie 2.4 em meados de Junho/Julho de 1999. A hist�ria do desenvolvimento (desde o porte do `ipfw' do `BSD' para o `Linux' at� o `iptables' (que � a quarta gera��o de firewalls do kernel) est� dispon�vel no documento, `Netfilter-howto'. 9.1.3. Caracter�sticas do firewall iptables ------------------------------------------* Especifica��o de portas/endere�o de origem/destino * Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens icmp) * Suporte a interfaces de origem/destino de pacotes * Manipula servi�os de proxy na rede * Tratamento de tr�fego dividido em chains (para melhor controle do tr�fego que entra/sai da m�quina e tr�fego redirecionado. * Permite um n�mero ilimitado de regras por chain * Muito r�pido, est�vel e seguro * Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal formados. * Suporte a m�dulos externos para expans�o das funcionalidades padr�es oferecidas pelo c�digo de firewall * Suporte completo a roteamento de pacotes, tratadas em uma �rea diferente de tr�fegos padr�es. * Suporte a especifica��o de tipo de servi�o para priorizar o tr�fego de determinados tipos de pacotes. * Permite especificar exce��es para as regras ou parte das regras * Suporte a detec��o de fragmentos * Permite enviar alertas personalizados ao `syslog' sobre o tr�fego aceito/bloqueado. * Redirecionamento de portas * Masquerading * Suporte a SNAT (modifica��o do endere�o de origem das m�quinas para um �nico IP ou faixa de IP's). * Suporte a DNAT (modifica��o do endere�o de destino das m�quinas para um �nico IP ou fixa de IP's) * Contagem de pacotes que atravessaram uma interface/regra * Limita��o de passagem de pacotes/confer�ncia de regra (muito �til para criar prote��es contra, syn flood, ping flood, DoS, etc). 9.1.4. Ficha t�cnica -------------------Pacote: `iptables' * `iptables' - Sistema de controle principal para protocolos ipv4 * `ip6tables' - Sistema de controle principal para protocolos ipv6

* `iptables-save' - Salva as regras atuais em um arquivo especificado como argumento. Este utilit�rio pode ser dispensado por um shell script contendo as regras executado na inicializa��o da m�quina. * `iptables-restore' - Restaura regras salvas pelo utilit�rio `iptables-save'. 9.1.5. Requerimentos -------------------� necess�rio que o seu kernel tenha sido compilado com suporte ao `iptables' (veja Se��o 9.1.15, `Habilitando o suporte ao iptables no kernel'. O requerimento m�nimo de mem�ria necess�ria para a execu��o do `iptables' � o mesmo do kernel 2.4 (4MB). Dependendo do tr�fego que ser� manipulado pela(s) interface(s) do firewall ele poder� ser executado com folga em uma m�quina 386 SX com 4MB de RAM. Como as configura��es residem no kernel n�o � necess�rio espa�o extra em disco r�gido para a execu��o deste utilit�rio. 9.1.6. Arquivos de logs criados pelo iptables --------------------------------------------Todo tr�fego que for registrado pelo `iptables' � registrado por padr�o no arquivo `/var/log/kern.log'. 9.1.7. Instala��o ----------------`apt-get install iptables' O pacote `iptables' cont�m o utilit�rio `iptables' (e `ip6tables' para redes ipv6) necess�rios para inserir suas regras no kernel. Se voc� n�o sabe o que � ipv6, n�o precisar� se preocupar com o utilit�rio `ip6tables' por enquanto. 9.1.8. Enviando Corre��es/Contribuindo com o projeto ---------------------------------------------------A p�gina principal do projeto � `http://netfilter.filewatcher.org'. Sugest�es podem ser enviadas para a lista de desenvolvimento oficial do `iptables': `http://lists.samba.org'. 9.1.9. O que aconteceu com o `ipchains' e `ipfwadm'? ---------------------------------------------------O `iptables' faz parte da nova gera��o de firewalls que acompanha o kernel 2.4, mas o suporte ao `ipchains' e `ipfwadm' ainda ser� mantido no kernel at� 2004. Seria uma grande falta de considera��o retirar o suporte a estes firewalls do kernel como forma de obrigar a "aprenderem" o `iptables' (mesmo o suporte sendo removido ap�s este per�odo, acredito que criar�o patches "externos" para futuros kernels que n�o trar�o mais este suporte). Se precisa do suporte a estes firewalls antes de passar em definitivo para o `iptables' leia Se��o 9.1.15, `Habilitando o suporte ao iptables no kernel'. Se voc� � um administrador que gosta de explorar todos os recursos de um firewall, usa todos os recursos que ele oferece ou mant�m uma

complexa rede corporativa, tenho certeza que gostar� do `iptables'. 9.1.10. Tipos de firewalls -------------------------Existem basicamente dois tipos de firewalls: * `n�vel de aplica��o' - Este tipo de firewall analisam o conte�do do pacote para tomar suas decis�es de filtragem. Firewalls deste tipo s�o mais intrusivos (pois analisam o conte�do de tudo que passa por ele) e permitem um controle relacionado com o conte�do do tr�fego. Alguns firewalls a n�vel de aplica��o combinam recursos b�sicos existentes em firewalls a n�vel de pacotes combinando as funcionalidade de controle de tr�fego/controle de acesso em uma s� ferramenta. Servidores proxy, como o `squid', s�o um exemplo deste tipo de firewall. * `n�vel de pacotes' - Este tipo de firewall toma as decis�es baseadas nos par�metros do pacote, como porta/endere�o de origem/destino, estado da conex�o, e outros par�metros do pacote. O firewall ent�o pode negar o pacote (DROP) ou deixar o pacote passar (ACCEPT). O `iptables' � um excelente firewall que se encaixa nesta categoria. Firewall a n�vel de pacotes � o assunto explicado nesta se��o do guia. Os dois tipos de firewalls podem ser usados em conjunto para fornecer uma camada dupla de seguran�a no acesso as suas m�quinas/m�quinas clientes. 9.1.11. O que proteger? ----------------------Antes de iniciar a constru��o do firewall � bom pensar nos seguintes pontos: * Quais servi�os precisa proteger. Servi�os que devem ter acesso garantido a usu�rios externos e quais ser�o bloqueados a todas/determinadas m�quinas. � recomend�vel bloquear o acesso a todas portas menores que 1024 por executarem servi�os que rodam com privil�gio de usu�rio `root', e autorizar somente o acesso as portas que realmente deseja (configura��o restritiva nesta faixa de portas). * Que tipo de conex�es eu posso deixar passar e quais bloquear. Servi�os com autentica��o em texto plano e potencialmente inseguros como rlogin, telnet, ftp, NFS, DNS, LDAP, SMTP RCP, X-Window s�o servi�os que devem ser ter acesso garantido somente para m�quinas/redes que voc� confia. Estes servi�os podem n�o ser s� usados para tentativa de acesso ao seu sistema, mas tamb�m como forma de atacar outras pessoas aproveitando-se de problemas de configura��o. A configura��o do firewall ajuda a prevenir isso, mesmo se um servi�o estiver mal configurado e tentando enviar seus pacotes para fora, ser� impedido. Da mesma forma se uma m�quina Windows de sua rede for infectada por um trojan n�o haver� p�nico: o firewall poder� estar configurado para bloquear qualquer tentativa de conex�o vinda da internet (cracker) para as m�quinas de sua rede. Para c�pia de arquivos via rede insegura (como atrav�s da Internet), � recomendado o uso de servi�os que utilizam criptografia para login e c�pia de arquivos (veja Cap�tulo 14, `Servidor ssh').

* Que m�quinas ter�o acesso livre e quais ser�o restritas. * Que servi�os dever�o ter prioridade no processamento. * Que m�quinas/redes NUNCA dever�o ter acesso a certas/todas m�quinas. * O volume de tr�fego que o servidor manipular�. Atrav�s disso voc� pode ter que balancear o tr�fego entre outras m�quinas, configurar prote��es contra DoS, syn flood, etc. * O que tem permiss�o de passar de uma rede para outra (em m�quinas que atuam como roteadores/gateways de uma rede interna). * Etc. A an�lise destes pontos pode determinar a complexidade do firewall, custos de implementa��o, prazo de desenvolvimento e tempo de maturidade do c�digo para implementa��o. Existem muitos outros pontos que podem entrar na quest�o de desenvolvimento de um sistema de firewall, eles dependem do tipo de firewall que est� desenvolvendo e das pol�ticas de seguran�a de sua rede. 9.1.12. O que s�o regras? ------------------------As regras s�o como comandos passados ao `iptables' para que ele realize uma determinada a��o (como bloquear ou deixar passar um pacote) de acordo com o endere�o/porta de origem/destino, interface de origem/destino, etc. As regras s�o armazenadas dentro dos chains e processadas na ordem que s�o inseridas. As regras s�o armazenadas no kernel, o que significa que quando o computador for reiniciado tudo o que fez ser� perdido. Por este motivo elas dever�o ser gravadas em um arquivo para serem carregadas a cada inicializa��o. Um exemplo de regra: `iptables -A INPUT -s 123.123.123.1 -j DROP'. 9.1.13. O que s�o chains? ------------------------Os _Chains_ s�o locais onde as regras do firewall definidas pelo usu�rio s�o armazenadas para opera��o do firewall. Existem dois tipos de chains: os embutidos (como os chains _INPUT_, _OUTPUT_ e _FORWARD_) e os criados pelo usu�rio. Os nomes dos chains embutidos devem ser especificados sempre em mai�sculas (note que os nomes dos chains s�o case-sensitive, ou seja, o chain `input' � completamente diferente de `INPUT'). 9.1.14. O que s�o tabelas? -------------------------Tabelas s�o os locais usados para armazenar os chains e conjunto de regras de um mesmo conjunto que cada um possui. As tabelas podem ser referenciadas com a op��o _-t tabela_ e existem 3 tabelas dispon�veis no `iptables': * `filter' - Esta � a tabela padr�o, cont�m 3 chains padr�es: * `INPUT' - Consultado para dados que chegam a m�quina * `OUTPUT' - Consultado para dados que saem da m�quina * `FORWARD' - Consultado para dados que s�o redirecionados para outra interface de rede ou outra m�quina. Os chains _INPUT_ e _OUTPUT_ somente s�o atravessados por

conex�es indo/se originando de localhost. _OBS_: Para conex�es locais, somente os chains _INPUT_ e _OUTPUT_ s�o consultados na tabela filter. * `nat' - Usada para dados que gera outra conex�o (masquerading, source nat, destination nat, port forwarding, proxy transparente s�o alguns exemplos). Possui 3 chains padr�es: * `PREROUTING' - Consultado quando os pacotes precisam ser modificados logo que chegam. � o chain ideal para realiza��o de DNAT e redirecionamento de portas (Se��o 9.4.4, `Fazendo DNAT'). * `OUTPUT' - Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. Este chain somente � consultado para conex�es que se originam de IPs de interfaces locais. * `POSTROUTING' - Consultado quando os pacotes precisam ser modificados ap�s o tratamento de roteamento. � o chain ideal para realiza��o de SNAT e IP Masquerading (Se��o 9.4.3, `Fazendo SNAT'). * `mangle' - Utilizada para altera��es especiais de pacotes (como modificar o tipo de servi�o (TOS) ou outros detalhes que ser�o explicados no decorrer do cap�tulo. Possui 2 chains padr�es: * `PREROUTING' - Consultado quando os pacotes precisam ser modificados logo que chegam. * `OUTPUT' - Consultado quando pacotes gerados localmente precisam ser modificados antes de serem roteados. Veja Se��o 9.5, `A tabela mangle' para mais detalhes sobre a tabela mangle. 9.1.15. Habilitando o suporte ao iptables no kernel --------------------------------------------------Para usar toda a funcionalidade do firewall `iptables', permitindo fazer o controle do que tem ou n�o permiss�o de acessar sua m�quina, fazer Masquerading/NAT em sua rede, etc., voc� precisar� dos seguintes componentes compilados em seu kernel (os m�dulos experimentais fora ignorados intencionalmente): * * Network Options: * Network packet filtering (replaces ipchains) [Y/m/n/?] Network packet filtering debugging [Y/m/n/?] e na Subse��o: * * IP: Netfilter Configuration * Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) [M/n/y/?] FTP protocol support (CONFIG_IP_NF_FTP) [M/n/?] IRC protocol support (CONFIG_IP_NF_IRC) [M/n/?] IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) [Y/m/n/?] limit match support (CONFIG_IP_NF_MATCH_LIMIT) [Y/m/n/?] MAC address match support (CONFIG_IP_NF_MATCH_MAC) [M/n/y/?]

netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [M/n/y/?] Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT) [M/n/y/?] TOS match support (CONFIG_IP_NF_MATCH_TOS) [M/n/y/?] LENGTH match support (CONFIG_IP_NF_MATCH_LENGTH) [M/n/y/?] TTL match support (CONFIG_IP_NF_TTL) [M/n/y/?] tcpmss match support (CONFIG_IP_NF_MATCH_TCPMSS) [M/n/y/?] Connection state match support (CONFIG_IP_NF_MATCH_STATE) [M/n/?] Packet filtering (CONFIG_IP_NF_FILTER) [M/n/y/?] REJECT target support (CONFIG_IP_NF_TARGET_REJECT) [M/n/?] Full NAT (CONFIG_IP_NF_NAT) [M/n/?] MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) [M/n/?] REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) [M/n/?] Packet mangling (CONFIG_IP_NF_MANGLE) [M/n/y/?] TOS target support (CONFIG_IP_NF_TARGET_TOS) [M/n/?] MARK target support (CONFIG_IP_NF_TARGET_MARK) [M/n/?] LOG target support (CONFIG_IP_NF_TARGET_LOG) [M/n/y/?] TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) [M/n/y/?] Esta configura��o permite que voc� n�o tenha problemas para iniciar o uso e configura��o do seu firewall iptables, ela ativa os m�dulos necess�rios para utiliza��o de todos os recursos do firewall `iptables'. Quando conhecer a fun��o de cada um dos par�metros acima (durante o decorrer do texto), voc� poder� eliminar muitas das op��es desnecess�rias para seu estilo de firewall ou continuar fazendo uso de todas ;-) _OBS1:_ A configura��o acima leva em considera��o que voc� N�O executar� os c�digos antigos de firewall `ipfwadm' e `ipchains'. Caso deseje utilizar o `ipchains' ou o `ipfwadm', ser� preciso responder com "M" a quest�o "IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES)". Ser� necess�rio carregar manualmente o m�dulo correspondente ao firewall que deseja utilizar (`modprobe `iptables_filter.o'' no caso do `iptables'). N�o execute mais de um tipo de firewall ao mesmo tempo!!! _OBS2:_ � recomend�vel ativar o daemon `kmod' para carga autom�tica de m�dulos, caso contr�rio ser� necess�rio compilar todas as partes necess�rias embutidas no kernel, carregar os m�dulos necess�rios manualmente ou pelo `iptables' (atrav�s da op��o _--modprobe=m�dulo_). 9.1.16. Ligando sua rede interna a Internet ------------------------------------------Se a sua inten��o (como da maioria dos usu�rios) � conectar sua rede interna a Internet de forma r�pida e simples, leia Se��o 9.4.2, `Fazendo IP masquerading (para os apressados)' ou Se��o 9.4.3, `Fazendo SNAT'. Um exemplo pr�tico de configura��o de Masquerading deste tipo � encontrado em Se��o 9.8.3, `Conectando sua rede interna a Internet'. Ap�s configurar o masquerading, voc� s� precisar� especificar o endere�o IP da m�quina masquerading (servidor) como _Gateway_ da rede. No `Windows 9x/NT/2000' isto � feito no Painel de Controle/Rede/Propriedades de Tcp/IP. No `Linux' pode ser feito com `route add default gw IP_do_Servidor'.

9.2. Manipulando chains ----------------------As op��es passadas ao `iptables' usadas para manipular os chains s�o _SEMPRE_ em mai�sculas. As seguintes opera��es podem ser realizadas com os chains: 9.2.1. Adicionando regras - A ----------------------------Como exemplo vamos criar uma regra que bloqueia o acesso a nosso pr�pria m�quina (127.0.0.1 - loopback). Primeiro daremos um ping para verificar seu funcionamento: #ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.6 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.5 ms --- 127.0.0.1 ping statistics --2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.5/0.5/0.6 ms Ok, a m�quina responde, agora vamos incluir uma regra no chain INPUT (_-A INPUT_) que bloqueie (_-j DROP_) qualquer acesso indo ao endere�o 127.0.0.1 (_-d 127.0.0.1_): `iptables -t filter -A INPUT -d 127.0.0.1 -j DROP' Agora verificamos um novo ping: #ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes --- 127.0.0.1 ping statistics --2 packets transmitted, 0 packets received, 100% packet loss Desta vez a m�quina 127.0.0.1 n�o respondeu, pois todos os pacotes com o destino 127.0.0.1 (-d 127.0.0.1) s�o rejeitados (-j DROP). A op��o _-A_ � usada para adicionar novas regras no final do chain. Al�m de _-j DROP_ que serve para rejeitar os pacotes, podemos tamb�m usar _-j ACCEPT_ para aceitar pacotes. A op��o `-j' � chamada de _alvo da regra_ ou somente _alvo_ pois define o destino do pacote que atravessa a regra (veja Se��o 9.3.6, `Especificando um alvo'). Bem vindo a base de um sistema de firewall :-) _OBS1:_ - O acesso a interface loopback n�o deve ser de forma alguma bloqueado, pois muitos aplicativos utilizam soquetes tcp para realizarem conex�es, mesmo que voc� n�o possua uma rede interna. _OBS2:_ - A tabela _filter_ ser� usada como padr�o caso nenhuma tabela seja especificada atrav�s da op��o `-t'. 9.2.2. Listando regras - L -------------------------A seguinte sintaxe � usada para listar as regras criadas:

`iptables [_-t tabela_] -L [_chain_] [_op��es_]' Onde: _tabela_ � uma das tabelas usadas pelo `iptables'. Se a tabela n�o for especificada, a tabela _filter_ ser� usada como padr�o. Veja Se��o 9.1.14, `O que s�o tabelas?' para detalhes. _chain_ Um dos chains dispon�veis na tabela acima (veja Se��o 9.1.14, `O que s�o tabelas?') ou criado pelo usu�rio (Se��o 9.2.6, `Criando um novo chain - N'). Caso o chain n�o seja especificado, todos os chains da tabela ser�o mostrados. _op��es_ As seguintes op��es podem ser usadas para listar o conte�do de chains: * `-v' - Exibe mais detalhes sobre as regras criadas nos chains. * `-n' - Exibe endere�os de m�quinas/portas como n�meros ao inv�s de tentar a resolu��o DNS e consulta ao `/etc/services'. A resolu��o de nomes pode tomar muito tempo dependendo da quantidade de regras que suas tabelas possuem e velocidade de sua conex�o. * `-x' - Exibe n�meros exatos ao inv�s de n�meros redondos. Tamb�m mostra a faixa de portas de uma regra de firewall. * `--line-numbers' - Exibe o n�mero da posi��o da regra na primeira coluna da listagem. Para listar a regra criada anteriormente usamos o comando: #iptables -t filter -L INPUT Chain INPUT (policy ACCEPT) target prot opt source DROP all -- anywhere

destination localhost

O comando `iptables -L INPUT -n' tem o mesmo efeito, a diferen�a � que s�o mostrados n�meros ao inv�s de nomes: #iptables -L INPUT -n Chain INPUT (policy ACCEPT) target prot opt source DROP all -- 0.0.0.0/0

destination 127.0.0.1

#iptables -L INPUT -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source 1 DROP all -- 0.0.0.0/0

destination 127.0.0.1

#iptables -L INPUT -n -v Chain INPUT (policy ACCEPT 78 packets, 5820 bytes) pkts bytes target prot opt in out source 2 194 DROP icmp -- * * 0.0.0.0/0 Os campos assim possuem o seguinte significado: Chain INPUT Nome do chain listado (policy ACCEPT 78 packets, 5820 bytes)

destination 127.0.0.1

pkts

Policiamento padr�o do chain (veja Se��o 9.2.11, `Especificando o policiamento padr�o de um chain - P'). Quantidade de pacotes que atravessaram a regra (veja Se��o 9.2.10, `Zerando contador de bytes dos chains - Z').

bytes

Quantidade de bytes que atravessaram a regra. Pode ser referenciado com K (Kilobytes), M (Megabytes), G (Gigabytes). target O alvo da regra, o destino do pacote. Pode ser ACCEPT, DROP ou outro chain. Veja Se��o 9.3.6, `Especificando um alvo' para detalhes sobre a especifica��o de um alvo. prot Protocolo especificado pela regra. Pode ser udp, tcp, icmp ou all. Veja Se��o 9.3.3, `Especificando um protocolo' para detalhes. opt Op��es extras passadas a regra. Normalmente "!" (veja Se��o 9.3.5, `Especificando uma exce��o') ou "f" (veja Se��o 9.3.4, `Especificando fragmentos'). in Interface de entrada (de onde os dados chegam). Veja Se��o 9.3.2, `Especificando a interface de origem/destino'. out Interface de sa�da (para onde os dados v�o). Veja Se��o 9.3.2, `Especificando a interface de origem/destino'. source Endere�o de origem. Veja Se��o 9.3.1, `Especificando um endere�o de origem/destino'. destination Endere�o de destino. Veja Se��o 9.3.1, `Especificando um endere�o de origem/destino'. outras op��es Estas op��es normalmente aparecem quando s�o usadas a op��o -x: * `dpt ou dpts' - Especifica a porta ou faixa de portas de destino. * `reject-with icmp-port-unreachable' - Significa que foi usado o alvo REJECT naquela regra (veja Se��o 9.3.6.1, `Alvo REJECT'). 9.2.3. Apagando uma regra - D ----------------------------Para apagar um chain, existem duas alternativas: 1. Quando sabemos qual � o n�mero da regra no chain (listado com a op��o `-L') podemos referenciar o n�mero diretamente. Por exemplo, para apagar a regra criada acima: `iptables -t filter -D INPUT 1' Esta op��o n�o � boa quando temos um firewall complexo com um grande n�mero de regras por chains, neste caso a segunda op��o � a mais apropriada. 2. Usamos a mesma sintaxe para criar a regra no chain, mas trocamos `-A' por `-D': `iptables -t filter -D INPUT -d 127.0.0.1 -j DROP' Ent�o a regra correspondentes no chain INPUT ser� automaticamente apagada (confira listando o chain com a op��o "-L"). Caso o chain possua v�rias regras semelhantes, somente a primeira ser� apagada.

9.2.4. Inserindo uma regra - I -----------------------------Precisamos que o tr�fego vindo de `192.168.1.15' n�o seja rejeitado pelo nosso firewall. N�o podemos adicionar uma nova regra (-A) pois esta seria inclu�da no final do chain e o tr�fego seria rejeitado pela primeira regra (nunca atingindo a segunda). A solu��o � inserir a nova regra antes da regra que bloqueia todo o tr�fego ao endere�o `127.0.0.1' na posi��o 1: `iptables -t filter -I INPUT 1 -s 192.168.1.15 -d 127.0.0.1 -j ACCEPT' Ap�s este comando, temos a regra inserida na primeira posi��o do chain (repare no n�mero 1 ap�s INPUT) e a antiga regra n�mero 1 passa a ser a n�mero 2. Desta forma a regra acima ser� consultada, se a m�quina de origem for 192.168.1.15 ent�o o tr�fego estar� garantido, caso contr�rio o tr�fego com o destino 127.0.0.1 ser� bloqueado na regra seguinte. 9.2.5. Substituindo uma regra - R --------------------------------Ap�s criar nossa regra, percebemos que a nossa inten��o era somente bloquear os pings com o destino `127.0.0.1' (pacotes ICMP) e n�o havia necessidade de bloquear todo o tr�fego da m�quina. Existem duas alternativas: apagar a regra e inserir uma nova no lugar ou modificar diretamente a regra j� criada sem afetar outras regras existentes e mantendo a sua ordem no chain (isso � muito importante). Use o seguinte comando: `iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP' O n�mero `2' � o n�mero da regra que ser� substitu�da no chain INPUT, e deve ser especificado. O comando acima substituir� a regra 2 do chain INPUT (-R INPUT 2) bloqueando (-j DROP) qualquer pacote icmp (-p icmp) com o destino `127.0.0.1' (-d 127.0.0.1). 9.2.6. Criando um novo chain - N -------------------------------Em firewalls organizados com um grande n�mero de regras, � interessante criar chains individuais para organizar regras de um mesmo tipo ou que tenha por objetivo analisar um tr�fego de uma mesma categoria (interface, endere�o de origem, destino, protocolo, etc) pois podem consumir muitas linhas e tornar o gerenciamento do firewall confuso (e conseq�entemente causar s�rios riscos de seguran�a). O tamanho m�ximo de um nome de chain � de 31 caracteres e podem conter tanto letras mai�sculas quanto min�sculas. `iptables [_-t tabela_] [_-N novochain_]' Para criar o chain _internet_ (que pode ser usado para agrupar as regras de internet) usamos o seguinte comando: iptables -t filter -N internet Para inserir regras no chain _internet_ basta especifica-lo ap�s a

op��o -A: iptables -t filter -A internet -s 200.200.200.200 -j DROP E ent�o criamos um pulo (-j) do chain _INPUT_ para o chain _internet_: `iptables -t filter -A INPUT -j internet' _OBS:_ O chain criando pelo usu�rio pode ter seu nome tanto em mai�sculas como min�sculas. Se uma m�quina do endere�o 200.200.200.200 tentar acessar sua m�quina, o `iptables' consultar� as seguintes regras: `INPUT' ---------------------------| Regra1: -s 192.168.1.15 | |--------------------------| | Regra2: -s 192.168.1.1 | |--------------------------| | Regra3: -j DROP | ----------------------------

`internet' ----------------------------| Regra1: -s 200.200.200.200| |---------------------------| | Regra2: -d 192.168.1.1 | -----------------------------

O pacote tem o endere�o de origem 200.200.200.200, ele passa pela primeira e segunda regras do chain INPUT, a terceira regra direciona para o chain internet _______________________________________ v / v /-------------------------|-\ / /-------------------------------------|-\ | Regra1: -s 192.168.1.15 | | / | Regra1: -s 200.200.200.200 -j DROP \_____\ |-------------------------|-| / |---------------------------------------| / | Regra2: -s 192.168.1.1 | | / | Regra2: -d 200.200.200.202 -j DROP | |-------------------------|-|/ \---------------------------------------/ | Regra3: -j internet /| |---------------------------| No chain internet, a primeira regra confere | Regra4: -j DROP | com o endere�o de origem 200.200.200.200 e \---------------------------/ o pacote � bloqueado. Se uma m�quina com o endere�o de origem 200.200.200.201 tentar acessar a m�quina, ent�o as regra consultadas ser�o as seguintes: O pacote tem o endere�o de origem 200.200.200.201, ele passa pela primeira e segunda regras do chain INPUT, a terceira regra direciona para o chain internet ______________________________________ v / v /-------------------------|-\ / /-------------------------------------|-\ | Regra1: -s 192.168.1.15 | | / | Regra1: -s 200.200.200.200 -j DROP | | |-------------------------|-| / |-------------------------------------|-| | Regra2: -s 192.168.1.1 | | / | Regra2: -s 200.200.200.202 -j DROP | | |-------------------------|-|/ \-------------------------------------|-/ | Regra3: -j internet /| v

|---------------------------| / | Regra4: -j DROP --+------------------------------------------\------------------------/-/ O pacote passa pelas regras 1 e 2 do chain | internet, como ele n�o confere com nenhuma v das 2 regras ele retorna ao chain INPUT e � Esta regra � a n�mero 4 analisado pela regra seguinte. que diz para rejeitar o pacote. 9.2.7. Listando os nomes de todos os chains atuais -------------------------------------------------Use o comando `cat /proc/net/ip_tables_names' para fazer isto. interessante dar uma olhada nos arquivos dentro do diret�rio `/proc/net', pois podem lhe ser interessantes.



9.2.8. Limpando as regras de um chain - F ----------------------------------------Para limpar todas as regras de um chain, use a seguinte sintaxe: `iptables [_-t tabela_] [_-F chain_]' Onde: _tabela_ Tabela que cont�m o chain que desejamos zerar. _chain_ Chain que desejamos limpar. Caso um chain n�o seja especificado, todos os chains da tabela ser�o limpos. iptables -t filter -F INPUT iptables -t filter -F 9.2.9. Apagando um chain criado pelo usu�rio - X -----------------------------------------------Para apagarmos um chain criado pelo usu�rio, usamos a seguinte sintaxe: `iptables [_-t tabela_] [_-X chain_]' Onde: tabela Nome da tabela que cont�m o chain que desejamos excluir. chain Nome do chain que desejamos apagar. Caso n�o seja especificado, todos os chains definidos pelo usu�rio na tabela especificada ser�o exclu�dos. _OBS:_ - Chains embutidos nas tabelas n�o podem ser apagados pelo usu�rio. Veja os nomes destes chains em Se��o 9.1.14, `O que s�o tabelas?'. iptables -t filter -X internet iptables -X

9.2.10. Zerando contador de bytes dos chains - Z -----------------------------------------------Este comando zera o campo _pkts_ e _bytes_ de uma regra do `iptables'. Estes campos podem ser visualizados com o comando `iptables -L -v'. A seguinte sintaxe � usada: `iptables [_-t tabela_] [_-Z chain_] [_-L_' Onde: _tabela_ Nome da tabela que cont�m o chain que queremos zerar os contadores de bytes e pacotes. _chain_ Chain que deve ter os contadores zerados. Caso n�o seja especificado, todos os chains da tabela ter�o os contadores zerados. Note que as op��es _-Z_ e _-L_ podem ser usadas juntas, assim o chain ser� listado e imediatamente zerado. Isto evita a passagem de pacotes durante a listagem de um chain. iptables -t filter -Z INPUT 9.2.11. Especificando o policiamento padr�o de um chain - P ----------------------------------------------------------O policiamento padr�o determina o que acontecer� com um pacote quando ele chegar ao final das regras contidas em um chain. O policiamento padr�o do `iptables' � "ACCEPT" mas isto pode ser alterado com o comando: `iptables [_-t tabela_] [_-P chain_] [_ACCEPT/DROP_]' Onde: tabela Tabela que cont�m o chain que desejamos modificar o policiamento padr�o. chain Define o chain que ter� o policiamento modificado. O chain deve ser especificado. ACCEPT/DROP ACCEPT aceita os pacotes caso nenhuma regra do chain conferir (usado em regras permissivas). DROP rejeita os pacotes caso nenhuma regra do chain conferir (usado em regras restritivas). O policiamento padr�o de um chain � mostrado com o comando `iptables -L': # iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source DROP icmp -- anywhere

destination localhost

No exemplo acima, o policiamento padr�o de INPUT � ACCEPT (policy ACCEPT), o que significa que qualquer pacote que n�o seja rejeitado pela regra do chain, ser� aceito. Para alterar o policiamento padr�o deste chain usamos o comando: iptables -t filter -P INPUT DROP _OBS:_ Note que policiamentos PERMISSIVOS (ACCEPT) normalmente s�o

usados em conjunto com regras restritivas no chain correspondentes (tudo � bloqueado e o que sobrar � liberado) e policiamentos RESTRITIVOS (DROP) s�o usados em conjunto com regras permissivas no chain correspondente (tudo � liberado e o que sobrar � bloqueado pelo policiamento padr�o). 9.3. Outras op��es do iptables -----------------------------9.3.1. Especificando um endere�o de origem/destino -------------------------------------------------As op��es `-s' (ou --src/--source)e `-d' (ou --dst/--destination) servem para especificar endere�os de _origem_ e _destino_ respectivamente. � permitido usar um endere�o IP completo (como 192.168.1.1), um hostname (debian), um endere�o fqdn (www.debian.org) ou um par _rede/m�scara_ (como 200.200.200.0/255.255.255.0 ou 200.200.200.0/24). Caso um endere�o/m�scara n�o sejam especificados, � assumido _0/0_ como padr�o (todos as m�quinas de todas as redes). A interpreta��o dos endere�os de origem/destino dependem do chain que est� sendo especificado (como INPUT e OUTPUT por exemplo). _OBS:_ Caso seja especificado um endere�o fqdn e este resolver mais de um endere�o IP, ser�o criadas v�rias regras, cada uma se aplicando a este endere�o IP espec�fico. � recomend�vel sempre que poss�vel a especifica��o de endere�os IP's nas regras, pois al�m de serem muito r�pidos (pois n�o precisar de resolu��o DNS) s�o mais seguros para evitar que nosso firewall seja enganado por um ataque de IP spoofing. # Bloqueia o tr�fego vindo da rede 200.200.200.*: iptables -A INPUT -s 200.200.200.0/24 -j DROP # Bloqueia conex�es com o destino 10.1.2.3: iptables -A OUTPUT -d 10.1.2.3 -j DROP # Bloqueia o tr�fego da m�quina www.dominio.teste.org a rede 210.21.1.3 # nossa m�quina possui o endere�o 210.21.1.3 iptables -A INPUT -s www.dominio.teste.org -d 210.21.1.3 -j DROP 9.3.2. Especificando a interface de origem/destino -------------------------------------------------As op��es _-i_ (ou --in-interface) e _-o_ (ou --out-interface) especificam as interfaces de origem/destino de pacotes. Nem todos as chains aceitam as interfaces de origem/destino simultaneamente, a interface de entrada (-i) nunca poder� ser especificada em um chain OUTPUT e a interface de sa�da (-o) nunca poder� ser especificada em um chain INPUT. Abaixo uma r�pida refer�ncia: +---------------------+--------------------------------+ | CHAIN | INTERFACE | | +----------------+---------------+ | | ENTRADA (-i) | SA�DA (-o) | +---------+---------------------+----------------+---------------+ | | INPUT | SIM | N�O | TABELA

| filter | OUTPUT | N�O | SIM | | | FORWARD | SIM | SIM | +---------+---------------------+----------------+---------------+ | | PREROUTING | SIM | N�O | | nat | OUTPUT | N�O | SIM | | | POSTROUTING | N�O | SIM | +---------+---------------------+----------------+---------------+ | | PREROUTING | SIM | N�O | | mangle | | | | | | OUTPUT | N�O | SIM | +---------+---------------------+----------------+---------------+ A defini��o de qual interface � permitida em qual chain � determinada pela posi��o dos chains nas etapas de roteamento do pacote. O chain OUTPUT da tabela filter somente poder� conter a interface de sa�da (veja a tabela acima). O chain FORWARD da tabela filter � o �nico que aceita a especifica��o de ambas as interfaces, este � um �timo chain para controlar o tr�fego que passa entre interfaces do firewall. Por exemplo para bloquear o acesso do tr�fego de qualquer m�quina com o endere�o 200.123.123.10 vinda da interface ppp0 (uma placa de fax-modem): iptables -A INPUT -s 200.123.123.10 -i ppp0 -j DROP A mesma regra pode ser especificada como iptables -A INPUT -s 200.123.123.10 -i ppp+ -j DROP O sinal de "+" funciona como um coringa, assim a regra ter� efeito em qualquer interface de ppp0 a ppp9. As interfaces ativas no momento podem ser listadas com o comando `ifconfig', mas � permitido especificar uma regra que faz refer�ncia a uma interface que ainda n�o existe, isto � interessante para conex�es intermitentes como o PPP. Para bloquear qualquer tr�fego local para a Internet: iptables -A OUTPUT -o ppp+ -j DROP Para bloquear a passagem de tr�fego da interface ppp0 para a interface eth1 (de uma de nossas redes internas): iptables -A FORWARD -i ppp0 -o eth1 -j DROP 9.3.3. Especificando um protocolo --------------------------------A op��o `-p' (ou --protocol) � usada para especificar protocolos no `iptables'. Podem ser especificados os protocolos _tcp_, _udp_ e _icmp_. Por exemplo, para rejeitar todos os pacotes UDP vindos de 200.200.200.200: iptables -A INPUT -s 200.200.200.200 -p udp -j DROP _OBS1:_ Tanto faz especificar os nomes de protocolos em mai�sculas ou min�sculas. 9.3.3.1. Especificando portas de origem/destino -----------------------------------------------

As portas de origem/destino devem ser especificadas ap�s o protocolo e podem ser precedidas por uma das seguintes op��es: * `--source-port ou --sport' - Especifica uma porta ou faixa de portas de origem. * `--destination-port ou --dport' - Especifica uma porta ou faixa de portas de destino. Uma faixa de portas pode ser especificada atrav�s de `PortaOrigem:PortaDestino': # Bloqueia qualquer pacote indo para 200.200.200.200 na faixa de # portas 0 a 1023 iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport :1023 -j DROP Caso a _PortaOrigem_ de uma faixa de portas n�o seja especificada, 0 � assumida como padr�o, caso a _Porta Destino_ n�o seja especificada, 65535 � assumida como padr�o. Caso precise especificar diversas regras que envolvam o tratamento de portas diferentes, recomendo da uma olhada em Se��o 9.6.6, `Especificando m�ltiplas portas de origem/destino', antes de criar um grande n�mero de regras. 9.3.3.2. Especificando mensagens do protocolo ICMP -------------------------------------------------O protocolo ICMP n�o possui portas, mas � poss�vel fazer um controle maior sobre o tr�fego ICMP que entra/sai da rede atrav�s da especifica��o dos tipos de mensagens ICMP. Os tipos de mensagens devem ser especificados com a op��o "--icmp-type _C�digoICMP_" logo ap�s a especifica��o do protocolo icmp: iptables -A INPUT -s 200.123.123.10 -p icmp --icmp-type time-exceeded -i ppp+ -j DROP A regra acima rejeitar� mensagens ICMP do tipo "time-exceeded" (tempo de requisi��o excedido) que venham do endere�o 200.123.123.10 atrav�s da interface _ppp+_. Alguns tipos de mensagens ICMP s�o classificados por categoria (como o pr�prio "time-exceeded"), caso a categoria "time-exceeded" seja especificada, todas as mensagens daquela categoria (como "ttl-zero-during-transit", "ttl-zero-during-reassembly") conferir�o na regra especificada.Os tipos de mensagens ICMP podem ser obtidos com o comando `iptables -p icmp -h': echo-reply (pong) destination-unreachable network-unreachable host-unreachable protocol-unreachable port-unreachable fragmentation-needed source-route-failed network-unknown host-unknown network-prohibited host-prohibited TOS-network-unreachable TOS-host-unreachable communication-prohibited

host-precedence-violation precedence-cutoff source-quench redirect network-redirect host-redirect TOS-network-redirect TOS-host-redirect echo-request (ping) router-advertisement router-solicitation time-exceeded (ttl-exceeded) ttl-zero-during-transit ttl-zero-during-reassembly parameter-problem ip-header-bad required-option-missing timestamp-request timestamp-reply address-mask-request address-mask-reply _OBS1:_ N�o bloqueie mensagens do tipo "host-unreachable" sen�o ter� s�rios problemas no controle de suas conex�es. 9.3.3.3. Especificando pacotes syn ---------------------------------Pacotes syn s�o usados para iniciarem uma conex�o, o uso da op��o --syn serve para especificar estes tipos de pacotes. Desta maneira � poss�vel bloquear somente os pacotes que iniciam uma conex�o, sem afetar os pacotes restantes. Para que uma conex�o ocorra � necess�rio que a m�quina obtenha a resposta a pacotes syn enviados, caso ele seja bloqueado a resposta nunca ser� retornada e a conex�o n�o ser� estabelecida. iptables -A INPUT -p tcp --syn --dport 23 -i ppp+ -j DROP A regra acima bloqueia (-j DROP) qualquer tentativa de conex�o (--syn) vindas da interface ppp+ ao telnet (--dport 23) da m�quina local, conex�es j� efetuadas �o s�o afetadas por esta regra. A op��o --syn somente pode ser especificada para o protocolo tcp. _ATEN��O:_ - A situa��o de passagem de pacotes durante deve ser levada em conta durante a inicializa��o do firewall, bloqueando a passagem de pacotes durante o processo de configura��o, criando regras que bloqueiam a passagem de pacotes (exceto para a interface loopback) at� que a configura��o do firewall esteja completa, pode ser uma solu��o eficiente. Outra alternativa segura � configurar as regras de firewall antes das interfaces de rede se tornarem ativas (usando a op��o "pre-up comando_firewall" no arquivo de configura��o `/etc/network/interfaces' em sistemas `Debian'. 9.3.4. Especificando fragmentos -------------------------------

A op��o "-f" (ou --fragment) permite especificar regras que confiram com fragmentos. Fragmentos s�o simplesmente um pacote maior dividido em peda�os para poder ser transmitido via rede TCP/IP para remontagem do pacote pela m�quina de destino. Somente o primeiro fragmento possui detalhes de cabe�alho para ser processado, os segundos e seguintes somente possuem alguns cabe�alhos necess�rios para dar continuidade ao processo de remontagem do pacote no destino. Uma regra como iptables -A INPUT -s 200.200.200.1 -f -j DROP derrubar� os fragmentos de 200.200.200.1 que cheguem at� n�s. _OBS1:_ Note que se o cabe�alho do pacote n�o tiver detalhes suficientes para checagem de regras no `iptables', a regra simplesmente n�o ira conferir. _OBS2:_ N�o � preciso especificar a op��o "-f" para conex�es NAT, pois os pacotes s�o remontados antes de entrarem no c�digo de filtragem. _OBS3:_ A op��o "-f" tamb�m pode ser usada para evitar o flood por fragmentos (bomba de fragmentos) que, dependendo da intensidade, podem at� travar a m�quina. 9.3.5. Especificando uma exce��o -------------------------------Muitos par�metros como o endere�o de origem/destino, protocolo, porta, mensagens ICMP, fragmentos, etc) podem ser precedidos pelo sinal "!" que significa exce��o. Por exemplo: iptables -t filter -A INPUT ! -s 200.200.200.10 -j DROP Diz para rejeitar todos os pacotes EXCETO os que vem do endere�o `200.200.200.10'. iptables -A INPUT -p tcp ! --syn -s 200.200.200.10 ! -i eth0 -j DROP Diz para bloquear todos os pacotes EXCETO os que iniciam conex�es (! --syn), EXCETO para pacotes vindos na interface eth0 (! -i eth0). iptables -A INPUT -s 200.200.200.10 ! -p tcp -j DROP Bloqueia todos os pacotes vindos de 200.200.200.10, EXCETO os do protocolo tcp. 9.3.6. Especificando um alvo ---------------------------O alvo (-j) � o destino que um pacote ter� quando conferir com as condi��es de uma regra, um alvo pode dizer para bloquear a passagem do pacote (-j DROP), aceitar a passagem do pacote (-j ACCEPT), registrar o pacote no sistema de log (-j LOG), rejeitar o pacote (-j REJECT), redirecionar um pacote -j REDIRECT, retornar ao chain anterior sem completar o processamento no chain atual (-j RETURN), passar para

processamento de programas externos (-j QUEUE), fazer source nat (-j SNAT), destination nat (-j DNAT), etc. Podem existir mais alvos, pois o `iptables' � modulariz�vel, e m�dulos que acrescentam mais fun��es podem ser carregados em adi��o aos j� existentes no kernel. Nos exemplos anteriores vimos o uso de diversos alvos como o DROP e o ACCEPT. Apenas farei uma breve refer�ncia sobre os alvos mais usados em opera��es mais comuns dos chains. Os alvos REDIRECT, SNAT e DNAT ser�o explicados em uma se��o seguinte: ACCEPT O pacote � ACEITO e o processamento das regras daquele chains � conclu�do. Pode ser usado como alvo em todos os chains de todas as tabelas do `iptables' e tamb�m pode ser especificado no policiamento padr�o das regras do firewall (veja Se��o 9.2.11, `Especificando o policiamento padr�o de um chain - P'). DROP Rejeita o pacote e o processamento das regras daquele chain � conclu�do. Pode ser usado como alvo em todos os chains de todas as tabelas do `iptables' e tamb�m pode ser especificado no policiamento padr�o das regras do firewall (veja Se��o 9.2.11, `Especificando o policiamento padr�o de um chain - P'). REJECT Este � um m�dulo opcional que faz a mesma fun��o do alvo _DROP_ com a diferen�a de que uma mensagem ICMP do tipo "icmp-port-unreachable" � retornada para a m�quina de origem. Pode ser usado como alvo somente nos chains da tabela _filter_. LOG Este m�dulo envia uma mensagem ao syslog caso a regra confira, o processamento continua normalmente para a pr�xima regra (o pacote n�o � nem considerado ACEITO ou REJEITADO). RETURN Retorna o processamento do chain anterior sem processar o resto do chain atual. QUEUE Passa o processamento para um programa a n�vel de usu�rio. 9.3.6.1. Alvo REJECT -------------------Para ser usado, o m�dulo `ipt_REJECT' deve ser compilado no kernel ou como m�dulo. Este alvo rejeita o pacote (como o _DROP_) e envia uma mensagem ICMP do tipo "icmp-port-unreachable" para a m�quina de origem. � um alvo interessante para bloqueio de portas TCP, pois em alguns casos da a impress�o que a m�quina n�o disp�e de um sistema de firewall (o alvo DROP causa uma parada de muito tempo em alguns portscanners e tentativas de conex�o de servi�os, revelando imediatamente o uso de um sistema de firewall pela m�quina). O alvo REJECT vem dos tempos do ipchains e somente pode ser usado na tabela _filter_. Quando um pacote confere, ele � rejeitado com a mensagem ICMP do tipo "port unreachable", � poss�vel especificar outro tipo de mensagem ICMP com a op��o _--reject-with tipo_icmp_. _OBS:_ REJECT pode ser usado somente como alvo na tabela filter e n�o � poss�vel especifica-lo como policiamento padr�o do chain filter (como acontecia no `ipchains'. Uma forma alternativa � inserir como �ltima regra uma que pegue todos os pacotes restantes daquele chain e

tenha como alvo REJECT (como `iptables -A INPUT -j REJECT'), desta forma ele nunca atingir� o policiamento padr�o do chain. # Rejeita pacotes vindos de 200.200.200.1 pela interface ppp0: iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT 9.3.6.2. Especificando LOG como alvo -----------------------------------Este alvo � usado para registrar a passagem de pacotes no `syslog' do sistema. � um alvo muito interessante para ser usado para regras que bloqueiam determinados tr�fegos no sistema (para que o administrador tome conhecimento sobre tais tentativas), para regras de fim de chain (quando voc� tem um grande conjunto de regras em um firewall restritivo e n�o sabe onde suas regras est�o sendo bloqueadas), para satisfazer sua curiosidade, etc. # Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface ppp0 iptables -A INPUT -s 200.200.200.1 -i ppp+ -j LOG # Para efetuar o bloqueio iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT Note que a regra que registra o pacote (-j LOG) deve aparecer antes da regra que REJEITA (-j REJECT), caso contr�rio a regra de LOG nunca funcionar�. A �nica coisa que muda nas regras de log � o alvo da regra, isto facilita a implementa��o de grandes conjuntos de regras de firewall. A regra acima mostrar� a seguinte sa�da no `syslog' do sistema: Aug 25 10:08:01 debian kernel: IN=ppp0 OUT= MAC=10:20:30:40:50:60:70:80:90:00:00:00:08:00 SRC=200.200.200.1 DST=200.210.10.10 LEN=61 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=1031 DPT=53 LEN=41 Os campos possuem o seguinte significado: Aug 25 10:08:01 M�s, dia e hora do registro do pacote. debian Nome do computador que registrou o pacote. kernel: Daemon que registrou a mensagem, no caso o `iptables' faz parte do pr�prio kernel. IN=ppp0 Especifica a interface de entrada (de onde o pacote veio). OUT= Especifica a interface de sa�da (para onde o pacote foi). MAC=10:20:30:40:50:60:70:80:90:00:00:00:08:00 Endere�o mac da interface de rede (pode ser obtido com `arp interface'). SRC=200.200.200.1 Endere�o de origem do pacote. DST=200.210.10.10 Endere�o de destino do pacote. LEN=61 Tamanho do pacote. TOS=0x00 Prioridade do cabe�alho TOS (prioridade normal neste caso). Veja a se��o Se��o 9.5.1, `Especificando o tipo de servi�o' para mais

detalhes. PROTO=UDP Nome do protocolo. Pode ser TCP, UDP ou ICMP SPT=1031 Porta de origem da requisi��o. DPT=53 Porta de destino da requisi��o. LEN=41 Tamanho do pacote. O log acima mostra uma consulta DNS (porta destino 53) para nossa m�quina (INPUT) de 200.200.200.1 para 200.210.10.10. O problema � que em um grande n�mero de regras ser� dif�cil saber qual regra conferiu (pois ter�amos que analisar o endere�o/porta origem/destino) e o destino do pacote (se ele foi ACEITO ou BLOQUEADO) pois voc� pode ter regras para ambas as situa��es. Por este motivo existem algumas op��es �teis que podemos usar com o alvo LOG: --log-prefix "descri��o" Permite especificar uma descri��o para a regra do firewall de at� 29 caracteres. Caso tiver espa�os, devem ser usadas "aspas". --log-level n�vel Especifica o n�vel da mensagem no `syslog'. --log-tcp-options Registra campos do cabe�alho TCP nos logs do sistema. --log-ip-options Registra campos do cabe�alho IP nos logs do sistema --log-tcp-sequence Registra os n�meros de seq�encia TCP. Evite ao m�ximo o uso desta op��o, pois a seq�encia de n�meros TCP pode ser a chave para um seq�estro de se��o ou IP spoofing em seu sistema caso algum usu�rio tenha acesso a estes logs. Lembre-se que estas op��es s�o referentes ao alvo LOG, e devem ser usadas ap�s este, caso contr�rio voc� ter� um pouco de trabalho para analisar e consertar erros em suas regras do firewall. # Complementando o exemplo anterior: # Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface ppp0 iptables -A INPUT -s 200.200.200.1 -i ppp+ -j LOG --log-prefix "FIREWALL: Derrubado " # Para efetuar o bloqueio iptables -A INPUT -s 200.200.200.1 -i ppp+ -j REJECT Retornar� a seguinte mensagem no syslog: Aug 25 10:08:01 debian kernel: FIREWALL: Rejeitado IN=ppp0 OUT= MAC=10:20:30:40:50:60:70:80:90:00:00:00:08:00 SRC=200.200.200.1 DST=200.210.10.10 LEN=61 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=1031 DPT=53 LEN=41 Agora voc� sabe o que aconteceu com o pacote (Rejeitado). A padroniza��o de mensagens de firewall � tamb�m importante para a cria��o de scripts de an�lise que poder�o fazer a an�lise dos logs do seu firewall (para cria��o de estat�sticas que podem servir como base para a cria��o de novas regras de firewall ou elimina��o de outras). _OBS:_ Se voc� sente falta da fun��o "-l" do `ipchains' que combina o alvo e log na mesma regra voc� pode criar um alvo como o seguinte: iptables -N log-drop iptables -A log-drop -j LOG

iptables -A log-drop -j DROP E usar "log-drop" como alvo em suas regras. Mesmo assim esta solu��o � "limitada" em rela��o a "-l" do `ipchains' porque o `iptables' n�o inclui detalhes de qual chain bloqueou o pacote/qual pacote foi bloqueado, assim � necess�rio a especifica��o da op��o _--log-prefix_ para as mensagens se tornarem mais compreens�veis. Infelizmente o `iptables' n�o aceita vari�veis, sen�o esta limita��o seria facilmente contornada. 9.3.6.3. Especificando RETURN como alvo --------------------------------------O alvo RETURN diz ao `iptables' interromper o processamento no chain atual e retornar o processamento ao chain anterior. Ele � �til quando criamos um chain que faz um determinado tratamento de pacotes, por exemplo bloquear conex�es vindas da internet para portas baixas, exceto para um endere�o IP espec�fico. Como segue: 1-) 2-) 3-) 4-) 5-) 6-) 7-) 8-)

iptables iptables iptables iptables iptables iptables iptables iptables

-t -t -t -t -t -t -t -t

filter filter filter filter filter filter filter filter

-A -j -N -A -A -A -A -A

INPUT -i ACCEPT internet internet internet internet internet internet

ppp0 -j internet -s -p -p -p -p

www.debian.org tcp --dport 21 tcp --dport 23 tcp --dport 25 tcp --dport 80

-p -j -j -j -j

tcp --dport 80 -j RETURN DROP DROP DROP DROP

Quando um pacote com o endere�o `www.debian.org' tentando acessar a porta www (80) de nossa m�quina atrav�s da internet (via interface ppp0), o chain n�mero 1 confere, ent�o o processamento continua no chain n�mero 4, o chain n�mero 4 confere ent�o o processamento volta para a regra n�mero 2, que diz para aceitar o pacote. Agora se um pacote vem com o endere�o `www.dominio.com.br' tentando acessar a porta www *80) de nossa m�quina atrav�s da internet (via interface ppp0), o chain n�mero 1 confere, ent�o o processamento continua no chain n�mero 4, que n�o confere. O mesmo acontece com os chains 5, 6 e 7. O chain n�mero 8 confere, ent�o o acesso � bloqueado. Como pode ter notado, o alvo RETURN pode facilitar bastante a constru��o das regras do seu firewall, caso existam m�quinas/redes que sejam exce��es as suas regras. Se ela n�o existisse, seria necess�rio especificar diversas op��es -s, -d, etc para poder garantir o acesso livre a determinadas m�quinas. 9.4. A tabela nat (Network Address Translation) - fazendo nat ------------------------------------------------------------A tabela _nat_ serve para controlar a tradu��o dos endere�os que atravessam o c�digo de roteamento da m�quina `Linux'. Existem 3 chains na tabela _nat_: _PREROUTING_, _OUTPUT_ e _POSTROUTING_ (veja Se��o 9.1.14, `O que s�o tabelas?' para maiores detalhes). A tradu��o de endere�os tem in�meras utilidades, uma delas � o Masquerading, onde m�quinas de uma rede interna podem acessar a

Internet atrav�s de uma m�quina `Linux', redirecionamento de porta, proxy transparente, etc. Esta se��o abordar� os tipos de NAT, exemplos de como criar rapidamente uma conex�o IP masquerading e entender como a tradu��o de endere�os funciona no `iptables'. Se sua inten��o � ligar sua rede a Internet existem duas op��es: * Voc� possui uma conex�o que lhe oferece um endere�o IP din�mico (a cada conex�o � dado um endere�o IP - como uma conex�o PPP) ent�o o IP masquerading � o que precisa (veja Se��o 9.4.2, `Fazendo IP masquerading (para os apressados)' ou Se��o 9.4.3.1, `Fazendo IP Masquerading'). * Voc� tem uma conex�o que lhe oferece um endere�o IP permanente (ADSL, por exemplo) ent�o o SNAT � o que precisa (veja Se��o 9.4.3, `Fazendo SNAT'). 9.4.1. Criando um novo chain na tabela NAT -----------------------------------------O procedimento para cria��o de um novo chain nesta tabela � o mesmo descrito em Se��o 9.2.6, `Criando um novo chain - N' ser� necess�rio somente especificar a tabela nat (-t nat) para que o novo chain n�o seja criado na tabela padr�o (-t filter). iptables -t nat -N intra-inter Que criar� o chain chamado _intra-inter_ na tabela _nat_. Para inserir regras neste chain ser� necess�rio especificar a op��o "-t nat". 9.4.2. Fazendo IP masquerading (para os apressados) --------------------------------------------------Voc� precisar� de um kernel com suporte ao `iptables' (veja Se��o 9.1.15, `Habilitando o suporte ao iptables no kernel' e `ip_forwarding' e ent�o digitar os dois comandos abaixo para habilitar o masquerading para todas as m�quinas da rede 192.168.1.*: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE echo "1" >/proc/sys/net/ipv4/ip_forwarding A configura��o do servidor `Linux' est� completa, agora os clientes da rede precisar�o ser configurados para usar o endere�o IP do servidor `Linux' como gateway. � recomend�vel instalar um servidor proxy e DNS na m�quina `Linux' para acelerar o desempenho das requisi��es/resolu��o de nomes das m�quinas em rede. A utiliza��o de bits TOS tamb�m pode trazer um grande aumento de velocidade para os diferentes servi�os da rede (veja Se��o 9.5.1, `Especificando o tipo de servi�o'). 9.4.3. Fazendo SNAT ------------------SNAT (source nat - nat no endere�o de origem) consiste em modificar o endere�o de origem das m�quinas clientes antes dos pacotes serem enviados. A m�quina roteadora � inteligente o bastante para lembrar dos pacotes modificados e reescrever os endere�os assim que obter a resposta da m�quina de destino, direcionando os pacotes ao destino correto. Toda opera��o de SNAT � feita no chain _POSTROUTING_.

� permitido especificar endere�os de origem/destino, protocolos, portas de origem/destino, interface de entrada/sa�da (dependendo do chain), alvos, etc. � desnecess�rio especificar fragmentos na tabela nat, pois eles ser�o remontados antes de entrar no c�digo de roteamento. O SNAT � a solu��o quando voc� tem acesso a internet atrav�s de um �nico IP e deseja fazer que sua rede tenha acesso a Internet atrav�s da m�quina `Linux'. Nenhuma m�quina da Internet poder� ter acesso direto as m�quinas de sua rede interna via SNAT. _OBS:_ A observa��o acima n�o leva em conta o controle de acesso externo configurado na m�quina que estiver configurando o `iptables', uma configura��o mau realizada pode expor sua m�quina a acessos externos indesejados e comprometer sua rede interna caso algu�m consiga acesso direto ao servidor. � necess�rio especificar SNAT como alvo (-j SNAT) quando desejar que as m�quinas de sua rede interna tenha acesso a Internet atrav�s do IP fixo da m�quina `Linux' (para conex�es intermitentes como PPP, veja Se��o 9.4.3.1, `Fazendo IP Masquerading'). O par�metro `--to IP:portas' deve ser usado ap�s o alvo SNAT. Ele serve para especificar um endere�o IP, faixa de endere�os e opcionalmente uma porta ou faixa de portas que ser� substitu�da. Toda a opera��o de SNAT � realizada atrav�s do chain POSTROUTING: # Modifica o endere�o IP dos pacotes vindos da m�quina 192.168.1.2 da rede interna # que tem como destino a interface eth1 para 200.200.217.40 (que � o nosso endere�o # IP da interface ligada a Internet). iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT --to 200.200.217.40 Os pacotes indo para a Internet (nossa conex�o � feita via eth1, nossa interface externa) vindo do endere�o 192.168.1.2, s�o substitu�dos por 200.241.200.40 e enviados para fora. Quando a resposta a requisi��o � retornada, a m�quina com `iptables' recebe os pacotes e faz a opera��o inversa, modificando o endere�o 200.241.200.40 novamente para 192.168.1.2 e enviando a resposta a m�quina de nossa rede interna. Ap�s definir suas regras de NAT, execute o comando `echo "1" >/proc/sys/net/ipv4/ip_forward' para habilitar o suporte a redirecionamento de pacotes no kernel. Tamb�m � poss�vel especificar faixas de endere�os e portas que ser�o substitu�das: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50 Modifica o endere�o IP de origem 192.168.1.0/24 que tem o destino a 200.241.200.50. O endere�o IP o �ltimo IP alocado. # iptables 192.168.1.0/24 -o eth1 \ -j SNAT 1.2.3.6-1.2.3.254

de todas as m�quinas da rede a interface eth0 para 200.241.200.40 selecionado � escolhido de acordo com -t nat -A POSTROUTING -s --to 1.2.3.0-1.2.3.4 --to

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50:1-1023

Id�ntico ao anterior, mas faz somente substitui��es na faixa de portas de origem de 1 a 1023. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50 --to 200.200.217.70-200.200.217.73 Faz o mapeamento para a faixa de portas 200.200.217.40 a 200.200.217.50 e de 200.200.217.70 a 200.200.217.73. _OBS1:_ Se por algum motivo n�o for poss�vel mapear uma conex�o NAT, ela ser� derrubada. _OBS2:_ Tenha certeza que as respostas podem chegar at� a m�quina que fez o NAT. Se estiver fazendo SNAT em um endere�o livre em sua rede (como 200.200.217.73). _OBS2:_ Como notou acima, o SNAT � usado quando temos uma conex�o externa com um ou mais IP's fixos. O Masquerading � uma forma especial de SNAT usada para funcionar em conex�es que recebem endere�os IP aleat�rios (PPP). _OBS3:_ N�o se esque�a de habilitar o redirecionamento de pacotes ap�s fazer suas regra de NAT com o comando: `echo "1" >/proc/sys/net/ipv4/ip_forward', caso contr�rio o redirecionamento de pacotes n�o funcionar�. 9.4.3.1. Fazendo IP Masquerading -------------------------------O IP Masquerading � um tipo especial de SNAT usado para conectar a sua rede interna a internet quando voc� recebe um IP din�mico de seu provedor (como em conex�es ppp). Todas as opera��es de IP Masquerading s�o realizadas no chain _POSTROUTING_. Se voc� tem um IP fixo, deve ler Se��o 9.4.3, `Fazendo SNAT'. Para fazer IP Masquerading de uma m�quina com o IP 192.168.1.2 para ter acesso a Internet, use o comando: iptables -t nat -A POSTROUTING -s 192.168.1.2/32 -o ppp0 -j MASQUERADE A diferen�a � que o alvo � _-j MASQUERADE_. O comando acima faz IP Masquerading de todo o tr�fego de 192.168.1.2 indo para a interface ppp0: O endere�o IP dos pacotes vindos de 192.168.1.2 s�o substitu�dos pelo IP oferecido pelo seu provedor de acesso no momento da conex�o, quando a resposta � retornada a opera��o inversa � realizada para garantir que a resposta chegue ao destino. Nenhuma m�quina da internet poder� ter acesso direto a sua m�quina conectava via Masquerading. Para fazer o IP Masquerading de todas as m�quinas da rede 192.168.1.*: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE Ap�s definir a regra para fazer Masquerading (SNAT), execute o comando `echo "1" >/proc/sys/net/ipv4/ip_forward' para habilitar o suporte a redirecionamento de pacotes no kernel. 9.4.4. Fazendo DNAT -------------------

DNAT (Destination nat - nat no endere�o de destino) consiste em modificar o endere�o de destino das m�quinas clientes. O destination nat � muito usado para fazer redirecionamento de pacotes, proxyes transparentes e balanceamento de carga. Toda opera��o de DNAT � feita no chain _PREROUTING_. As demais op��es e observa��es do SNAT s�o tamb�m v�lidas para DNAT (com exce��o que somente � permitido especificar a interface de origem no chain PREROUTING). # Modifica o endere�o IP destino dos pacotes de 192.168.1.2 vindo da interface eth0 # para 200.200.217.40. iptables -t nat -A PREROUTING -s 192.168.1.2 -i eth0 -j DNAT --to 200.200.217.40 Tamb�m � poss�vel especificar faixas de endere�os e portas que ser�o substitu�das no DNAT: iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 200.200.217.40-200.200.217.50 Modifica o endere�o IP de destino do tr�fego vindos da interface 192.168.1.0/24 para um IP de 200.241.200.40 a 200.241.200.50. Este � um excelente m�todo para fazer o balanceamento de carga entre servidores. O endere�o IP selecionado � escolhido de acordo com o �ltimo IP alocado. iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 200.200.217.40200.200.217.50:1024:5000 Id�ntico ao anterior, mas faz somente substitui��es na faixa de portas de destino de 1024 a 5000. A opera��o acima � a mesma realizada pelo `ipmasqadm' dos kernels da s�rie 2.2. _OBS:_ Se por algum motivo n�o for poss�vel mapear uma conex�o NAT, ela ser� derrubada. 9.4.4.1. Redirecionamento de portas ----------------------------------O redirecionamento de portas permite a voc� repassar conex�es com destino a uma porta para outra porta na mesma m�quina. O alvo _REDIRECT_ � usado para fazer esta opera��o, junto com o argumento _--to-port_ especificando a porta que ser� redirecionada. Este � o m�todo DNAT espec�fico para se para fazer proxy transparente (para redirecionamento de endere�os/portas, veja Se��o 9.4.4, `Fazendo DNAT'). Todas as opera��es de redirecionamento de portas � realizada no chain _PREROUTING_. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 81 Redireciona as conex�es indo para a porta 80 para a porta 81 (rodando `squid') no firewall. _ATEN��O:_ O `squid' possui suporte a proxy transparente, e poder� atender as requisi��es acima da regra acima. 9.4.5. Monitorando conex�es feitas na tabela nat

-----------------------------------------------Use o comando `cat /proc/net/ip_conntrack' para listar todas as conex�es atuais tratadas pelo m�dulo nat. 9.5. A tabela mangle -------------------A tabela _mangle_ serve para especificar a��es especiais para o tratamento do tr�fego que atravessa os chains. Nesta tabela existem dois chains: _PREROUTING_ e _OUTPUT_ (veja Se��o 9.1.14, `O que s�o tabelas?' para maiores detalhes). Op��es com o _Tipo de Servi�o (TOS)_ � especificada nesta tabela para classificar e aumentar consideravelmente a velocidade de tr�fego considerados em tempo real. 9.5.1. Especificando o tipo de servi�o -------------------------------------O tipo de servi�o � um campo existente no cabe�alho de pacotes do protocolo ipv4 que tem a fun��o especificar qual � a prioridade daquele pacote. Uma das vantagens da utiliza��o do tipo de servi�o � dar prioridade ao tr�fego de pacotes interativos (como os do ICQ, IRC, servidores de chat), etc. Com o TOS especificado, mesmo que esteja fazendo um download consumindo toda a banda de sua interface de rede, o tr�fego com prioridade interativa ser� enviado antes, aumentando a efici�ncia dos servi�os em sua m�quina. Em testes realizados em minha conex�o de 56K, o uso de regras TOS aumentou bastante o desempenho em tr�fego interativo (em torno de 300%), durante o uso total da banda da interface ppp em um grande download. Usamos o alvo TOS (-j TOS) para especificar a modifica��o do tipo de servi�o nos pacotes que atravessam as regras do firewall, acompanhada do argumento _--set-tos TOS_ que define a nova prioridade dos pacotes. Os valores aceitos s�o os seguintes: Espera M�nima � especificado atrav�s de _Minimize-Delay_, _16_ ou _0x10_ M�ximo Processamento � especificado atrav�s de _Maximize-Throughput_, _8,_ ou _0x08_. M�xima Confian�a � especificado atrav�s de _Maximize-Reliability_, _4_ ou _0x04_. Custo m�nimo Especificado atrav�s de _Minimize-Cost_, _2_ ou _0x02_. Prioridade Normal Especificado atrav�s de _Normal-Service_, _0_ ou _0x00_. Os pacotes vem por padr�o com o valor TOS ajustado como _prioridade normal_ (bits tos ajustados para 0x00). O tipo _M�nima Espera_ � o mais usado, pois prioriza o tr�fego em servi�os interativos. 9.5.1.1. Especificando o TOS para tr�fego de sa�da -------------------------------------------------Este � o mais usado, pois prioriza o tr�fego que sai da m�quina (com destino a Internet, por exemplo). Sua opera��o � realizada atrav�s do

chain _OUTPUT_. Para priorizar todo o tr�fego de IRC de nossa rede interna indo para a interface ppp0: iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 6666-6668 -j TOS --set-tos 16 O bit TOS � ajustado para _Espera m�nima_ e ser� enviado antes dos pacotes com prioridade normal para fora. Para priorizar a transmiss�o de dados ftp saindo da rede: iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 20 -j TOS --set-tos 8 Para priorizar o tr�fego de ICQ da rede: iptables -t mangle -A OUTPUT -o ppp0 -p udp --dport 4000 -j TOS --set-tos 16 Existem muitas outras otimiza��es que podem ser feitas, s� depende dos requerimentos e an�lise de cada servi�o da rede pelo administrador. _OBS:_ - Os pacotes que atravessam o alvo TOS somente tem os bits tipo do servi�o modificados, eles n�o ser�o de qualquer forma rejeitados. 9.5.1.2. Especificando o TOS para o tr�fego de entrada -----------------------------------------------------Este prioriza o tr�fego que entra da m�quina. Sua opera��o � realizada no chain _PREROUTING_. N�o faz muito sentido o uso deste chain dentro de uma rede pequena/m�dia, pois o tr�fego que recebermos ser� priorizado pelo sa�da de outras m�quinas da internet/outras redes antes de chegar a nossa. Para priorizar o processamento do tr�fego interativo vindo de servidores IRC para nossa rede: iptables -t mangle -A PREROUTING -i eth0 -p tcp --sport 6666-6668 -j TOS --set-tos 0x10 Modifica o tipo de servi�o para _m�nima espera_ de todo o tr�fego enviado por servidores de IRC vindo da interface eth0. _OBS:_ - Os pacotes que atravessam o alvo TOS somente tem os bits tipo do servi�o modificados, eles n�o ser�o de qualquer forma rejeitados. \ 9.6. Outros m�dulos do iptables ------------------------------Os m�dulos do iptables s�o especificados com a op��o _-m m�dulo_ ou _--match m�dulo_ e permitem expandir a funcionalidade do firewall atrav�s de novas confer�ncias e recursos de filtragem adicionais, como limitar a confer�ncia de regras do firewall (um m�todo �til de limitar ping floods, syn floods, etc). 9.6.1. Conferindo de acordo com o estado da conex�o ---------------------------------------------------

Este m�dulo permite especificar regras de acordo com o estado da conex�o do pacote, isto � feito atrav�s da interpreta��o da sa�da do m�dulo `ip_conntrack'. O par�metro _--state OP��ES_ deve acompanhar este m�dulo. As op��es permitidas s�o as seguintes: * `NEW' - Confere com pacotes que criam novas conex�es * `ESTABLISHED' - Confere com conex�es j� estabelecidas * `RELATED' - Confere com pacotes relacionados indiretamente a uma conex�o, como mensagens de erro icmp, etc. * `INVALID' - Confere com pacotes que n�o puderam ser identificados por algum motivo. Como respostas de conex�es desconhecidas. Caso seja necess�rio especificar mais de uma op��es estas devem ser separadas por v�rgulas. iptables -A INPUT -m state --state NEW -i ppp0 -j DROP Bloqueia qualquer tentativa de nova conex�o vindo da interface ppp0. iptables -A INPUT -m state --state NEW,INVALID -i ppp0 -j LOG Permite registrar novas conex�es e pacotes inv�lidos vindos da interface ppp0. 9.6.2. Limitando o n�mero de vezes que a regra confere -----------------------------------------------------A op��o _-m limit_ permite especificar o n�mero de vezes que uma regra conferir� quando todas as outras condi��es forem satisfeitas. O n�mero padr�o de confer�ncia � de 3 por hora, a n�o ser que seja modificado atrav�s dos argumentos aceitos pelo _limit_: * `--limit num/tempo' - Permite especificar a taxa de confer�ncias do limit. O par�metro _num_ especifica um n�mero e _tempo_ pode ser * `s' - Segundo * `m' - Minuto * `h' - Hora * `d' - Dia Assim uma regra como `iptables -A INPUT -m limit --limit 5/m -j ACCEPT' permitir� que a regra acima confira apenas 5 vezes por minuto (_--limit 2/s_). Este limite pode ser facilmente adaptado para uma regra de log que confere constantemente n�o causar uma avalanche em seus logs. O valor padr�o � 3/h. * `--limit-burst num' - Especifica o n�mero inicial m�ximo de pacotes que ir�o conferir, este n�mero � aumentado por 1 a cada vez que o par�metro _--limit_ acima n�o for atingido. O valor padr�o � 5. 9.6.3. Prote��o contra ping da morte -----------------------------------A regra abaixo pode tomada como base para prote��o contra ping flood:

iptables -t filter -A ping-chain -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT iptables -t filter -A ping-chain -j DROP A regra acima limita em 1 vez por segundo (--limit 1/s) a passagem de pings (echo requests) para a m�quina `Linux'. iptables -t filter -A ping-chain -i ppp0 -p icmp --icmp-type echo-reply -m limit --limit 1/s -j RETURN iptables -t filter -A ping-chain -j DROP Limita respostas a pings (echo reply) vindos da interface ppp0 (-i ppp0) a 1 por segundo. _ATEN��O:_ Os exemplos acima devem s�o somente exemplos para cria��o de suas pr�prias regras com limita��es, caso um pacote n�o confira com a regra ele ser� bloqueado pela pr�xima regra. Se uma regra como for colocada no chain INPUT sem modifica��es obviamente colocar� em risco a seguran�a de seu sistema. 9.6.4. Prote��o contra syn flood -------------------------------A regra abaixo � uma boa prote��o para os ataques syn floods: iptables -t filter -A syn-chain -p tcp --syn -m limit --limit 2/s -j ACCEPT iptables -t filter -A syn-chain -j DROP Esta regra limita o atendimento de requisi��es de conex�es a 2 por segundo. _ATEN��O:_ Os exemplos acima devem s�o somente exemplos para cria��o de suas pr�prias regras com limita��es, caso um pacote n�o confira com a regra ele ser� bloqueado pela pr�xima regra. Se uma regra como for colocada no chain INPUT sem modifica��es obviamente colocar� em risco a seguran�a de seu sistema. 9.6.5. Prote��o contra IP spoofing ---------------------------------A especifica��o de endere�os de origem/destino junto com a interface de rede pode ser usado como um detector de ataques spoofing. A l�gica � que todos os endere�os que NUNCA devem vir da interface X devem ser negados imediatamente. As regras abaixo s�o colocadas no inicio do chain INPUT para detectar tais ataques: iptables -A INPUT -s 192.168.1.0/24 -i ! eth0 -j DROP iptables -A INPUT ! -s 192.168.1.0/24 -i eth0 -j DROP A primeira regra diz para bloquear todos os endere�os da faixa de rede 192.168.1.* que N�O vem da interface eth0, a segunda regra diz para bloquear todos os endere�os que n�o sejam 192.168.1.* vindos da interface eth0. O s�mbolo "!" serve para especificar exce��es (veja Se��o 9.3.5, `Especificando uma exce��o'. O kernel do `Linux' automaticamente bloqueia a passagem de pacotes que dizem ser de 127.0.0.1 e n�o est� vindo da interface loopback. O m�todo preferido para controlar o ip spoofing � atrav�s do c�digo de

roteamento do kernel (a n�o ser que esteja usando algum tipo de roteamento assim�trico): for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 >$i done Desta forma qualquer endere�o dizendo ser 192.168.1.5 vindo de ppp0 ser� imediatamente rejeitado. Uma checagem adicional contra IP spoofing pode ser feita no arquivo `/etc/host.conf' (veja Se��o 4.6.2.2, `/etc/host.conf'). 9.6.6. Especificando m�ltiplas portas de origem/destino ------------------------------------------------------O m�dulo `multiport' permite que seja especificado m�ltiplas portas para um alvo. Podem ser especificadas at� 15 portas em um �nico par�metro e basta que uma porta confira para que a regra entre em a��o, pois a compara��o � feita usando condi��es "or". O par�metro `multiport' deve ser acompanhado de um dos argumentos abaixo: * `--source-port [porta1, porta2...]' - Faz a regra conferir se a porta de origem estiver presente entre as portas especificadas. * `--destination-port [porta1, porta2...]' - Faz a regra conferir se a porta de destino estiver presente entre as portas especificadas. * `--port [porta1, porta2...]' - Faz a regra conferir caso a porta de origem ou destino esteja presente no par�metro. Este m�dulo pode eliminar muitas regras de firewall que fazem o mesmo tratamento de pacotes para diversas portas diferentes. iptables -A INPUT -p tcp -i ppp0 -m multiport --destination-port 21,23,25,80,110,113,6667 -j DROP Bloqueia todos os pacotes vindo de ppp0 para as portas 21 (ftp), 23 (telnet), 25 (smtp), 80 (www), 110 (pop3), 113 (ident), 6667 (irc). 9.6.7. Especificando o endere�o MAC da interface -----------------------------------------------O m�dulo `mac' serve para conferir com o endere�o Ethernet dos pacotes de origem. Somente faz sentido se usado nos chains de PREROUTING (da tabela nat) ou INPUT (da tabela filter). Aceita como argumento a op��o _--mac-source endere�o_. O s�mbolo "!" pode ser usado para especificar uma exce��o. iptables -t filter -A INPUT -m mac --mac-source 00:80:AD:B2:60:0B -j DROP Confere com a m�quina com endere�o ethernet igual a `00:80:AD:B2:60:0B'. 9.6.8. Conferindo com quem criou o pacote ----------------------------------------Este m�dulo confere com o usu�rio que iniciou a conex�o. � somente v�lido no chain _OUTPUT_ da tabela filter. Os seguintes argumentos s�o v�lidas para este m�dulo: * `--uid-owner UID' - Confere se o pacote foi criado por um processo com o UID especificado. At� o momento somente UID

num�ricos s�o aceitos. * `--gid-owner GID' - Confere se o pacote foi criado por um usu�rio pertencente ao grupo GID. At� o momento somente GID num�ricos s�o aceitos. * `--pid-owner PID' - Confere se o pacote foi criado por um processo com o PID especificado. * `--sid-owner ID' - Confere se o pacote foi criado por um processo no grupo de se��o especificado. _OBS:_ - Lembre-se que pacotes que n�o possuem detalhes suficientes de cabe�alho nunca conferir�o! iptables -A OUTPUT -m owner --gid-owner 100 -p udp -j DROP Rejeita um conex�es indo para portas UDP de pacotes criados pelo usu�rios pertencentes ao grupo 100. 9.7. Caminho percorrido pelos pacotes nas tabelas e chains ---------------------------------------------------------� MUITO importante entender a fun��o de cada filtro e a ordem de acesso dos chains de acordo com o tipo de conex�o e interface de origem/destino. Esta se��o explica a ordem que as regra s�o atravessadas, isso lhe permitir� planejar a distribui��o das regras nos chains, e evitar erros de localiza��o de regras que poderia deixar seu firewall com s�rios problemas de seguran�a, ou um sistema de firewall totalmente confuso e sem l�gica. Nos exemplos abaixo assumirei a seguinte configura��o: * A m�quina do firewall com `iptables' possui o endere�o IP `192.168.1.1' e conecta a rede interna ligada via interface `eth0' a internet via a interface `ppp0'. * Rede interna com a faixa de endere�os `192.168.1.0' conectada ao firewall via interface `eth0' * Interface `ppp0' fazendo conex�o com a Internet com o endere�o IP `200.217.29.67'. * A conex�o das m�quinas da rede interna (`eth0') com a rede externa (`ppp0') � feita via _Masquerading_. Tamb�m utilizarei a sintaxe _CHAIN-tabela_ para fazer refer�ncia aos chains e tabelas dos blocos ASCII: _INPUT-filter_ - chain _INPUT_ da tabela _filter_. _ATEN��O:_ A ordem de processamento das regras do `iptables', � diferente do `ipchains' devido a inclus�o do novo sistema de nat e da tabela mangle. 9.7.1. Ping de 192.168.1.1 para 192.168.1.1 ------------------------------------------* * * * *

Endere�o de Origem: `192.168.1.1' Endere�o de Destino: `192.168.1.1' Interface de Entrada: `lo' Interface de Sa�da: `lo' Protocolo: `ICMP'

* Descri��o: `Ping para o pr�prio firewall' SA�DA DE PACOTES (envio do ping para 192.168.1.1): +-------------+ +----------+ +-------------+ +----------------+ |OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => |POSTROUTING-nat | +-------------+ +----------+ +-------------+ +----------------+ ENTRADA DOS PACOTES (Retorno da resposta ping acima): +-----------------+ +------------+ |PREROUTING-mangle| => |INPUT-filter| +-----------------+ +------------+ Quando damos o ping (_echo request_) os pacotes seguem o caminho em _SA�DA DE PACOTES_ percorrendo os chains na ordem especificada e retornam via _ENTRADA DOS PACOTES_ (_echo reply_). _OBS1:_ Para conex�es com destinos na pr�pria m�quina usando um endere�o IP das interfaces locais, a interface ser� ajustada sempre para `lo' (loopback). _OBS2:_ Em qualquer opera��o de entrada/sa�da de pacotes, os dois chains da tabela _mangle_ s�o sempre os primeiros a serem acessados. Isto � necess�rio para definir a prioridade e controlar outros aspectos especiais dos pacotes que atravessam os filtros. _OBS3:_ O chain _OUTPUT_ da tabela _filter_ � consultado sempre quando existem conex�es se originando em endere�os de interfaces locais. 9.7.2. Conex�o FTP de 192.168.1.1 para 192.168.1.1 -------------------------------------------------* * * * * * * *

Endere�o de Origem: `192.168.1.1' Endere�o de Destino: `192.168.1.1' Interface de Origem: `lo' Interface de Destino: `lo' Porta Origem: `1404' Porta Destino: `21' Protocolo: `TCP' Descri��o: `Conex�o ftp (at� o prompt de login, sem transfer�ncia de arquivos).' SA�DA DOS PACOTES (envio da requisi��o para 192.168.1.1): +-------------+ +----------+ +-------------+ +---------------+ |OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => |POSTROUTING-nat| +-------------+ +----------+ +-------------+ +---------------+ ENTRADA DE PACOTES (respostas da requisi��o vindas de 192.168.1.1): +-----------------+ +------------+ |PREROUTING-mangle| => |INPUT-filter| +-----------------+ +------------+ A requisi��o ftp passa atrav�s dos chains especificados em _SA�DA DOS PACOTES_ e retorna por _ENTRADA DE PACOTES_. Ap�s a conex�o ser estabelecida, o caminho de _SA�DA DE PACOTES_ ser�: +-------------+ +-------------+ |OUTPUT-mangle| => |OUTPUT-filter| +-------------+ +-------------+ pois os dados de entrada que vem da interface externa, s�o passados

diretamente a m�quina do firewall, n�o necessitando de tratamento SNAT (os chains _OUTPUT-nat_ e _POSTROUTING-nat_ s�o processado somente uma vez a procura de regras que conferem, principalmente para fazer SNAT). _OBS1:_ Para conex�es com destinos na pr�pria m�quina usando um endere�o IP das interfaces locais, a interface ser� ajustada sempre para `lo' (loopback). _OBS2:_ Em qualquer opera��o de entrada/sa�da de pacotes, os dois chains da tabela mangle s�o sempre os primeiros a serem acessados. Isto � necess�rio para definir a prioridade e controlar outros aspectos especiais dos pacotes que atravessam os filtros. 9.7.3. Conex�o FTP de 192.168.1.1 para 192.168.1.4 -------------------------------------------------* * * * * * * *

Endere�o de Origem: `192.168.1.1' Endere�o de Destino: `192.168.1.4' Interface de Origem: `eth0' Interface de Destino: `eth0' Porta Origem: `1405' Porta Destino: `21' Protocolo: `TCP' Descri��o: `Conex�o ftp (at� o prompt de login, sem transfer�ncia de arquivos).' SA�DA DOS PACOTES (envio da requisi��o para 192.168.1.4): +-------------+ +----------+ +-------------+ +---------------+ |OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => |POSTROUTING-nat| +-------------+ +----------+ +-------------+ +---------------+ ENTRADA DE PACOTES (respostas da requisi��o de 192.168.1.4): +-----------------+ +------------+ |PREROUTING-mangle| => |INPUT-filter| +-----------------+ +------------+ A requisi��o ftp passa atrav�s dos chains especificados em _SA�DA DOS PACOTES_ com o destino `192.168.1.4' porta `21' e retorna por _ENTRADA DE PACOTES_ para `192.168.1.1' porta `1405'. Ap�s a conex�o ser estabelecida, o caminho de _SA�DA DE PACOTES_ ser�: +-------------+ +-------------+ |OUTPUT-mangle| => |OUTPUT-filter| +-------------+ +-------------+ pois os dados n�o precisam de tratamento SNAT (os chains _OUTPUT-nat_ e _POSTROUTING-nat_ s�o processado somente uma vez a procura de regras que conferem, principalmente para fazer SNAT). _OBS:_ Em qualquer opera��o de entrada/sa�da de pacotes, os dois chains da tabela mangle s�o sempre os primeiros a serem acessados. Isto � necess�rio para definir a prioridade e controlar outros aspectos especiais dos pacotes que atravessam os filtros. 9.7.4. Conex�o FTP de 200.217.29.67 para a m�quina ftp.debian.org.br -------------------------------------------------------------------* Endere�o de Origem: `200.217.29.67' * Endere�o de Destino: `200.198.129.162'

* * * * * *

Interface de Origem: `ppp0' Interface de Destino: `ppp0' Porta Origem: `1407' Porta Destino: `21' Protocolo: `TCP' Descri��o: `Conex�o ftp (at� o prompt de login, sem transfer�ncia de arquivos).' SA�DA DOS PACOTES (envio da requisi��o para 200.198.129.162): +-------------+ +----------+ +-------------+ +---------------+ |OUTPUT-mangle| => |OUTPUT-nat| => |OUTPUT-filter| => |POSTROUTING-nat| +-------------+ +----------+ +-------------+ +---------------+ ENTRADA DE PACOTES (respostas da requisi��o vindas de 200.198.129.162): +-----------------+ +--------------+ +------------+ |PREROUTING-mangle| => |PREROUTING-nat| => |INPUT-filter| +-----------------+ +--------------+ +------------+ A requisi��o ftp passa atrav�s dos chains especificados em _SA�DA DOS PACOTES_ com o destino `200.198.129.162' porta `21' (ap�s a resolu��o DNS de `www.debian.org.br') e retorna por _ENTRADA DE PACOTES_ para `200.217.29.67' porta `1407'. Ap�s a conex�o ser estabelecida, o caminho de sa�da de pacotes �: +-------------+ +-------------+ |OUTPUT-mangle| => |OUTPUT-filter| +-------------+ +-------------+ pois os dados n�o precisam de tratamento SNAT (os chains _OUTPUT-nat_ e _POSTROUTING-nat_ s�o processado somente uma vez a procura de regras que conferem, principalmente para fazer SNAT). E ap�s a conex�o estabelecida, o caminho de entrada de pacotes passa a ser: +-----------------+ +-------------+ |PREROUTING-mangle| => |INPUT-filter | +-----------------+ +-------------+ pois os dados n�o precisam de tratamento DNAT (o chain _PREROUTING-nat_ � processado somente uma vez a procura de regras que conferem, principalmente para fazer DNAT). _OBS:_ Para qualquer opera��o de entrada/sa�da de pacotes, os dois chains da tabela mangle s�o sempre os primeiros a serem acessados. Isto � necess�rio para definir a prioridade e controlar outros aspectos especiais dos pacotes que atravessam os filtros. 9.7.5. Ping de 192.168.1.4 para 192.168.1.1 ------------------------------------------* * * * * *

Endere�o de Origem: `192.168.1.4' Endere�o de Destino: `192.168.1.1' Interface de Entrada: `eth0' Interface de Sa�da: `eth0' Protocolo: `ICMP' Descri��o: `Ping de 192.168.1.4 para a m�quina do firewall.' ENTRADA DE PACOTES (recebimento da requisi��o, vinda de 192.168.1.4): +-----------------+ +--------------+ +------------+

|PREROUTING-mangle| => |PREROUTING-nat| => |INPUT-filter| +-----------------+ +--------------+ +------------+ SA�DA DE PACOTES (envio da resposta a 192.168.1.4) +-------------+ +-------------+ |OUTPUT-mangle| => |OUTPUT-filter| +-------------+ +-------------+ Quando damos o ping (_echo request_) os pacotes seguem o caminho em _ENTRADA DE PACOTES_ percorrendo os chains na ordem especificada e retornam via _SA�DA DOS PACOTES_ (_echo reply_). _OBS1:_ Para qualquer opera��o de entrada/sa�da de pacotes, os dois chains da tabela mangle s�o sempre os primeiros a serem acessados. Isto � necess�rio para definir a prioridade e controlar outros aspectos especiais dos pacotes que atravessam os filtros. 9.7.6. Conex�o FTP de 192.168.1.4 para 192.168.1.1 -------------------------------------------------* * * * * * * *

Endere�o de Origem: `192.168.1.4' Endere�o de Destino: `192.168.1.1' Interface de Origem: `eth0' Interface de Destino: `eth0' Porta Origem: `1030' Porta Destino: `21' Protocolo: `TCP' Descri��o: `Conex�o ftp (at� o prompt de login, sem transfer�ncia de dados).' ENTRADA DOS PACOTES (envio da requisi��o vindas de 192.168.1.4): +-----------------+ +--------------+ +------------+ |PREROUTING-mangle| => |PREROUTING-nat| => |INPUT-filter| +-----------------+ +--------------+ +------------+ SA�DA DE PACOTES (respostas da requisi��o acima para 192.168.1.4): +-------------+ +-------------+ |OUTPUT-mangle| => |OUTPUT-filter| +-------------+ +-------------+

A requisi��o ftp passa atrav�s dos chains especificados em _ENTRADA DOS PACOTES_ com o destino `192.168.1.1' porta `21' e retorna por _SA�DA DE PACOTES_ para `192.168.1.4' porta `1030'. Ap�s a conex�o ser estabelecida, o caminho de entrada de pacotes �: +-----------------+ +------------+ |PREROUTING-mangle| => |INPUT-filter| +-----------------+ +------------+ pois os dados n�o precisam de tratamento DNAT (o chain _PREROUTING-nat_ � processado somente uma vez a procura de regras que conferem, principalmente para fazer DNAT). _OBS:_ O roteamento � sempre realizado ap�s o processamento do chain _PREROUTING_ da tabela _nat_. 9.7.7. Conex�o FTP de 192.168.1.4 para ftp.debian.org.br --------------------------------------------------------

* * * * * * * *

Endere�o de Origem: `192.168.1.4' Endere�o de Destino: `200.198.129.162' Interface de Origem: `eth0' Interface de Destino: `ppp0' Porta Origem: `1032' Porta Destino: `21' Protocolo: `TCP' Descri��o: `Conex�o ftp (at� o prompt de login, sem transfer�ncia de dados).' SA�DA DOS PACOTES (requisi��o vindas de 192.168.1.4): +-----------------+ +--------------+ +--------------+ +---------------+ |PREROUTING-mangle| => |PREROUTING-nat| => |FORWARD-filter| => |POSTROUTING-nat| +-----------------+ +--------------+ +--------------+ +---------------+ ENTRADA DE PACOTES (respostas da requisi��o acima, enviadas para 192.168.1.4): +-----------------+ +--------------+ |PREROUTING-mangle| => |FORWARD-filter| +-----------------+ +--------------+ A requisi��o ftp passa atrav�s dos chains especificados em _SA�DA DOS PACOTES_ com o destino `200.198.129.162' porta `21' (ap�s a resolu��o DNS de `ftp.debian.org.br') e retorna por _ENTRADA DE PACOTES_ para `192.168.1.4' porta `1032'. Note que o Masquerading regrava os pacotes; para a m�quina `200.198.129.162' a conex�o est� sendo feita para `200.217.29.67'. As respostas de conex�es vindas de `200.198.129.162' e indo para `200.217.29.67' s�o regravadas no firewall com o destino `192.168.1.4' e enviadas para a m�quina correspondente. Ap�s a conex�o ser estabelecida, o caminho de sa�da de pacotes �: +-----------------+ +--------------+ |PREROUTING-mangle| => |FORWARD-filter| +-----------------+ +--------------+ Isto acontece porque ap�s feita a conex�o Masquerading (via PREROUTING-nat), o firewall j� sabe como reescrever os pacotes para realizar a opera��o de Masquerading, reescrevendo todos os pacotes que chegam de `www.debian.org.br' para `192.168.1.4'. _OBS:_ As conex�es Masquerading feitas atrav�s da rede interna, s�o enviadas para `200.198.129.162' tem o endere�o de origem ajustado para `200.217.29.67' que � o IP de nossa interface `ppp0'. Quando as respostas atravessam o firewall, os pacotes s�o checados pra saber se s�o uma resposta a uma conex�o masquerading e far� a regrava��o dos pacotes substituindo o endere�o de destino para `192.168.1.4'. Caso uma opera��o de Masquerading falhe, os pacotes ser�o Bloqueados. 9.7.8. Conex�o FTP de 200.198.129.162 para 200.217.29.167 --------------------------------------------------------* * * * * *

Endere�o de Origem: `200.198.129.162' Endere�o de Destino: `200.217.29.67' Interface de Origem: `ppp0' Interface de Destino: `ppp0' Porta Origem: `3716' Porta Destino: `21'

* Protocolo: `TCP' * Descri��o: `Conex�o ao servi�o ftp do firewall' ENTRADA DOS PACOTES (envio da requisi��o vindas de 200.198.129.162): +-----------------+ +--------------+ +------------+ |PREROUTING-mangle| => |PREROUTING-nat| => |INPUT-filter| +-----------------+ +--------------+ +------------+ SA�DA DE PACOTES (respostas da requisi��o de 200.198.129.162): +-------------+ +-------------+ |OUTPUT-mangle| => |OUTPUT-filter| +-------------+ +-------------+ A requisi��o ftp passa atrav�s dos chains especificados em _ENTRADA DOS PACOTES_ com o destino `200.217.29.67' (nossa interface `ppp0' local) porta `21' e retorna por _SA�DA DE PACOTES_ para `200.198.129.162' porta `3716' (tamb�m via `ppp0'). Ap�s a conex�o ser estabelecida, o caminho de entrada de pacotes �: +-----------------+ +------------+ |PREROUTING-mangle| => |INPUT-filter| +-----------------+ +------------+ Isto acontece porque ap�s feita a an�lise do chain _PREROUTING_ (para necessidade de DNAT), a m�quina j� saber� tomar a decis�o apropriada para gerenciar aquela conex�o. 9.7.9. Gr�fico geral da passagem dos pacotes -------------------------------------------Este gr�fico foi retirado do documento `netfilter-hacking-HOWTO.txt' e mostra a estrutura geral de passagem dos pacotes nas tabelas/chains. Os exemplos de passagem de pacotes acima poder�o ser facilmente comparados com as etapas abaixo para compreender a estrutura do `iptables'. E ---> PREROUTING ------> (ROTEAM.) ---> FORWARD ----------> POSTROUTING --> S Mangle e | Filter ^ NAT (Src) NAT (DNAT)) | | | (ROTEAM.) v | IN Filter OUT - Mangle, | ^ NAT (DNAT) | | Filter v | +----------------------------------------+ | Processo Local | +----------------------------------------+ 9.8. Exemplos de configura��es do iptables -----------------------------------------Em constru��o. Exemplo de como bloquear todas as conex�es para a m�quina do firewall permitindo somente conex�es da m�quina Linux para fora. 9.8.1. Bloqueando conex�es de fora para sua m�quina ---------------------------------------------------

As regras a seguir servem para bloquear tentativas de conex�es da interface de Internet (ppp0) a sua rede sem bloquear o tr�fego de conex�es j� iniciadas. O tr�fego de outras interfaces n�o � afetado com as regras a seguir: iptables -A INPUT -i ppp0 -m state --state ! ESTABLISHED,RELATED -j DROP Todas as conex�es vindas de ppp0 de estado diferente de ESTABLISHED e RELATED (NEW e INVALID) ser�o derrubadas. Veja Se��o 9.6.1, `Conferindo de acordo com o estado da conex�o' para detalhes. iptables -A INPUT -i ppp0 --syn -j DROP Este acima � mais simples e possui o mesmo efeito: Pacotes SYN s�o usados para iniciar conex�es, derrubando pacotes deste tipo significa bloquear novas conex�es. Pacotes de conex�es j� estabelecidas ainda s�o permitidos. Estas regras acima servem para quem n�o deseja NENHUM acesso indevido a sua m�quina. Existem outras formas de bloquear conex�es de modo mais seletivo usando chains espec�ficos, endere�os de origem/destino, portas, etc., este tipo de configura��o � muito usada caso precise fornecer algum tipo de servi�o que seja acess�vel externamente e protegendo outros. 9.8.2. Monitorando tentativa de conex�o de trojans em sua m�quina ----------------------------------------------------------------As regras abaixo alertam sobre a tentativa de conex�o dos trojans "For Win" mais conhecidos. Coloquei isto aqui por curiosidade de algumas pessoas, pois m�quinas `Linux' s�o imunes a este tipo de coisa: #!/bin/sh TROJAN_PORTS="12345 31336 31337 31338 3024 4092 5714 5742 2583 8787 5556 5557" iptables -t filter -N trojans-in for PORTA in ${TROJAN_PORTS};do iptables -A trojans-in -p tcp --sport=1024: --dport=${PORTA} -j LOG \ --log-prefix "FIREWALL: Trojan ${PORTA} " iptables -A trojans-in -p tcp --sport=1024: --dport=${PORTA} -j DROP done iptables -t filter -A INPUT -i ppp0 -j trojans-in A primeira linha do `iptables' cria o chain _trojans-in_ dentro da tabela _filter_ que usaremos para armazenar nossas regras de firewall. A segunda (dentro do la�o for) faz uma regra de LOG para registrar as tentativas de acesso de trojans em nosso sistema, a terceira rejeita o acesso. A quarta regra do `iptables' cria de todo o tr�fego vindo da interface ppp0 pra o chain trojans-in (queremos que s� o tr�fego vindo da internet seja analisado pelo chain _trojans-in_). Muitas das portas especificadas na vari�vel s�o antigas conhecidas de quem j� brincou ou sofreram com o `Back Orifice', `Win Crack', `NetBus' (quem nunca passou pela fase de ter uma lista com

mais de 100 netmasks e conseguir encontrar centenas de m�quinas por dia infectadas pelo BO? :-). No c�digo acima a �nica coisa que precisa fazer para adicionar mais portas � inseri-las na vari�vel e executar o programa. O la�o do `for' executar� as 2 regras para cada porta processada (economizando linhas e linhas de regras, me livrando de uma LER e poupando muitos bytes neste guia ;-). Dependendo do n�mero de portas alvo, este c�digo pode ser muito simplificado usando o recurso multiport do `iptables' (veja Se��o 9.6.6, `Especificando m�ltiplas portas de origem/destino' para detalhes). 9.8.3. Conectando sua rede interna a Internet --------------------------------------------O seguinte exemplo permite ligar sua rede interna com a faixa de IP's `192.168.1.*' a internet (usando uma conex�o discada do tipo ppp): iptables -A nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADE echo "1" >/proc/sys/net/ipv4/ip_forward 9.8.4. Um exemplo de firewall simples ------------------------------------Esta se��o possui um exemplo mais elaborado de firewall que servir� para m�quinas conectadas via ppp com uma rede interna conectada via Masquerading. Este exemplo n�o � t�o complexo e cobre as expectativas mais comuns de pessoas que gostam de explorar os potenciais de rede no `Linux' ou satisfazer sua curiosidade. Ele poder� ser facilmente adaptado para atender outro tipo de necessidade. A configura��o assumida � a seguinte: 1. M�quina do firewall com 2 interfaces de rede, uma � `eth0' com o IP `192.168.1.1' que serve de liga��o a sua rede Interna, a outra � `ppp0' que � a interface Internet. 2. Qualquer acesso externo a m�quinas da rede interna � bloqueado. 3. Os usu�rios da rede local tem acesso livre ao servidor `Linux'. 4. Qualquer acesso externo a m�quina do firewall � bloqueado, exceto conex�es para o servi�o `Apache' (`httpd'). Outras tentativas de conex�es devem ser explicitamente registradas nos logs do sistema para conhecimento do administrador. 5. Todos os usu�rios possuem acesso livre a Internet via Masquerading, exceto que o acesso para o servi�o www deve ser obrigatoriamente feito via `squid', e o servidor smtp a ser usado dever� ser o do firewall `Linux'. 6. Prioridades ser�o estabelecidas para os servi�os de telnet, IRC,talk e DNS. #!/bin/sh # Modelo de configura��o de firewall # Autor: Gleydson M. Silva # Data: 05/09/2001 # Descri��o: Produzido para ser distribu�do livremente, acompanha o guia # Foca GNU/Linux. http://focalinux.cipsga.org.br # # � assumido um sistema usando kmod para carga autom�tica dos m�dulos usados por # esta configura��o do firewall:

# # # # # # #

ipt_filter ipt_nat ipt_conntrack ipt_mangle ipt_TOS ipt_MASQUERADE ipt_LOG

# Se voc� tem um kernel modularizado que n�o utiliza o kmod, ser� necess�rio # carregar estes m�dulos via modprobe, insmod ou iptables --modprobe=modulo ##### Defini��o de # Tabela filter iptables -t filter iptables -t filter iptables -t filter # Tabela nat iptables -t nat -P iptables -t nat -P iptables -t nat -P # Tabela mangle iptables -t mangle iptables -t mangle

Policiamento ##### -P INPUT DROP -P OUTPUT ACCEPT -P FORWARD DROP PREROUTING ACCEPT OUTPUT ACCEPT POSTROUTING DROP -P PREROUTING ACCEPT -P OUTPUT ACCEPT

##### Prote��o contra IP Spoofing ##### for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 >$i done ##### Ativamos o redirecionamento de pacotes (requerido para NAT) ##### echo "1" >/proc/sys/net/ipv4/ip_forward # O iptables define automaticamente o n�mero m�ximo de conex�es simult�neas # com base na mem�ria do sistema. Para 32MB = 2048, 64MB = 4096, 128MB = 8192, # sendo que s�o usados 350 bytes de mem�ria residente para controlar # cada conex�o. # Quando este limite � excedido a seguinte mensagem � mostrada: # "ip_conntrack: maximum limit of XXX entries exceed" # # Como temos uma rede simples, vamos abaixar este limite. Por outro lado isto # criar� uma certa limita��o de tr�fego para evitar a sobrecarga do servidor. echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max ############################################################### # Tabela filter # ############################################################### ##### Chain INPUT ##### # Criamos um chain que ser� usado para tratar o tr�fego vindo da Internet e iptables -N ppp-input # Aceita todo o tr�fego vindo do loopback e indo pro loopback iptables -A INPUT -i lo -j ACCEPT # Todo tr�fego vindo da rede interna tamb�m � aceito iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

# Conex�es vindas da interface ppp0 s�o tratadas pelo chain ppp-input iptables -A INPUT -i ppp+ -j ppp-input # Qualquer outra conex�o desconhecida � imediatamente registrada e derrubada iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT " iptables -A INPUT -j DROP ##### Chain FORWARD #### # Permite redirecionamento de conex�es entre as interfaces locais # especificadas abaixo. Qualquer tr�fego vindo/indo para outras # interfaces ser� bloqueado neste passo iptables -A FORWARD -d 192.168.1.0/24 -i ppp+ -o eth0 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -o ppp+ -j ACCEPT iptables -A FORWARD -j LOG --log-prefix "FIREWALL: FORWARD " iptables -A FORWARD -j DROP ##### Chain ppp-input #### # Aceitamos todas as mensagens icmp vindas de ppp0 com certa limita��o iptables -A ppp-input -p icmp -m limit --limit 2/s -j ACCEPT # Primeiro aceitamos o tr�fego vindo da Internet para o servi�o www (porta 80) iptables -A ppp-input -p tcp --dport 80 -j ACCEPT # A tentativa de acesso externo a estes servi�os ser�o registrados no syslog # do sistema e ser�o bloqueados pela �ltima regra abaixo. iptables -A ppp-input -p tcp --dport 21 -j LOG --log-prefix "FIREWALL: ftp " iptables -A ppp-input -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: smtp " iptables -A ppp-input -p udp --dport 53 -j LOG --log-prefix "FIREWALL: dns " iptables -A ppp-input -p tcp --dport 110 -j LOG --log-prefix "FIREWALL: pop3 " iptables -A ppp-input -p tcp --dport 113 -j LOG --log-prefix "FIREWALL: identd " iptables -A ppp-input -p udp --dport 111 -j LOG --log-prefix "FIREWALL: rpc" iptables -A ppp-input -p tcp --dport 111 -j LOG --log-prefix "FIREWALL: rpc" iptables -A ppp-input -p tcp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba " iptables -A ppp-input -p udp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba " # Bloqueia qualquer tentativa de nova conex�o de fora para esta m�quina iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j LOG --log-prefix "FIREWALL: ppp-in " iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j DROP # Qualquer outro tipo de tr�fego � aceito iptables -A ppp-input -j ACCEPT ####################################################### # Tabela nat # ####################################################### ##### Chain POSTROUTING ##### # Permite qualquer conex�o vinda com destino a lo e rede local para eth0 iptables -t nat -A POSTROUTING -o lo -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j ACCEPT # N�o queremos que usu�rios tenham acesso direto a www e smtp da rede externa, o # squid e smtpd do firewall devem ser obrigatoriamente usados. Tamb�m registramos # as tentativas para monitorarmos qual m�quina est� tentando conectar-se

diretamente. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j LOG --log-prefix "FIREWALL: SNAT-www " iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: SNAT-smtp " iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j DROP iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j DROP # � feito masquerading dos outros servi�os da rede interna indo para a interface # ppp0 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADE # Qualquer outra origem de tr�fego desconhecida indo para eth0 (conex�es vindas # de ppp+) s�o bloqueadas aqui iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j LOG --log-prefix "FIREWALL: SNAT unknown" iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j DROP # Quando iniciamos uma conex�o ppp, obtermos um endere�o classe A (10.x.x.x) e ap�s # estabelecida a conex�o real, este endere�o � modificado. O tr�fego indo para # a interface ppp n�o dever� ser bloqueado. Os bloqueios ser�o feitos no # chain INPUT da tabela filter iptables -t nat -A POSTROUTING -o ppp+ -j ACCEPT # Registra e bloqueia qualquer outro tipo de tr�fego desconhecido iptables -t nat -A POSTROUTING -j LOG --log-prefix "FIREWALL: SNAT " iptables -t nat -A POSTROUTING -j DROP ############################################### # Tabela mangle # ############################################### ##### Chain OUTPUT ##### # Define m�nimo de espera para os servi�os ftp, telnet, irc e DNS, isto # dar� uma melhor sensa��o de conex�o em tempo real e diminuir� o tempo # de espera para conex�es que requerem resolu��o de nomes. iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 21 -j TOS --set-tos 0x10 iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 23 -j TOS --set-tos 0x10 iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 6665:6668 -j TOS --set-tos 0x10 iptables -t mangle -A OUTPUT -o ppp+ -p udp --dport 53 -j TOS --set-tos 0x10 ------------------------------------------------------------------------------10. Gerenciamento de contas e cuidados para a prote��o de senhas ---------------------------------------------------------------Este cap�tulo traz explica��es e comandos �teis para o gerenciamento de contas e prote��o de senhas de usu�rios em sistemas `Linux'. Tamb�m explica os principais m�todos usados para quebra de senha usando diversos m�todos como engenharia social, brute force, etc., bem como dicas de como escolher boas senhas para voc� e seus usu�rios e m�todos automatizados de checagem de senhas vulner�veis. Estes m�todos s�o explicados para que voc� entenda, se previna destes tipos de ataques al�m de entender a import�ncia de pol�ticas de

prote��o de senhas. 10.1. Introdu��o ---------------A cria��o de uma conta em uma m�quina `Linux' pode expor seu sistema (ou todas suas redes) a crackers simplesmente com a falta de treinamento e pol�ticas de seguran�a. Uma invasor com um simples acesso a uma conta de usu�rio pode conseguir acesso a �reas que cont�m dados importantes expondo seu sistema a ataques ou roubo de dados. Um firewall n�o pode fazer muito em uma situa��o dessas, um acesso atrav�s de uma conta de sistema v�lida � dif�cil de ser auditado e descoberto, a n�o ser que o usu�rio monitore seus acesso via `lastlog' e o administrador conhe�a os h�bitos de seus usu�rios para notar o uso estranho de contas em determinados dias/hor�rios. Evitar situa��es como esta depende mais de conscientiza��o e treinamento tanto do administrador como dos usu�rios das contas para n�o expor o sistema a um ataque direto. Este cap�tulo do guia explicar� as situa��es mais comuns e alguns exemplos de como tais ataques acontecem. _ATEN��O:_ - Os dados aqui disponibilizados s�o puramente para fins did�ticos e compreens�o de como tais situa��es funcionam para se criar mecanismos de defesa personalizados de acordo com o que deseja proteger. 10.2. Cria��o, monitora��o e seguran�a de contas -----------------------------------------------Para adicionar uma conta de usu�rio ao sistema � simples, basta um comando `adduser [usu�rio]' e alguns poucos segundos para responder as quest�es do programa. Quando criamos contas para outros usu�rios temos 2 alternativas: deixarmos a senha em branco ou escolher uma senha que ser� passada ao usu�rio para que ele possa fazer a troca mais tarde. A primeira alternativa � muito perigosa, pois uma pessoa com acesso a `/etc/passwd' poder� facilmente descobrir sua lista de usu�rios (principalmente em uma grande empresa quando conhecemos as pol�ticas de cria��o de novas contas). Um funcion�rio notaria a presen�a do novato e poderia aproveitar esta oportunidade para tentar incriminar este usando a conta rec�m criada ou tentar outras coisas para obter benef�cio pr�prio atrav�s do descuido de outros. O segundo m�todo de senha inicial � um pouco mais seguro e de prefer�ncia a senha deve ser escolhida pelo usu�rio para que pessoas que conhecem o estilo de senhas iniciais escolhidas pelo administrador n�o possam deduzir a nova senha criada. � comum vermos senhas como "novo1234", "123456", "abcdef", "a1b3c3", o "nome do usu�rio" como senhas iniciais, pois � f�cil de lembrar. Senhas deste tipo s�o as primeiras a ser tentadas por crackers e programas espec�ficos para este fim. Mas se o o usu�rio esquecer de trocar sua senha provis�ria? O programa `chage' e `passwd' possui recursos que permitem definir limites m�nimos e m�ximo do tempo para troca de senha de acesso, n�mero m�ximo de dias ap�s expirar o tempo de troca da senha em que a conta ser� permanentemente desabilitada (at� que o administrador a reative) e o per�odo m�nimo entre troca de senhas. Alguns exemplos:

passwd -x 10 -w 3 teste A senha do usu�rio teste expirar� ap�s 10 dias (-x 10) e ele ser� avisado com 3 dias de anteced�ncia (-w 3) para trocar sua senha. Ap�s o per�odo m�ximo o usu�rio ser� obrigado a trocar a senha. Quando o usu�rio efetuar o login receber� a seguinte mensagem: `Warning: your password will expire in 3 days'. passwd -x 10 -w 3 -i 2 teste A senha do usu�rio teste expirar� ap�s 10 dias (-x 10) e ele ser� avisado com 3 dias de anteced�ncia (-w 3) para trocar sua senha, ap�s a expira��o da senha, o usu�rio tem 2 dias antes da conta ser desativada (-i 2). Se o per�odo expirar e o usu�rio tentar um novo login ser� mostrada a mensagem: `Your account has expired: Please contact your system administrator' Para reativar a conta acima, remova totalmente o bloqueio da conta do usu�rio `teste' com `passwd -x 0 teste', `passwd -x 99999 -w 7 -i 0 teste' ou especifique um per�odo de dias maior em adi��o �queles especificados para que ele possa trocar a senha. Por exemplo, caso tenha passado 3 dias desde que a conta acima expirou e deseje dar mais 2 dias para o usu�rio trocar a conta: `passwd -x 17 -i 0 teste' A conta ser� reativada por mais 2 dias dando a oportunidade do usu�rio trocar a senha. Preste aten��o neste exemplo para entender bem a situa��o e prazos. passwd -x 90 -n 60 -w 15 -i 0 teste A senha do usu�rio teste expirar� ap�s 90 dias (-x 90), ele ser� avisado para trocar sua senha com 15 dias antes do prazo final (-w 15) e a conta ser� imediatamente desativada caso o prazo m�ximo para troca da senha expire (-i 0). O usu�rio tamb�m n�o poder� trocar sua senha durante os primeiros 60 dias desde a �ltima troca de senha (-n 60). Em sistemas onde precisa adicionar restri��es a muitos usu�rios na cria��o da conta, � recomend�vel seguir os m�todos descritos em Se��o 10.2.1, `Definindo valores padr�es de restri��o'. _OBS1:_ Em sistemas `Shadow Passwords') `/etc/shadow', isto detalhes fornecidos

com senhas ocultas ativadas (veja Se��o 10.4.1, as restri��es acima ser�o especificadas no arquivo garante que s� o usu�rio `root' tenha acesso aos neste arquivo.

_OBS2:_ A _-d_ do `passwd' serve para remover a senha do usu�rio especificado ou seja somente ser� necess�rio fornecer o nome de usu�rio para ter acesso ao sistema. _OBS3:_ Leve em considera��o que o uso do recursos de senhas de grupo � um risco de seguran�a, pois a mesma senha ser� compartilhada entre diversas pessoas. _OBS4:_ O programa `useradd' combina as fun��es do `adduser' e `passwd' para garantir que a conta seja criada com as restri��es

apropriadas. O �nico inconveniente � que o `useradd' quebra o _Debian Policy_ e precisa de todos todos os par�metros para a cria��o correta da conta (como o diret�rio home, senha criptografada, e UID num�rico). Seu uso � indicado em shell scripts que cuidam automaticamente da tarefa de adicionar usu�rios ao sistema. 10.2.1. Definindo valores padr�es de restri��o ---------------------------------------------Isto � muito �til quando precisa criar diversos usu�rios com as mesmas restri��es de contas, isto tornar� o gerenciamento do sistema muito mais pr�tico (tudo em Unix � feito para ser mais pr�tico, s� devemos saber onde mexer). O arquivo `/etc/defaults/useradd' cont�m valores padr�es que ser�o usados pelo `useradd' e `adduser' para definir valores de restri��es de contas. Estes valores s�o gerados usando a op��o _-D_ em combina��o com as seguintes op��es do `useradd': * `-b [home]' - Especificar o diret�rio home de usu�rio. O padr�o � `/home'. * `-e [data]' - Data padr�o de expira��o de contas, especificada no formato AnoMesDia. Por exemplo, 20010920. * `-f [dias]' - N�mero m�ximo de dias que a conta permanece v�lida ap�s a data de expira��o at� ser desativada. * `-g [gid/grupo]' - ID do grupo ou nome do grupo que o usu�rio pertencer� inicialmente. * `-s [shell]' - Shell do usu�rio. O padr�o � `/bin/bash'. _OBS:_ Note que nem todas as op��es acima ter�o efeito com o `adduser' (principalmente as op��es _-f_, _-g_ e _-s_ que s�o especificadas no seu arquivo de configura��o `/etc/adduser.conf'). 10.2.2. Senhas f�ceis de adivinhar e escolha de boas senhas ----------------------------------------------------------A senha lhe identifica como o verdadeiro dono de uma conta em um sistema para garantir acesso a seus recursos. A senha de um sistema � t�o importante quanto uma senha de sua conta banc�ria, caso caia em m�os erradas as conseq��ncias poder�o ser catastr�ficas, todo cuidado � pouco na hora de escolher uma senha. Senhas f�ceis de adivinhar s�o o primeiro motivo de sucesso de crackers no acesso a sistemas de computadores (veja Se��o 10.3.1, `Dedu��o' e Se��o 10.3.2, `Engenharia Social'), o administrador pode for�ar o usu�rio a fazer trocas peri�dicas de senhas atrav�s dos recursos citados em Se��o 10.2, `Cria��o, monitora��o e seguran�a de contas', mas quem vai garantir que ele esteja escolhendo boas senhas para que ningu�m as descubra com facilidade? Abaixo uma lista de senhas ruins (que dever� evitar a todo custo usa-las) e boas: _Senhas Ruins_ * O uso da palavra `senha' como senha! Isto parece idiota mais existe... * Senhas com o mesmo nome do login (joao/joao). * Compostas por letras ou n�meros em seq�encia crescente ou decrescente (abcdef, 123456, 654321, etc, etc). Este tipo de senha pode ser adivinhada por dedu��o e s�o uma das primeiras combina��es que crackers usam para acertar senhas. * palavras relacionadas com o gosto pessoal. Por exemplo "escort",

"vectra", "subaru" se a pessoa � amante de carros. * Nome da esposa, filhos, familiares, animal de estima��o, time de futebol, �dolo da TV/filmes ou qualquer coisa relacionada a familiares ou indiretamente ao usu�rio. * Idade, data de anivers�rio, data de casamento, n�mero de identidade, t�tulo de eleitor, placa de carro ou qualquer coisa que seja caracter�stica do usu�rio. * Palavras existentes. Um ataque de dicion�rio poder� descobrir facilmente sua senha. * Senhas com menos de 8 letras * Senhas apenas em min�sculas ou MAI�SCULAS. _Senhas Boas_ * Uma boa senha nunca dever� ser lida mas f�cil de lembrar. Por exemplo pense em uma frase importante para voc� "meu sistema operacional preferido � o Linux" e pegue a primeira letra de cada palavra: "msopeol". PRONTO esta escolhida uma boa senha que � f�cil de se lembrar e dif�cil de ser quebrada por ataques de dicion�rio! * Uma boa senha deve conter n�meros e letras. A senha acima poderia ser modificada para "msopeol1" * Conter letras mai�sculas e min�sculas. "msopeoL1". * Conter 8 caracteres sempre que poss�vel. Isto aumenta bastante o n�mero de combina��es necess�rias para se quebrar uma senha em um ataque brute force (veja Se��o 10.3.4, `Brute Force'). Mesmo que a senha escolhida n�o chegue a 8 caracteres m�nimos, voc� poder� combina-la com n�meros. Com as dicas acima, a possibilidade de algu�m conseguir quebrar uma senha criptografada em seu sistema usando os ataques descritos em Se��o 10.3, `Tipos de ataques mais comuns para se conseguir uma senha.' � praticamente nula! Para os paran�icos de plant�o, o utilit�rio `makepasswd' pode criar uma senha com caracteres completamente aleat�rios: makepasswd --chars 8 4y0sBdwM Este comando retorna uma string com 8 caracteres (--chars 8) "4y0sBdwM". Se voc� entendeu boa parte deste guia tenho certeza que 1 ou 2 dias de treino e se acostuma com uma senha como esta ;-) _OBS:_ NUNCA NUNCA d� pistas sobre sua senha! Para voc� isto pode ser um desafio lan�ado a outras pessoas quase imposs�vel de ser resolvido, mas n�o se esque�a que muita gente � especializada neste tipo de dedu��o. 10.2.3. Atualiza��o de senhas de m�ltiplas contas ------------------------------------------------O programa `chpasswd' � usado para tal opera��o. Deve ser especificado um arquivo que cont�m os campos `usu�rio:senha' por linha. Caso as senhas estejam encriptadas dever� ser especificada a op��o _-e_ ao programa. chpasswd -e /localadmin/contas/contas.db O comando acima atualiza a senha de todos os usu�rios especificados no arquivo `contas.db' de uma s� vez.

10.2.4. A senha do usu�rio root ------------------------------_Esta se��o foi retirada do Manual de Instala��o da Debian_. A conta root � tamb�m chamada de _super usu�rio_, este � um login que n�o possui restri��es de seguran�a. A conta root somente deve ser usada para fazer a administra��o do sistema, e usada o menor tempo poss�vel. Qualquer senha que criar dever� conter de 6 a 8 caracteres, e tamb�m poder� conter letras mai�sculas e min�sculas, e tamb�m caracteres de pontua��o. Tenha um cuidado especial quando escolher sua senha root, porque ela � a conta mais poderosa. Evite palavras de dicion�rio ou o uso de qualquer outros dados pessoais que podem ser adivinhados. Se qualquer um lhe pedir senha root, seja extremamente cuidadoso. Voc� normalmente nunca deve distribuir sua conta root, a n�o ser que esteja administrando um computador com mais de um administrador do sistema. Utilize uma conta de usu�rio normal ao inv�s da conta root para operar seu sistema. Porque n�o usar a conta root? Bem, uma raz�o para evitar usar privil�gios root � por causa da facilidade de se cometer danos irrepar�veis como root. Outra raz�o � que voc� pode ser enganado e rodar um programa _Cavalo de Tr�ia_ -- que � um programa que obt�m poderes do _super usu�rio_ para comprometer a seguran�a do seu sistema sem que voc� saiba. 10.3. Tipos de ataques mais comuns para se conseguir uma senha. --------------------------------------------------------------10.3.1. Dedu��o --------------O cracker se aproveita da ingenuidade de usu�rios que deixam senhas em branco, usam senhas simples como o pr�prio nome, "abcdef", "asdfg", "123456", e outros tipos de senhas comuns para tentar obter acesso ao sistema. Senhas deduzidas s�o geralmente senhas muito simples e muito usadas... Uma situa��o comum para a escolha de uma senha deste tipo � o medo de esquecer a senha (quando n�o se consegue pensar em algo mais dif�cil e ao mesmo tempo que seja f�cil de lembrar) e quando o usu�rio � pego desprevenido e n�o se sabe o que usar como senha (como na assinatura de um provedor Internet, muito comum essa situa��o). Geralmente � muito r�pido e muito eficaz dependendo das habilidades do atacante disp�e. 10.3.2. Engenharia Social ------------------------Ataques por engenharia social s�o feitos atrav�s de pesquisa de dados pessoais e outras caracter�sticas relacionadas ao usu�rio (time de futebol, data de nascimento dele, da esposa, filhos, nome da atriz predileta, etc) e usando estes dados coletados para auxiliar na descoberta da senha. Este ataque requer uma pesquisa sobre os

h�bitos, gostos, etc. Mas existem outros tipos de ataque baseados em engenharia social, inclusive com o cracker passando-se pelo usu�rio. Para diminuir as possibilidades deste tipo de ataque entenda e siga os procedimentos da parte "Senhas Boas" na Se��o 10.2.2, `Senhas f�ceis de adivinhar e escolha de boas senhas' e continue lendo esta se��o. Outro detalhe importante para diminuir as possibilidades de um ataque deste tipo bem sucedido � permitir somente o acesso do servi�o de `finger' a redes confi�veis (locais onde uns conhecem os outros). Os detalhes fornecidos pelo finger podem ser suficientes para garantir sucesso deste tipo de ataque: #finger joao Login: joao Name: Joao P. M. Directory: /home/joao Shell: /bin/bash Office: Sala 400 Andar 2, 123-4567 Home: 123-7654 Last login Fri Aug 25 21:20 (AMT) on tty3 No mail. Grupo de cadastramento. As �ltimas linhas da sa�da do finger s�o os dados contidos nos arquivos `.plan' e `.projects' do diret�rio de usu�rio. O cracker com base nos dados fornecidos acima pelo finger poderia inventar uma situa��o em que necessitaria de troca de senha por algum motivo. Abaixo uma situa��o onde o cracker sabe que n�o existe identificador de chamadas na empresa e conhece as fragilidades: * Cracker: Disca para o CPD? * Vitima: CPD? * Cracker: Oi, eu sou o Joao P. M. do grupo de cadastramento aqui do segundo andar, estou tentando entrar no sistema mas por algum motivo ele n�o aceita minha senha (fazendo-se de ignorante no assunto). * Vitima: Por favor Sr. verifique se o Caps Lock do seu teclado est� ativado, letras em mai�sculas/min�sculas fazem diferen�a em nossos sistemas. * Cracker: Ok vou checar (espera um tempo). N�o, esta tudo Ok, voc� poderia agilizar isto de alguma maneira, preciso lan�ar algumas fichas no sistema. * Vitima: Posso modificar sua senha para um nome qualquer, depois voc� poder� trocar por si pr�prio. * Cracker: Ok, por mim tudo bem. * Vitima: Humm, modifiquei para "cad1234", basta voc� usa-la e ter� acesso ao sistema. Ap�s isso execute o utilit�rio passwd para troca-la para algo que desejar. * Cracker: Ok, muito obrigado. Tenha um bom dia. Este � um exemplo simples de ataque por engenharia social. Dependendo do objetivo, este tipo de ataque pode levar semanas e as vezes requer contatos com diversas empresas criando diversas situa��es para obter detalhes necess�rios para atingir o objetivo. As pol�ticas de seguran�a de senhas minimizam riscos deste tipo. Como este � um caso que o requisitante � um funcion�rio pr�ximo do departamento de inform�tica, o mais adequado seria o administrador se deslocar ao setor (ou enviar um t�cnico do setor treinado para tal situa��o) para saber se quem diz ser quem � est� realmente no local enfrentando aquela situa��o. O contato com o respons�vel do setor (conhecido do t�cnico) tamb�m pode ser uma alternativa antes de entregar uma senha a um desconhecido.

Para casos externos (principalmente para empresas que mant�m determinados servi�os em funcionamento em nosso servidor, como servidores de p�ginas), o procedimento correto seria passar uma nova senha por e-mail (de prefer�ncia criptografado com `pgp') ao inv�s de telefone. Isto garantir� que a senha n�o caia nas m�os erradas. _OBS1:_ Qualquer detalhe sobre a pol�tica de cria��o de senhas, trocas de senhas, etc. poder� ter muito valor para um cracker obter acesso ao seu sistema. _OBS2:_ Dificulte as maneiras para se obter acesso `root' ao sistema via conta de usu�rio comum. � de extrema import�ncia utilizar conex�es de dados criptografadas quando for necess�rio acesso externo ao seu sistema. _OBS3:_ Nunca use uma mesma senha para fazer tudo (banco, acessar seu sistema, conectar-se ao seu provedor, senha de root). Voc� estar� em s�rios apuros caso algu�m tenha acesso a esta senha. � dif�cil lembrar de v�rias senhas, mas voc� pode aditar uma senha e criar modifica��es a partir dela para utiliza��o em outros locais, por exemplo: "wekpdm" => "Bwekpdm1" => "3wekpdmS", etc. 10.3.3. Ataques por dicion�rio -----------------------------De posse do arquivo de senhas `/etc/passwd', o cracker utiliza um arquivo que cont�m diversas palavras que ser�o tentadas como senha. Este trabalho � feito automaticamente por ferramentas dedicadas a este tipo de tarefa e pode levar dias dependendo da lista de senhas do cracker e quantidades de usu�rios existentes no arquivo de senha. Note que o uso de criptografia _md5_ e _senhas ocultas_ dificultam bastante ao arquivo de senhas e o sucesso de um ataque bem sucedido (veja Se��o 10.4.1, `Shadow Passwords' e Se��o 10.4.2, `Senhas MD5'). 10.3.4. Brute Force ------------------De posse do arquivo de senhas `/etc/passwd' o cracker utiliza uma ferramenta que tenta diversas combina��es de letras seq�encialmente na tentativa de descobrir uma senha. Este ataque geralmente � usado como �ltimo recurso ap�s um ataque por dicion�rio, e leva muito tempo para descobrir uma senha. Dependendo se uma senha conter caracteres aleat�rios, combina��o de letras mai�sculas/min�sculas, n�meros, a senha ser� praticamente imposs�vel de ser descoberta. Note que o uso de criptografia _md5_ e _senhas ocultas_ aumentam bastante a prote��o das senhas (veja Se��o 10.4.1, `Shadow Passwords' e Se��o 10.4.2, `Senhas MD5'). 10.3.5. Monitora��o de toques do teclado ---------------------------------------Este ataque � instalado sem teclado em um cracker obt�m

muito comum em sistemas DOS e Windows, um programa � o conhecimento do usu�rio que grava todos os toques do arquivo escondido pelo cracker. Ap�s certo tempo o acesso ao arquivo e aos dados que ele cont�m. Este tipo

de ataque � muito perigoso e pode capturar senhas n�o s� do sistema como n�meros de cart�o de cr�dito digitados (caso o usu�rio tenha feito compras on-line), conta banc�ria+senha e tudo mais que for digitado pelo teclado. 10.3.6. Login falso ------------------Esta � uma forma r�pida de se conseguir acesso a um sistema. � criada uma tela de login id�ntica a original do sistema, s� que ao digitar nome e senha, estes s�o gravados em um arquivo (que ser� mais tarde recuperado pelo cracker para obter acesso ao sistema) e uma mensagem de erro ser� exibida pelo sistema. Naturalmente o usu�rio pensar� que digitou o nome/senha incorretamente e far� uma nova tentativa, a segunda ocorrer� com sucesso (fazendo este pensar que errou *mesmo* a senha). Sua aten��o � muito importante para evitar este tipo de ataque, caso desconfie de algo errado, entra no sistema e d� um `find --type f -cmin -3' para localizar os arquivos modificados nos �ltimos 3 minutos e localizar poss�veis bancos de dados de senhas. Outra alternativa � realmente digitar uma senha inv�lida intencionalmente (e diferente da correta) e na segunda tentativa lan�ar a senha v�lida (normalmente sistemas deste tipo bem elaborados chamam o verdadeiro sistema de login na segunda tentativa). 10.4. Melhorando a seguran�a das senhas armazenadas em seu sistema -----------------------------------------------------------------10.4.1. Shadow Passwords -----------------------Senhas Ocultas (shadow passwords) aumentam consideravelmente a senha do seu sistema pois as senhas ser�o armazenadas em um arquivo separado: `/etc/shadow' para senhas de usu�rios e `/etc/gshadow' para senhas de grupos. Estes dois arquivos poder�o ser acessados somente pelo usu�rio root. O armazenamento de senhas no arquivo `/etc/passwd' e `/etc/groups' n�o � seguro, estes arquivos devem ser lidos por todos os usu�rios porque muitos programas mapeiam a UID do usu�rio com seu nome e vice versa. O utilit�rio `shadowconfig' � usado para ativar/desativar o suporte a senhas ocultas (de usu�rios e grupos) em seu sistema. Adicionalmente os utilit�rios `pwconv'/`grpconv' podem ser usados separadamente para ativar o suporte a senhas ocultas de usu�rios/grupos e `pwunconv'/`grpunconv' para desativar este suporte. _ATEN��O:_ Caso voc� inclua usu�rios em grupos manualmente no arquivo `/etc/passwd', tamb�m precisar� fazer isto no arquivo `/etc/shadow' para que n�o tenha problemas. Esta tarefa � feita automaticamente com o comando `adduser usu�rio grupo'. O programa `vipw' e `vigr' tamb�m podem ser usados com a op��o _-s_ para editar os arquivos `/etc/shadow' e `/etc/gshadow' respectivamente. 10.4.2. Senhas MD5

-----------------O sistema de criptografia usado pelas senhas MD5 � mais seguro que o padr�o Crypto e permitem o uso de senhas maiores do que 8 caracteres. O uso de senhas MD5 � recomendado para aumentar o n�vel de prote��o da senha. N�o use caso estiver executando um servi�o de NIS. _OBS:_ Caso utilize senhas MD5 em um sistema com PAM, inclua a palavra `md5' na linha de configura��o do m�todo de autentica��o `password' do m�dulo `pam_unix.so': password required pam_unix.so md5 ------------------------------------------------------------------------------11. Apache ---------Esta cap�tulo documenta a configura��o, personaliza��o, introdu��o aos mecanismos de autentica��o e controle de acesso do `Apache', sistema proxy, virtual hosting, e exemplos de configura��o do servidor `httpd'. Ele n�o tem como objetivo ser uma refer�ncia completa de configura��o, mas sim abordar didaticamente o assunto. 11.1. Introdu��o ---------------O servidor web � um programa respons�vel por disponibilizar p�ginas, fotos, ou qualquer outro tipo de objeto ao navegador do cliente. Ele tamb�m pode operar recebendo dados do cliente, processando e enviando o resultado para que o cliente possa tomar a a��o desejada (como em aplica��es CGI's, banco de dados web, preenchimento de formul�rios, etc). O `Apache' � um servidor Web extremamente configur�vel, robusto e de alta performance desenvolvido por uma equipe de volunt�rios (conhecida como `Apache Group') buscando criar um servidor web com muitas caracter�sticas e com c�digo fonte dispon�vel gratuitamente via Internet. Segundo a Netcraft (http://www.netcraft.com/survey/), o `Apache' � mais usado que todos os outros servidores web do mundo juntos. Este cap�tulo n�o tenta ser um guia completo ao `Apache', mas tentar� mostrar como sua estrutura � organizada, as diretivas principais de configura��o, diretivas de seguran�a, virtual hosting, proxy, o uso de utilit�rios de gerenciamento do servidor, como personalizar algumas partes do servidor e programas �teis de terceiros para an�lise e diagn�stico do servidor web. N�o deixe tamb�m de ver Se��o 11.14, `Exemplo comentado de um arquivo de configura��o do Apache' pois cont�m muitas explica��es interessante e faz parte do aprendizado. 11.1.1. Vers�o -------------� assumido que esteja usando a vers�o 1.3.22 do `apache'.

As

explica��es contidas aqui podem funcionar para vers�es posteriores, mas � recomend�vel que leia a documenta��o sobre modifica��es no programa (changelog) em busca de mudan�as que alterem o sentido das explica��es fornecidas aqui. 11.1.2. Um resumo da Hist�ria do Apache --------------------------------------O `Apache' tem como base o servidor web `NCSA 1.3' (_National Center of Supercomputing Applications_), que foi desenvolvido por Rob McCool. Quando Rob deixou o NCSA, o desenvolvimento foi interrompido, assim muitos desenvolvedores buscaram personalizar sua pr�pria vers�o do NCSA ou adicionar mais caracter�sticas para atender as suas necessidades. Neste momento come�a a hist�ria do `Apache' com _Brian Behlendorf_ e _Cliff Skolnick_ abrindo uma lista de discuss�o para interessados no desenvolvimento, conseguindo espa�o em um servidor doado pela _HotWired_ e trocando patches corrigindo problemas, adicionando recursos e discutindo id�ias com outros desenvolvedores e hackers interessados neste projeto. A primeira vers�o oficial do `Apache' foi a 0.6.2, lan�ada em Abril de 1995 (neste per�odo a NCSA retomava o desenvolvimento de seu servidor web, tendo como desenvolvedores _Brandon Long_ e _Beth Frank_ que tamb�m se tornaram membros especiais do grupo `Apache', compartilhando id�ias sobre seus projetos). Nas vers�es 2.x do Apache, a escalabilidade do servidor foi ampliada suportando as plataformas `Win32' (n�o obtendo o mesmo desempenho que em plataformas UNIX mas sendo melhorado gradativamente). 11.1.3. Enviando Corre��es/Contribuindo com o projeto ----------------------------------------------------Um formul�rio est� dispon�vel na Web para o envio de corre��es/sugest�es em `http://www.apache.org/bug_report.html'. Uma lista de anuncio sobre o `Apache' est� dispon�vel em que divulgam corre��es, novas vers�es e realiza��o de eventos. Mais detalhes sobre o desenvolvimento do Apache podem ser visualizadas na URL `http://dev.apache.org'. 11.1.4. Caracter�sticas do Apache --------------------------------Abaixo est�o algumas caracter�sticas que fazem esse servidor web o preferido entre os administradores de sistemas: * Possui suporte a scripts cgi usando linguagens como _Perl, PHP, Shell Script, ASP, etc_. * Suporte a autoriza��o de acesso podendo ser especificadas restri��es de acesso separadamente para cada endere�o/arquivo/diret�rio acessado no servidor. * Autentica��o requerendo um nome de usu�rio e senha v�lidos para acesso a alguma p�gina/sub-diret�rio/arquivo (suportando criptografia via Crypto e MD5). * Negocia��o de conte�do, permitindo a exibi��o da p�gina Web no idioma requisitado pelo Cliente Navegador. * Suporte a tipos mime.

* Personaliza��o de logs. * Mensagens de erro. * Suporte a virtual hosting (� poss�vel servir 2 ou mais p�ginas com endere�os/ portas diferentes atrav�s do mesmo processo ou usar mais de um processo para controlar mais de um endere�o). * Suporte a IP virtual hosting. * Suporte a name virtual hosting. * Suporte a servidor Proxy ftp e http, com limite de acesso, caching (todas flex�velmente configur�veis). * Suporte a proxy e redirecionamentos baseados em URLs para endere�os Internos. * Suporte a criptografia via SSL,Certificados digitais * M�dulos DSO (Dynamic Shared Objects) permitem adicionar/remover funcionalidades e recursos sem necessidade de recompila��o do programa. 11.1.5. Ficha t�cnica --------------------Pacote: `apache' Utilit�rios: * `apache' - Servidor Web Principal * `apachectl' - Shell script que faz interface com o `apache' de forma mais amig�vel * `apacheconfig' - Script em Perl para configura��o interativa b�sica do `Apache' * `htpasswd' - Cria/Gerencia senhas criptografadas Crypto/MD5 * `htdigest' - Cria/Gerencia senhas criptografadas Crypto/MD5 * `dbmmanage' - Cria/Gerencia senhas em formato DBM (Perl) * `logresolve' - Faz um DNS reverso dos arquivos de log do `Apache' para obter o endere�o de hosts com base nos endere�os IP's. * `ab' - Apache Benchmarcking - Ferramenta de medida de desempenho do servidor Web Apache. Por padr�o, os arquivos de configura��o do `Apache' residem no diret�rio `/etc/apache': httpd.conf Arquivo de configura��o principal do `Apache', possui diretivas que controlam a opera��o do daemon servidor. Um arquivo de configura��o alternativo pode ser especificado atrav�s da op��o "-f" da linha de comando. srm.conf Cont�m diretivas que controlam a especifica��o de documentos que o servidor oferece aos clientes. O nome desse arquivo pode ser substitu�do atrav�s da diretiva ResourceConfig no arquivo principal de configura��o. access.conf Cont�m diretivas que controlam o acesso aos documentos. O nome desse arquivo pode ser substitu�do atrav�s da diretiva _AccessConfig_ no arquivo principal de configura��o. O servidor Web l� os arquivos acima na ordem que est�o especificados (`httpd.conf', `srm.conf' e `access.conf'). As configura��es tamb�m podem ser especificadas diretamente no arquivo `httpd.conf'. Note que n�o � obrigat�rio usar os arquivos `srm.conf' e `access.conf', mas isto proporciona uma melhor organiza��o das diretivas do servidor, principalmente quando se tem um grande conjunto de diretivas. Um exemplo comentado destes tr�s arquivos de configura��o � encontrado em Se��o 11.14, `Exemplo comentado de um arquivo de configura��o do

Apache'. 11.1.6. Requerimentos --------------------A m�quina m�nima para se rodar um servidor `Apache' para atender a uma rede padr�o 10MB/s � um Pentium 90, 24MB de RAM, um HD com um bom desempenho e espa�o em disco consider�vel de acordo com o tamanho projetado de seu servidor web (considerando seu crescimento). Uma configura��o mais r�pida para redes 100MB/s teria como processador um Cyrix MX ou Intel Pentium MMX como plataforma m�nima (Cyrix � o recomendado pelo alto desempenho no processamento de strings), barramento de HD SCSI com uma boa placa controladora (Adaptec 19160 ou superior) com 64MB de RAM no m�nimo. 11.1.7. Arquivos de log criados pelo Apache ------------------------------------------O servidor `httpd' grava seus arquivos de log geralmente em `/var/log/apache', n�o � poss�vel descrever os arquivos de logs usados porque tanto seus nomes como conte�do podem ser personalizados no arquivo `httpd.conf'. Mesmo assim, os arquivos de logs encontrados na instala��o padr�o do `Apache' s�o os seguintes: * `access.log' - Registra detalhes sobre o acesso as p�ginas do servidor `httpd'. * `error.log' - Registra detalhes saber erros de acesso as p�ginas ou erros internos do servidor. * `agent.log' - Registra o nome do navegador do cliente (campo <UserAgent> do cabe�alho http). Mais refer�ncias podem ser encontradas em Se��o 11.10, `Sistema de Log do Apache'. Um bom programa para gera��o de estat�sticas de acesso com gr�ficos � o Se��o 11.10.15, `Relat�rio gr�fico de acesso ao sistema'. 11.1.8. Instala��o -----------------`apt-get install apache apache-doc' (o pacote `apache-doc' cont�m a documenta��o de referencia do `Apache', � recomend�vel instala-lo se estiver curioso e deseja entender melhor seu funcionamento ou consultar diretivas). 11.1.9. Iniciando o servidor/reiniciando/recarregando a configura��o -------------------------------------------------------------------O `Apache' pode ser executado tanto como um servidor _Inetd_ ou como um _Daemon_. A inicializa��o de programas pelo _Inetd_ � uma boa estrat�gia quando voc� precisa de um controle de acesso b�sico (o fornecido pelo `tcpd'), e o servi�o � pouco usado na m�quina. A seguran�a de um servi�o iniciado pelo `inetd' pode ser substitu�da e melhorada por um firewall bem configurado, garantindo facilidades extras como um relat�rio de tr�fego para a porta do servidor web, por exemplo. Mesmo assim se o servidor `Apache' estiver rodando como daemon e estiver ocioso, ele ser� movido para swap liberando a mem�ria RAM para a execu��o de outros programas.

Neste cap�tulo ser� assumido seu funcionamento do `Apache' como Daemon, que � o m�todo de funcionamento recomendado para sites de grande tr�fego onde ele � freq�entemente requisitado e considerado um servi�o cr�tico. O m�todo padr�o para iniciar programas como daemons na `Debian' � atrav�s dos diret�rios `/etc/rc?.d'. Cada diret�rio deste cont�m os programas que ser�o executados/interrompidos no n�vel de execu��o "?" (`rc1.d/', `rc2.d/' ...). O conte�do destes diret�rios s�o links para os scripts originais em `/etc/init.d/programa', o nosso programa alvo � `/etc/init.d/apache'. O `/etc/init.d/apache' aceita os seguintes par�metros: * `start' - Inicia o `Apache' * `stop' - Finaliza o `Apache' * `restart' - Reinicia o `Apache', efetuando uma pausa de 5 segundos entre a interrup��o do seu funcionamento e reinicio. * `reload' - Recarrega os arquivos de configura��o do `Apache', as altera��es entram em funcionamento imediatamente. * `reload-modules' - Recarrega os m�dulos. Basicamente � feito um restart no servidor. * `force-reload' - Faz a mesma fun��o que o reload Para reiniciar o `Apache' usando o `/etc/init.d/apache', digite: ./etc/init.d/apache restart ou `cd /etc/init.d;./apache restart' Na realidade, o que o `/etc/init.d/apache' faz � interagir diretamente com o shell script `apachectl'. O `apachectl' recebe os par�metros enviados pelo usu�rio e converte para sinais que ser�o enviados para o bin�rio `apache'. Da mesma forma ele verifica os c�digos de sa�da do `apache' e os transforma em mensagens de erro leg�veis para o usu�rio comum. Os seguintes comandos s�o aceitos pelo `apachectl': * `httpd-server/start' - Inicia o `Apache' * `stop' - Finaliza o `Apache' (enviando um sinal TERM) * `restart' - Reinicia o `Apache' (enviando um sinal HUP) * `graceful' - Recarrega os arquivos de configura��o do `Apache' (enviando um sinal USR1) * `fullstatus' - Mostra o status completo do servidor `Apache' (requer o `lynx' e o m�dulo _mod_status_ carregado). * `status' - Mostra o status do processo do servidor `Apache' (requer o `lynx' e o m�dulo _mod_status_ carregado). * `configtest' - Verifica se a sintaxe dos arquivos de configura��o est� OK (executa um `apache -t'). 11.1.10. Op��es de linha de comando ----------------------------------* `-D nome' - define um nome que ser� usado na diretiva . * `-d diret�rio' - especifica o diret�rio _ServerRoot_ (substitui o do arquivo de configura��o). * `-f arquivo' - especifica um arquivo _ServerConfigFile_

alternativo. * `-C "diretiva"' - processa a diretiva antes de ler os arquivo de configura��o. * `-c "diretiva"' - processa a diretiva depois de ler os arquivos de configura��o. * `-v' - mostra a vers�o do programa. * `-V' - mostra op��es usadas na compila��o do `Apache'. * `-h' - Mostra o help on-line do programa * `-l' - lista m�dulos compilados junto com o Apache (embutidos) * `-L' - lista diretivas de configura��es dispon�veis * `-S' - Mostra configura��es de Virtual Hosting * `-t' - executa a checagem de sintaxe nos arquivos de configura��o do Apache (incluindo a checagem da diretiva _DocRoot_). * `-T' - executa a checagem de sintaxe nos arquivos de configura��o do `Apache' (menos da diretiva _DocRoot_). 11.2. Configurando a porta padr�o do Apache ------------------------------------------Use a diretiva _Port_ para configurar a porta padr�o que o `Apache' receber� requisi��es por padr�o. A diretiva _Listen_ tamb�m � usada para ajustar o endere�o/portas alternativas (usadas tamb�m em `Virtual Hosts') e substituir� as defini��es de _Port_(veja Se��o 11.5, `Especificando endere�os/portas adicionais (a diretiva _Listen_)' para detalhes). _OBS:_: Somente uma diretiva _Port_ e um argumento poder�o ser especificados. Para mais controle sobre as portas do sistema use a diretiva _Listen_. 11.3. Adicionando uma p�gina no Apache -------------------------------------Existem dois tipos de p�ginas que podem ser adicionadas ao `Apache': a p�gina ra�z e sub-p�ginas. _P�gina Ra�z_ A p�gina ra�z � especificada atrav�s da diretiva _DocumentRoot_ e ser� mostrada quando se entrar no dom�nio principal, como `http://www.focalinux.org'. Na configura��o padr�o do `Apache', _DocumentRoot_ aponta para o diret�rio `/var/www'. Este diret�rio ser� assumido como _ra�z_ caso os diret�rios n�o sejam iniciados por uma `/': * `home/focalinux' - Aponta para `/var/www/home/focalinux' * `/home/focalinux' - Aponta para `/home/focalinux' Este diret�rio deve conter um arquivo de �ndice v�lido (especificado pela diretiva _DocumentIndex_ no `srm.conf') e permiss�es de acesso v�lidas no arquivo `access.conf' para autorizar o acesso as p�ginas em `/var/www' (veja Se��o 11.7, `Restri��es de Acesso' para detalhes). Sub-p�ginas Sub p�ginas s�o armazenadas abaixo do diret�rio da _P�gina ra�z_, como `http://www.focalinux.org/download'. Elas podem ser um subdiret�rio da p�gina principal em `/var/www' ou serem criadas atrav�s da diretiva _Alias_ no arquivo `srm.conf'. Caso seja um

sub-diret�rio, as permiss�es de acesso de `/var/www' ser�o herdadas para este subdiret�rio, mas tamb�m poder�o ser modificadas com a especifica��o de uma nova diretiva de acesso. Atrav�s da diretiva _Alias_ a p�gina pode estar localizada em outro diret�rio do disco (at� mesmo outro sistema de arquivos) e as permiss�es de acesso dever�o ser definidas para aquela p�gina. Para criar um endere�o `http://www.focalinux.org/iniciante' que aponta para o diret�rio `/home/focalinux/download/iniciante' no disco local, basta usar a seguinte diretiva no `srm.conf': Alias /iniciante /home/focalinux/download/iniciante Pode ser necess�rio permitir o acesso a nova p�gina caso o servidor tenha uma configura��o restritiva por padr�o (veja Se��o 11.7, `Restri��es de Acesso' para detalhes). Ap�s isto, fa�a o servidor `httpd' re-ler os arquivos de configura��o ou reinicia-lo. Ap�s isto, a p�gina `/home/focalinux/download/iniciante' estar� acess�vel via `http://www.focalinux.org/iniciante'. _OBS:_ Caso inclua uma `/' no diret�rio que ser� acess�vel via URL, o endere�o somente estar� dispon�vel caso voc� entre com `/' no final da URL: Alias /doc/ /usr/doc/ O diret�rio `/doc' somente poder� ser acessado usando `http://www.focalinux.org/doc/', o uso de `http://www.focalinux.org/doc' retornar� uma mensagem de URL n�o encontrada. 11.4. Configurando as interfaces que o Apache atender� -----------------------------------------------------A diretiva _BindAddress_ � usada para especificar endere�os IP das interfaces ou endere�os FQDN que o `Apache' responder� requisi��es. Mais de um endere�o podem ser especificados separados por espa�os. Caso n�o seja definido, o `Apache' assumir� o valor "*" (atender� requisi��es vindas de qualquer interface). _OBS1:_ - � permitido usar somente uma diretiva _BindAddress_. A diretiva _Listen_ dever� ser usada se desejar mais controle sobre as portas do servidor web. Veja Se��o 11.5, `Especificando endere�os/portas adicionais (a diretiva _Listen_)' para detalhes. _OBS2:_ - As interfaces especificadas pela diretiva _Listen_ substituir� as especificadas em _BindAddress_. Exemplo: * `BindAddress 192.168.1.1' - Especifica que os usu�rios da faixa de rede `192.168.1.*' ter�o acesso ao servidor `httpd'. Isto assume que a m�quina possui o endere�o `192.168.1.1' em sua interface de rede interna. * `BindAddress *' - Atender� requisi��es vindas de qualquer interface de rede.

11.5. Especificando endere�os/portas adicionais (a diretiva _Listen_) --------------------------------------------------------------------A diretiva _Listen_ � usada para se ter um controle maior sobre a especifica��o de endere�os/portas alternativas que o servidor web esperar� por requisi��es externas. Esta diretiva � muito usada na constru��o de _Virtual Hosts_. Esta diretiva pode substituir completamente as diretivas _Port_ e _BindAddress_. Podem ser usados o n�mero da porta, ou o par `endere�o:porta': Listen 192.168.1.1:80 Listen 192.168.7.1:81 Listen 60000 O endere�o que dever� ser usado � o da interface de rede (assim como na diretiva _BindAddress_). No exemplo acima, o servidor `httpd' esperar� por requisi��es vindas de `192.168.1.*' na porta 80 e tamb�m 60000, e requisi��es vindas de 192.168.7.1 na porta 81 e tamb�m 60000. 11.6. Especificando op��es/permiss�es para as p�ginas ----------------------------------------------------As op��es de restri��o podem tanto ser especificadas nas diretivas , ou quanto nos arquivos `.htaccess' (ou outro nome de arquivo de controle de acesso especificado pela op��o _AccessFileName_ do arquivo de configura��o do `Apache'). Cada diretiva de acesso � especificada entre e devem ser fechadas com (como na linguagem HTML). As seguintes diretivas de acesso s�o v�lidas no `Apache': Directory As restri��o afetar� o diret�rio no disco especificado, conseq�entemente a p�gina armazenada nele. Por exemplo: Order deny,allow deny from all allow from 10.1.0.1 O acesso ao diret�rio `/var/www' ser� permitido somente ao computador com o endere�o IP `10.1.0.1'. DirectoryMatch Funciona como a diretiva mas trabalha com express�es regulares como argumento. Por exemplo: Order deny,allow deny from all Bloquear� o acesso ao diret�rio `/www' e sub-diret�rios dentro dele. Files

As restri��es afetar�o os arquivos do disco que conferem com o especificado. � poss�vel usar os coringas _?_ e _*_ como no shell. Tamb�m podem ser usadas express�es regulares especificando um "~" ap�s `Files' e antes da express�o. Por exemplo: Order deny,allow deny from all Bloqueia o acesso a todos os arquivos com a extens�o `.txt' Order deny,allow Bloqueia o acesso a arquivos `gif, jpg, jpeg, bmp, png' (note que o "~" ativa o modo de interpreta��o de express�es regulares). FilesMatch Permite usar express�es regulares na especifica��o de arquivos (equivalente a diretiva ). Por exemplo: Order deny,allow Bloqueia o acesso a arquivos `gif, jpg, jpeg, bmp, png'. Location As restri��es afetar�o o diret�rio base especificado na URL e seus sub-diret�rios. Por exemplo: Order allow,deny Bloqueia o acesso de todos os usu�rios ao diret�rio `/security' da URL (a explica��o porque o acesso � bloqueado neste caso ser� explicado em Se��o 11.7.1, `Autoriza��o'). LocationMatch Id�ntico a diretiva mas trabalha com express�es regulares. Por exemplo: Order deny,allow deny from all Bloquear� URLs que cont�m a substring "/extra/data" ou "/special/data". O uso das diretivas e � apropriada quando voc� deseja trabalhar com permiss�es a n�vel de diret�rios/arquivos no disco local (o controle do proxy tamb�m � feito via ), o uso da diretiva � adequado para trabalhar com permiss�es a

n�vel de URL. A ordem de processamento das diretivas de acesso s�o processadas � a seguinte: 1. A diretiva (com exce��o de ) e os arquivos `.htaccess' s�o processados simultaneamente. As defini��es dos arquivos `.htaccess' substituem as de ) 2. Express�es regulares de , . 3. e s�o processados simultaneamente. 4. e s�o processados simultaneamente. Normalmente � encontrado a op��o _Options_ dentro de uma das diretivas acima, a fun��o desta diretiva � controlar os seguintes aspectos da listagem de diret�rios: All Todas as op��es s�o usadas exceto a `MultiViews'. � a padr�o caso a op��o _Options_ n�o seja especificada. ExecCGI Permite a execu��o de scripts CGI. FollowSymLinks O servidor seguir� links simb�licos neste diret�rio (o caminho n�o � modificado). Esta op��o � ignorada caso apare�a dentro das diretivas , e . Includes � permitido o uso de includes no lado do servidor. IncludesNOEXEC � permitido o uso de includes do lado do servidor, mas o comando `#exec' e `#include' de um script CGI s�o desativados. Indexes Se n�o existir um arquivo especificado pela diretiva no diret�rio especificado, o servidor formatar� automaticamente a listagem ao inv�s de gerar uma resposta de acesso negado. MultiViews Permite o uso da Negocia��o de conte�do naquele diret�rio. A negocia��o de conte�do permite o envio de um documento no idioma requisitado pelo navegador do cliente. SymLinksIfOwnerMatch O servidor somente seguir� links simb�licos se o arquivo ou diret�rio alvo tiver como dono o mesmo user ID do link. Esta op��o � ignorada caso apare�a dentro das diretivas , e . M�ltiplos par�metros para _Options_ podem ser especificados atrav�s de espa�os. _OBS1_: A op��o Options n�o tem efeito dentro da diretiva FILES. _OBS2_: Tanto faz usar mai�sculas quanto min�sculas nas diretivas de configura��o, op��es e par�metros de configura��o do `Apache', a capitaliza��o apenas ajuda a leitura e interpreta��o: SymLinksIfOwnerMatch (LinksSimb�licosSeDonoConferir). As op��es especificadas para o diret�rio afetam tamb�m seus sub-diret�rios, a n�o ser que sejam especificadas op��es separadas para o sub-diret�rio: Options Indexes FollowSymLinks Ao acessar o diret�rio `/var/www/focalinux', as permiss�es usadas

ser�o de `/var/www', ao menos que uma diretiva ou seja especificada: Options Indexes FollowSymLinks Options Includes As op��es e restri��es de acesso de `/var/www/focalinux' ser�o EXATAMENTE as especificadas no bloco da diretiva e somente os _includes_ ser�o permitidos. Para adicionar ou remover uma op��o individual definidas por diretivas anteriores, podem ser usado os sinais "+" ou "-", por exemplo: Options Indexes FollowSymLinks Options +Includes -Indexes As op��es _Indexes_ e _FollowSymLinks_ s�o definidas para o diret�rio `/var/www', ent�o as permiss�es do diret�rio `/var/www/focalinux' ser�o _FollowSymLinks_ (do diret�rio `/web/docs') e _Includes_ (adicionada) e o par�metro _Indexes_ n�o ter� efeito neste diret�rio. � permitido fazer um aninhamento das diretivas e : Order allow,deny allow from all Order deny,allow deny from all Neste caso, somente os arquivos `LEIAME-DONO.txt' existentes no diret�rio `/var/www' e seus sub-diret�rios ser�o bloqueados. Se a diretiva for usada fora de uma estrutura , ela ter� efeito em todos os arquivos disponibilizados pelo servidor. Este � excelente m�todo para proteger os arquivos de acesso, senhas e grupos, conforme ser� explicado mais adiante. Qualquer outro tipo de aninhamento de diretivas resultar� em um erro de configura��o ao se tentar carregar/recarregar o `Apache'. Um exemplo de diretiva incorreta: Options Indexes FollowSymLinks

Options +Includes -Indexes
O correto �: Options Indexes FollowSymLinks Options +Includes -Indexes Espero que tenha observado o erro no exemplo acima. _OBS1_: Voc� pode verificar se a configura��o do apache est� correta digitando `apache -t' como usu�rio root, se tudo estiver correto com suas configura��es ele retornar� a mensagem: "Syntax OK". _OBS2_: Se _Options_ n�o for especificado, o padr�o ser� permitir tudo exceto _MultiViews_. _OBS3_: Qualquer restri��o afetar� o diret�rio atual e todos os seus sub-diret�rios! Defina permiss�es de sub-diret�rios espec�ficos separadamente caso precise de um n�vel de acesso diferente. Veja tamb�m a se��o sobre arquivos OverRide (`.htaccess') para detalhes sobre este tipo de arquivo. _OBS4_: A diretiva de acesso "" n�o afetar� outros sistemas de arquivos montados dentro de seus subdiret�rios. Caso uma diretiva de acesso padr�o n�o seja especificada para outros sistemas de arquivos, o acesso ser� automaticamente negado. 11.7. Restri��es de Acesso -------------------------A restri��o de acesso do `Apache' � feita atrav�s de _Autoriza��o_ (Se��o 11.7.1, `Autoriza��o') e _Autentica��o_ (Se��o 11.7.2, `Autentica��o'). Atrav�s da _autoriza��o_, � checado se o endere�o/rede especificada tem ou n�o permiss�o para acessar a p�gina. A _autentica��o_ requer que seja passado nome e senha para garantir acesso a p�gina. Os m�todos de _Autoriza��o_ e _Autentica��o_ podem ser combinados como veremos mais adiante. 11.7.1. Autoriza��o ------------------A restri��o de acesso por autoriza��o (controlado pelo m�dulo `mod_access'), permite ou n�o o acesso ao cliente de acordo com o endere�o/rede especificada. As restri��es afetam tamb�m os sub-diret�rios do diret�rio alvo. Abaixo um exemplo de restri��o de acesso que bloqueia o acesso de qualquer host que faz parte do dom�nio _.spammers.com.br_ a URL `http://servidor/teste':

Option Indexes Order allow,deny allow from all deny from .spammers.com.br A op��o `Option' foi explicada acima, seguem as explica��es das outras diretivas: Order Especifica em que ordem as op��es de acesso _allow/deny_ ser�o pesquisadas. Caso n�o seja especificada, o padr�o ser� _deny/allow_. Note que a ordem de pesquisa de _allow_ e _deny_ � a inversa da especificada. A diretiva _Order_ aceita os seguintes valores: * `deny,allow' - Esta � a padr�o, significa um servidor mais restritivo; a diretiva _allow_ � processada primeiro e somente depois a diretiva _deny_. Caso nenhuma diretiva allow e deny forem especificadas ou n�o conferirem, _PERMITE TUDO_ como padr�o. * `allow,deny' - Significa um servidor mais permissivo, a op��o _deny_ � processada primeiro e somente depois a op��o _allow_. Caso nenhuma diretiva allow e deny for especificadas ou n�o conferirem, _BLOQUEIA TUDO_ como padr�o. * `mutual-failure' - Somente permite o acesso se o usu�rio receber autoriza��o atrav�s da op��o _allow_ e _N�O_ ser bloqueado pela op��o _deny_, caso uma das checagens falhe, o acesso � imediatamente negado. � uma op��o interessante quando voc� quer somente pessoas de um determinado endere�o/rede acessando o seu sistema e n�o estejam em sua lista negra :-) _ATEN��O_: � importante saber se a p�gina ser� permissiva ou restritiva para escolher a ordem mais adequada ao seu caso, tamb�m leve em considera��o a possibilidade do processamento cair na diretiva de acesso padr�o, caso nem a diretiva allow e deny conferiram e estiver usando a ordem de acesso "allow,deny" ou "deny,allow". Um sistema mal configurado neste aspecto poder� trazer s�rias conseq��ncias. � comum em p�ginas permissivas se definir a seguinte configura��o: Order allow,deny allow from all O motivo � que em um grande site, se forem adicionadas mais restri��es nesta p�gina (devido a alguns dom�nios que tem usu�rios mal comportados, bloqueio de acesso a rede do concorrente, potenciais atacantes, etc...), estas dever�o ser lidas antes da diretiva "allow from all" e podem passar desapercebidas ao administrador e podem simplesmente n�o funcionar caso a op��o _Order_ n�o esteja ajustada corretamente (lembre-se, voc� � o administrador e a integridade do site depende de sua aten��o na escolha da ordem correta das diretivas de acesso). allow from Especifica o endere�o que ter� acesso ao recurso especificado. A diretiva _allow_ from aceita os seguintes valores: * `all' - O acesso � permitido a todos. * um endere�o de dom�nio completo (FQDN). Por exemplo

`www.debian.org.br'. * um endere�o de dom�nio parcial. Qualquer computador que confira com o inicio ou fim ter� o acesso permitido. Por exemplo, `.spammers.com.br', `.debian.org'. * um endere�o IP completo, como `192.168.1.1' * um endere�o IP parcial como `192.168.1.' * um par rede/m�scara como `10.1.0.0/255.255.0.0' ou `10.1.0.0/16', uma faixa de acesso a m�quinas de uma mesma rede pode ser definida facilmente atrav�s deste m�todo. _OBS1_: � necess�rio reiniciar o `Apache' depois de qualquer modifica��o em seu arquivo de configura��o (executando `apachectl restart'), ou recarregar os arquivos de configura��o (`apachectl graceful'). _OBS2_: Mais de um host pode ser especificado separando com um espa�o: allow from 192.168. .debian.org.br Permitir� o acesso de qualquer m�quina que o endere�o IP confira com `192.168.*.*' e qualquer computador do dom�nio `debian.org.br' _OBS3_: Regras baseadas em nomes simples de hosts (como `www') n�o conferir�o! Dever� ser usado o FQDN ou IP: `www.dominio.com.br' _OBS4_: Caso Order n�o seja especificado, _deny,allow_ ser� usado como padr�o (ou seja, permitir� tudo como padr�o). deny from Especifica os endere�os que N�O ter�o acesso ao recurso especificado. As explica��es referentes a esta diretiva de acesso s�o id�ntica as de _allow from_. � recomend�vel o uso de endere�os IP ao inv�s de endere�os DNS e um mecanismo anti-spoofing no firewall ou c�digo de roteamento, pois ficar� mais dif�cil um ataque baseado em DNS spoofing, aumentando consideravelmente a seguran�a de seu servidor web. _ATEN��O_: Caso receba erros 403 (acesso negado) sem bloquear a URL nas diretivas de acesso, significa que o servidor Web n�o tem permiss�es para acessar/abrir o diret�rio da p�gina. Certifique-se que o _dono_ e _grupo_ do processo `Apache' (especificado pela diretiva _User_ e _Group_) possuem permiss�es de acesso �quele diret�rio. Abaixo alguns exemplos de permiss�es de acesso: Options SymLinksIfOwnerMatch Indexes MultiViews Order allow,deny allow from all Permite o acesso a de qualquer usu�rio de qualquer lugar (allow from all), permite tamb�m a visualiza��o da listagem formatada de arquivos caso nenhum arquivo especificado na diretiva _DirectoryIndex_ seja encontrado (Indexes), permite negocia��o de conte�do (_MultiViews_) e seguir links caso o dono do arquivo confira com o nome do link (_SymLinksIfOwnerMatch_). Options SymLinksIfOwnerMatch Indexes MultiViews

Tem o mesmo significado da diretiva acima por m�todos diferentes; quando nenhuma op��o _Order_ � especificada, _deny,allow_ � definido como padr�o, e como nenhuma op��o de acesso _allow/deny_ foi especificada, o padr�o "Order deny,allow" � usado e permite TUDO como padr�o. Options Indexes Order deny,allow deny from all Esta regra acima n�o tem muita l�gica pois restringe o acesso de todos os usu�rios ao diret�rio `/var/www', ao menos se esta for sua inten��o... Options All Order allow,deny allow from all A regra acima permite o acesso a URL `http://www.servidor.org/focalinux' de qualquer host na Internet Order deny,allow deny from all Bloqueia o acesso a qualquer arquivo `.htaccess' do sistema Order deny,allow deny from all Bloqueia o acesso a qualquer arquivo `leiame-arm.txt', `leiame-alpha.txt', `leiame-m68k.txt', `leiame-sparc.txt' e `leiame-powerpc.txt' fazendo uso de express�es regulares. Options Indexes Order mutual-failure allow from .dominio.com.br deny from lammer.dominio.com.br A diretiva acima somente permite acesso ao diret�rio `/var/www' de m�quinas pertencentes ao dom�nio `.dominio.com.br' desde que n�o seja `lammer.dominio.com.br'. Options Indexes MultiViews Order allow,deny deny from .com .com.br allow from all

Bloqueia o acesso ao diret�rio `/var/www' de computadores pertencentes aos dom�nios _.com_ e _.com.br_. Options None Order deny,allow allow from 192.168.1. .metainfo.org .debian.org deny from 200.200.123. A regra acima permite o acesso de m�quinas da rede `192.168.1.*', do dom�nio `*.metainfo.org' e `*.debian.org', o acesso de m�quinas da rede `200.200.123.*' � bloqueado (nada contra, peguei nesse n�mero ao acaso :-). Note que a m�quina `192.168.4.10' ter� acesso LIVRE a regra acima, pois n�o conferir� nem com _allow_ nem com _deny_, ent�o o processamento cair� na diretiva padr�o de _deny,allow_, que neste caso permite o acesso caso nem _allow_ e _deny_ conferiram com o padr�o. Options None Order allow,deny allow from 192.168.1. .metainfo.org .debian.org deny from 200.200.123. A regra acima � id�ntica a anterior somente com a mudan�a da op��o _Order_. Bloqueia o acesso de m�quinas da rede `200.200.123.*' e permite o acesso de m�quinas da rede `192.168.1.*', do dom�nio `*.metainfo.org' e `*.debian.org'. Note que a m�quina `192.168.4.10' ter� acesso BLOQUEADO a regra acima, pois n�o conferir� nem com _allow_ nem com _deny_, ent�o o processamento cair� na diretiva padr�o de _allow,deny_ que neste caso bloqueia o acesso. 11.7.2. Autentica��o -------------------Atrav�s da _autentica��o_ (controlado pelo m�dulo `mod_auth') � poss�vel especificar um _nome_ e _senha_ para acesso ao recurso solicitado. As senhas s�o gravadas em formato criptografado usando _Crypto_ ou _MD5_ (conforme desejado). O arquivo de senhas pode ser centralizado ou especificado individualmente por usu�rio, diret�rio ou at� mesmo por arquivo acessado. 11.7.2.1. Criando um arquivo de Senhas -------------------------------------O arquivo de senhas pode ser criado e mantido atrav�s do uso de 3 utilit�rios: `htpasswd', `htdigest' e `dbmmanage': 11.7.2.1.1. htpasswd --------------------

Este � usado para criar o arquivo de senhas. Para criar um banco de dados com o nome `senhas' para o usu�rio , � usada a seguinte sintaxe: `htpasswd -c -m senhas convidado' Voc� ser� perguntado por uma senha para o usu�rio e para redigita-la. A op��o "-c" indica que dever� ser criado um arquivo, a op��o "-m" indica a utiliza��o de senhas criptografadas usando o algoritmo _MD5_, que garante maior seguran�a que o m�todo _Crypto_. A senha pode ser especificada diretamente na linha de comando atrav�s da op��o "-b" (isto � um �timo recurso para utiliza��o em shell scripts ou programas CGI de integra��o com o navegador). `htpasswd -b -d senhas chefe abcdef' No exemplo acima, uma senha de alta seguran�a ser� introduzida no banco de dados `senhas' tornando imposs�vel o acesso a p�gina do usu�rio :-) Note que esta senha foi cadastrada usando o algoritmo de criptografia Crypto (op��o -d). O algoritmo _SHA_ tamb�m pode ser usado como alternativa, atrav�s da op��o "-s". Para modificar a senha do usu�rio convidado, basta usar a mesma sintaxe (sem a op��o "-c" que � usada para criar um novo arquivo): `htpasswd -m senhas convidado' ou `htpasswd -b -m senhas convidado nova_senha' Opcionalmente voc� pode especificar a op��o "-d" para atualizar tamb�m o formato da senha para _Crypto_. Podem existir senhas de criptografias mistas (_SHA, Crypto, MD5_) no mesmo arquivo sem nenhum problema. A mudan�a do formato de senhas � �til quando se deseja aumentar o n�vel de seguran�a oferecido por um melhor sistema ou para manter a compatibilidade com alguns scripts/programas que compartilhem o arquivo de senhas. 11.7.2.1.2. htdigest e dbmmanage -------------------------------Estes s�o id�nticos ao `htpasswd', a diferen�a � que o `htdigest' permite criar/manter um arquivo de senhas usando a autentica��o Digest, enquanto o `dbmmanage' permite manter o banco de dados de senhas em um arquivo `DB, DBM, GDBM' e `NDBM', formatos conhecidos pelo Perl. 11.7.2.2. Autentica��o atrav�s de usu�rios -----------------------------------------Atrav�s deste m�todo � poss�vel especificar que usu�rios ter�o acesso ao recurso definido, usando senhas de acesso individuais criptografadas usando um dos utilit�rios da se��o anterior. Para restringir o acesso ao endere�o `http://servidor.org/teste':

AuthName "Acesso a p�gina do Foca Linux" AuthType basic AuthUserFile /home/gleydson/SenhaUsuario # AuthGroupFile /home/users/SenhaGrupo Require valid-user Ao tentar acessar o endere�o `http://servidor/teste', ser� aberta uma janela no navegador com o t�tulo _Enter username for Acesso a p�gina do Foca Linux at servidor.org_, a diretiva _Require valid-user_ definem que o usu�rio e senha digitados devem existir no arquivo especificado por _AuthUserFile_ para que o acesso seja garantido. Uma explica��o de cada op��o de acesso usado na autentica��o: AuthName Ser� o nome que aparecer� na janela de autentica��o do seu navegador indicando qual �rea restrita est� solicitando senha (podem existir v�rias no servidor, bastando especificar v�rias diretivas de restri��es). AuthType Especifica o m�todo de que o nome e senha ser�o passados ao servidor. Este m�todo de autentica��o pode ser _Basic_ ou _Digest_ * `Basic' - Utiliza a codifica��o _base64_ para encodifica��o de nome e senha, enviando o resultado ao servidor. Este � um m�todo muito usado e pouco seguro, pois qualquer sniffer instalado em um roteador pode capturar e descobrir facilmente seu nome e senha. * `Digest' - Transmite os dados de uma maneira que n�o pode ser facilmente decodificada, incluindo a codifica��o da �rea protegida (especificada pela diretiva _AuthName_) que possui a seq�encia de login/senha v�lida. A diferen�a deste m�todo � que voc� precisar� de arquivos de senhas diferentes para cada �rea protegida especificada por _AuthName_ (tamb�m chamada de Realm). AuthUserFile � o arquivo gerado pelo utilit�rio `htpasswd' que cont�m a senha correspondente ao usu�rio AuthGroupFile � um arquivo texto que cont�m o nome do grupo, dois pontos (":") e o nome dos usu�rios que podem ter acesso ao recurso, separados por v�rgulas. No exemplo acima ele se encontra comentado, mas a seguir encontrar� exemplos que explicam em detalhes o funcionamento desta diretiva. Require Especifica que usu�rios podem ter acesso ao diret�rio. Podem ser usadas uma das 3 sintaxes: * `Require user usu�rio1 usu�rio2 usu�rio3' - Somente os usu�rios especificados s�o considerados v�lidos para ter acesso ao diret�rio. * `Require group grupo1 grupo2 grupo3' - Somente os usu�rios dos grupos especificados s�o considerados v�lidos para terem acesso ao diret�rio. Esta diretiva � �til quando deseja que somente alguns usu�rios de determinado grupo tenham acesso ao recurso (por exemplo, usu�rios do grupo admins). * `Require valid-user' - Qualquer usu�rio v�lido no banco de dados de senhas pode acessar o diret�rio. � bem �til quando

as op��es de acesso especificadas por Require user s�o muito longas. A op��o Require deve ser acompanhado das diretivas _AuthName_, _AuthType_ e as diretivas _AuthUserFile_ e _AuthGroupFile_ para funcionar adequadamente. _OBS_: � necess�rio reiniciar o `Apache' depois de qualquer modifica��o em seu arquivo de configura��o (`apachectl restart'), ou recarregar os arquivos de configura��o (`apachectl graceful'). Note que o `apachectl' � somente um shell script para intera��o mais amig�vel com o servidor web `apache', retornando mensagens indicando o sucesso/falha no comando ao inv�s de c�digos de sa�da. Alguns exemplos para melhor assimila��o: AuthName "Acesso a p�gina do Foca Linux" AuthType basic AuthUserFile /home/gleydson/SenhaUsuario Require user gleydson As explica��es s�o id�nticas a anterior, mas somente permite o acesso do usu�rio `gleydson' a URL `http://servidor.org/teste', bloqueando o acesso de outros usu�rios contidos no arquivo _AuthUserFile_. AuthName "Acesso a p�gina do Foca Linux" AuthType basic AuthUserFile /home/gleydson/SenhaUsuario Require user gleydson usuario1 usuario2 AuthName "Acesso a p�gina do Foca Linux" AuthType basic AuthUserFile /home/gleydson/SenhaUsuario Require user gleydson Require user usuario1 Require user usuario2 As 2 especifica��es acima s�o equivalentes e permite o acesso aos usu�rios `gleydson', `usuario1' e `usuario2' a p�gina `http://servidor.org/teste'. 11.7.2.3. Autentica��o usando grupos -----------------------------------H� casos acesso a n�o pode usu�rios usu�rios usu�rios

onde existem usu�rios de um arquivo de senhas que devem ter um diret�rio e outros n�o, neste caso a diretiva _valid-user_ ser especificada (porque permitiria o acesso de todos os do arquivo de senha ao diret�rio) e uma grande lista de ficaria bastante complicada de ser gerenciada com v�rios na diretiva _Require user_.

Quando existe esta situa��o, � recomendado o uso de grupos de usu�rios. Para fazer uso desse recurso, primeiro dever� ser criado um

arquivo quer armazenar� o nome do _grupo_ e dos usu�rios pertencente �quele grupo usando a seguinte sintaxe (vamos chamar este arquivo de `SenhaGrupo'): admins: gleydson usuario2 usuarios: usuario1 usuario2 usuario3 gleydson Agora adaptamos o exemplo anterior para que somente os usu�rios especificados no grupo admins do arquivo criado acima: AuthName "Acesso a p�gina do Foca Linux" AuthType basic AuthUserFile /home/gleydson/SenhaUsuario AuthGroupFile /home/gleydson/SenhaGrupo Require group admins Agora somente os usu�rios pertencentes ao grupo _admins_ (_gleydson_ e _usuario2_) poder�o ter acesso ao diret�rio `/teste'. _OBS1_: Verifique se o servidor Web possui acesso a leitura no arquivo de senhas de usu�rios e grupos, caso contr�rio ser� retornado um c�digo "500 - Internal Server Error". Este tipo de erro � caracterizado por tudo estar OK na sintaxe dos arquivos de configura��o ap�s checagem com "apache -t" e todas as diretivas de controle de acesso apontam para os diret�rios e arquivos corretos. _OBS2:_: Sempre use espa�os para separar os nomes de usu�rios pertencentes a um grupo. _OBS3_: NUNCA coloque os arquivos que cont�m senhas e grupos em diret�rios de acesso p�blico onde usu�rios podem ter acesso via o servidor Web. Tais localiza��es s�o `/var/www', `/home/"usuario"/public_html' e qualquer outro diret�rio de acesso p�blico que defina em seu sistema. � recomend�vel tamb�m ocultar estes arquivos atrav�s da diretiva evitando poss�veis riscos de seguran�a com usu�rios acessando os arquivos de senha e grupo. Na distribui��o `Debian', qualquer arquivo iniciando com `.ht*' ser� automaticamente ocultado pelo sistema, pois j� existe uma diretiva . Tal diretiva pode tamb�m ser especificada no arquivo de acesso `.htaccess'. Assim um arquivo `.htsenha' e `.htgroup' s�o bons nomes se estiver desejando ocultar dados de olhos curiosos... 11.7.3. Usando autoriza��o e autentica��o juntos -----------------------------------------------Os m�todos de _autoriza��o_ e _autentica��o_ podem ser usados ao mesmo tempo dentro de qualquer uma das diretivas de controle de acesso. As diretivas de _autoriza��o_ s�o processadas primeiro (mod_access) e depois as diretivas de _autentica��o_ (mod_auth). Segue um exemplo: Options Indexes

Order deny,allow allow from .dominiolocal.com.br deny from all AuthName "Acesso ao diret�rio do servidor Web" AuthType basic AuthUserFile /var/cache/apache/senhas Require valid-user
Para ter acesso ao diret�rio `/var/www', primeiro o computador deve fazer parte do dom�nio `.dominiolocal.com.br', assim ela passa pelo teste de autoriza��o, depois disso ser� necess�rio fornecer o login e senha para acesso a p�gina, digitando o login e senha corretos, o teste de autentica��o ser� completado com sucesso e o acesso ao diret�rio `/var/www' autorizado. Options Indexes Order mutual-failure allow from .dominiolocal.com.br deny from lammer.dominiolocal.com.br AuthName "Acesso ao diret�rio do servidor Web" AuthType basic AuthUserFile /var/cache/apache/senhas AuthGroupFile /var/cache/apache/grupos Require group admins No exemplo acima, � usado o m�todo de autoriza��o com a op��o _Order mutual-failure_ e o m�todo de autentica��o atrav�s de _grupos_. Primeiro � verificado se o usu�rio pertence ao dom�nio `.dominiolocal.com.br' e se ele n�o est� acessando da m�quina `lammer.dominiolocal.com.br', neste caso ele passa pelo teste de autoriza��o. Depois disso ele precisar� fornecer o nome e senha v�lidos, com o login pertencente ao _AuthGroupFile_, passando pelo processo de autentica��o e obtendo acesso ao diret�rio `/var/www'. 11.7.3.1. Acesso diferenciado em uma mesma diretiva --------------------------------------------------� interessante permitir usu�rios fazendo conex�es de locais confi�veis terem acesso direto sem precisar fornecer nome e senha e de locais inseguros acessarem somente ap�s comprovarem _quem_ realmente s�o. Como � o caso de permitir usu�rios de uma rede privada terem acesso completo aos recursos e permitir o acesso externo ao mesmo recurso somente atrav�s de senha. Isto pode ser feito com o uso da diretiva _Satisfy_ junto ao bloco de _autoriza��o/autentica��o_. Vamos tomar como base o exemplo anterior: Options Indexes Order mutual-failure allow from .dominiolocal.com.br deny from lammer.dominiolocal.com.br AuthName "Acesso ao diret�rio do servidor Web" AuthType basic AuthUserFile /var/cache/apache/senhas AuthGroupFile /var/cache/apache/grupos

Require group admins Satisfy any
Note que o exemplo � o mesmo com a adi��o da diretiva _Satisfy any_ no final do bloco do arquivo. Quando a op��o _Satisfy_ n�o � especificada, ela assumir� "all" como padr�o, ou seja, o usu�rio dever� passar no teste de autoriza��o e autentica��o para ter acesso. A diferen�a do exemplo acima em rela��o ao da se��o anterior � se a m�quina passar no teste de autoriza��o ela j� ter� acesso garantido. Caso falhe no teste de autoriza��o, ainda ter� a chance de ter acesso a p�gina passando na checagem de autentica��o. Isto garante acesso livre aos usu�rios do dom�nio `.dominiolocal.com.br'. J� os outros usu�rios, incluindo acessos vindos de `lammer.dominiolocal.com.br' que pode ser uma m�quina com muito uso, poder� ter acesso ao recurso caso tenha fornecido um nome e senha v�lidos para passar pelo processo de autentica��o. Tenha isto em mente... este tipo de problema � comum e depende mais de uma pol�tica de seguran�a e conduta interna, o sistema de seguran�a n�o pode fazer nada a n�o ser permitir acesso a um nome e senha v�lidos. Tenha cuidado com o uso da op��o _Satisfy_ em diretivas que especificam somente o m�todo de autentica��o: Options Indexes AuthName "Acesso ao diret�rio do servidor Web" AuthType basic AuthUserFile /var/cache/apache/senhas AuthGroupFile /var/cache/apache/grupos Require group admins Satisfy any ATEN��O PARA O DESCUIDO ACIMA!: Como o m�todo de autoriza��o N�O � especificado, � assumido _deny,allow_ como padr�o, que permite o acesso a TODOS os usu�rios. O bloco acima _NUNCA_ executar� o m�todo de autentica��o por este motivo. A melhor coisa � N�O usar a op��o _Satisfy_ em casos que s� requerem autentica��o ou usar _Satisfy all_ (que ter� o mesmo efeito de n�o usa-la, hehehe). A falta de aten��o nisto pode comprometer silenciosamente a seguran�a de seu sistema. 11.7.4. O arquivo `.htaccess' ----------------------------O arquivo `.htaccess' deve ser colocado no diret�rio da p�gina que dever� ter suas permiss�es de acesso/listagem controladas. A vantagem em rela��o a inclus�o direta de diretivas de acesso dentro do arquivo de configura��o do `Apache', � que o controle de acesso poder� ser definido pelo pr�prio webmaster da p�gina, sem precisar ter acesso direto a configura��o do `Apache', que requerem privil�gios de root. Outro ponto fundamental � que n�o h� necessidade de reiniciar o servidor Web, pois este arquivo � lido no momento de cada acesso ao

diret�rio que controla. O nome do arquivo OverRide pode ser definido atrav�s da diretiva _AccessFileName_ no arquivo de configura��o do `Apache', `.htaccess' � usado como padr�o. O controle de que op��es estar�o dispon�veis no `.htaccess' s�o definidas na diretiva _AllowOverride_ que pode conter o seguintes par�metros: * `None' - O servidor n�o buscar� o arquivo `.htaccess' nos diret�rios * `All' - O servidor utilizar� todas as op��es abaixo no arquivo `.htaccess' * `AuthConfig' - Permite o uso de diretivas de autentica��o (_AuthDBMGroupFile_, _AuthDBMUserFile_, _AuthGroupFile_, _AuthName_, _AuthType_, _AuthUserFile_, _Require_, etc.). * `FileInfo' - Permite o uso de diretivas controlando o tipo de documento (_AddEncoding_, _AddLanguage_, _AddType_, _DefaultType_, _ErrorDocument_, _LanguagePriority_, etc.). * `Indexes' - Permite o uso de diretivas controlando a indexa��o de diret�rio (_AddDescription_, _AddIcon_, _AddIconByEncoding_, _AddIconByType_, _DefaultIcon_, _DirectoryIndex_, _FancyIndexing_, _HeaderName_, _IndexIgnore_, _IndexOptions_, _ReadmeName_, etc.). * `Limit' - Permite o uso de diretivas controlando o acesso ao computador (_allow_, _deny_ e _order_). * `Options' - Permite o uso de diretivas controlando caracter�sticas espec�ficas do diret�rio (_Options_ e _XBitHack_). _OBS_: N�o tem sentido usar a op��o _AllowOverride_ dentro da diretiva , ela ser� simplesmente ignorada. Para acesso ao arquivo `.htaccess' do diret�rio `/var/www/focalinux', o `Apache' buscar� os arquivos `.htaccess' na seq�encia: `/.htaccess', `/var/.htaccess', `/var/www/.htaccess', `/var/www/focalinux/.htaccess', qualquer diretiva que n�o exista no `.htaccess' do diret�rio `/var/www/focalinux' ter� seu valor definido pela diretiva dos arquivos `.htaccess' dos diret�rios anteriores. Somente ap�s esta seq�encia de checagens o acesso ao documento � permitido (ou negado). Por este motivo, muitos administradores decidem desativar completamente o uso de arquivos `.htaccess' no diret�rio ra�z e habilitar somente nos diret�rios especificados pela diretiva no arquivo de configura��o do `Apache', evitando brechas de seguran�a na manipula��o destes arquivos (esta � uma boa id�ia a n�o ser que se dedique 24 horas somente na administra��o do seu servidor Web e conhe�a toda sua estrutura hier�rquica de seguran�a: AllowOverride none AllowOverride limit authconfig indexes Na especifica��o acima, o arquivo `.htaccess' ser� procurado no diret�rio `/var/www' e seus sub-diret�rios, usando somente op��es que

controlam a autoriza��o de acesso (_limit_), autentica��o e op��es (_authconfig_) e de indexa��o de documentos (_indexes_). Alguns exemplos do uso do arquivo `.htaccess': Para permitir o acesso direto de usu�rios da rede `192.168.1.*' diretamente, e requerer senha de acesso para outros usu�rios, o seguinte arquivo `.htaccess' deve ser criado no diret�rio `/var/www': Order deny,allow allow from 192.168.1.0/24 deny from all AuthName "Acesso a p�gina Web principal da Empresa" AuthType basic AuthUserFile /var/cache/apache/senhas Require valid-user Satisfy any Note que a sintaxe � exatamente a mesma das usadas na diretivas de acesso, por este motivo vou dispensar explica��es detalhadas a respeito. _ATEN��O_: A diretiva _Options Indexes_ dever� ser especificada no _AllowOverRide_ e n�o no arquivo `.htaccess'. Agora voc� j� sabe o que fazer se estiver recebendo erros 500 ao tentar acessar a p�gina (Erro interno no servidor)... 11.7.5. Usando a diretiva SetEnvIf com Allow e Deny --------------------------------------------------� poss�vel especificar o acesso baseado em vari�veis de ambiente usando a diretiva _SetEnvIf_, isto lhe permite controlar o acesso de acordo com o conte�do de cabe�alhos HTTP. A sintaxe � a seguinte: `SetEnvIf [_atributo_] [_express�o_] [_vari�vel_]' Isto poder ser facilmente interpretado como: Se o "atributo" especificado conter a "express�o", a "vari�vel" ser� criada e armazenar� o valor verdadeiro. Veja abaixo: SetEnvIf User-Agent ".*MSIE*." EXPLODER Order deny,allow allow from all deny from env=EXPLODER Se o Navegador (campo _User-Agent_ do cabe�alho http) usado para acessar a p�gina for o `Internet Explorer', a vari�vel <EXPLODER> ser� criada e ter� o valor verdadeiro (porque a express�o de _SetEnvIf_ conferiu com a express�o). Note o uso de "deny from env=VARI�VEL". Neste caso se o navegador for o `Internet Explorer', o acesso ser� bloqueado (pois o navegador conferiu, assim a vari�vel <EXPLODER> recebeu o valor verdadeiro). � permitido especificar as diretivas de acesso normais junto com especifica��o de vari�veis de ambiente, basta separa-los com espa�os.

Uma descri��o completa dos cabe�alhos HTTP, conte�do e par�metros aceitos por cada um s�o descritos na `RFC 2068'. 11.7.6. A diretiva -------------------------Esta diretiva � semelhante a mas trabalha com m�todos HTTP (como GET, PUT, POST, etc) ao inv�s de diret�rios. A diretiva pode ser usada dentro da diretiva de acesso , , mas nenhuma diretiva de controle de acesso pode ser colocada dentro de . Os m�todos HTTP v�lidos s�o: GET, POST, PUT DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK e UNLOCK. Note que os m�todos s�o case-sensitive. Por exemplo: Option Indexes Order deny,allow allow from 192.168.1.0/24 deny from all Somente permitem o uso dos m�todos POST, PUT, DELETE de m�quinas da rede interna. _OBS1_: Se o m�todo GET � bloqueado, o cabe�alho HTTP tamb�m ser� bloqueado. _OBS2_: A diretiva de acesso somente ter� efeito na diretiva se for especificada no arquivo de configura��o do servidor web. A diretiva simplesmente � ignorada nos arquivos `.htaccess'... Este abaixo � usado por padr�o na distribui��o `Debian' para restringir para somente leitura o acesso aos diret�rios de usu�rios acessados via m�dulo `mod_userdir': AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Order allow,deny Allow from all Order deny,allow Deny from all 11.7.7. Diretiva -----------------------------Esta diretiva � semelhante a , mas atinge todos os m�todos HTTP, menos os especificados.

11.8. Definindo documentos de erro personalizados ------------------------------------------------Documentos de erros personalizados s�o definidos atrav�s da diretiva _ErrorDocument_. � poss�vel especificar c�digos de erros que ser�o atendidos por certos documentos ou colocar esta diretiva dentro de blocos de controle de acesso , ou para que tenham mensagens de erro personalizadas, ao inv�s da padr�o usada pelo servidor `httpd'. `ErrorDocument [_c�digo de erro_] [_documento_]' Onde: _c�digo de erro_ C�digo de erro da mensagem (veja Se��o 11.15, `C�digos HTTP' como refer�ncia). O c�digo de erro _401_ deve referir-se a um arquivo local. _documento_ Documento, mensagem de erro ou redirecionamento que ser� usado no servidor caso aquele c�digo de erro seja encontrado: Para definir uma mensagem de erro padr�o para todo servidor web, basta colocar a diretiva _ErrorDocument_ fora das diretivas que controlam o acesso a diret�rios e virtual hosts (o inicio do arquivo `httpd.conf' � ideal). Exemplos: * `ErrorDocument 404 /cgi-bin/erros404.pl' - Direciona para um script em Perl que manda um e-mail ao administrador falando sobre o link quebrado e envia o usu�rio a uma p�gina de erro padr�o. * `ErrorDocument 404 /naoencontrada.html' - Direciona o usu�rio para o arquivo `naoencontrada.html' (dentro de _DocumentRoot_) quando ocorrer o erro 404. Note que o diret�rio `/' levado em considera��o � o especificado pela diretiva _DocumentRoot_. * `ErrorDocument 500 "Erro Interno no servidor"' - Mostra a mensagem na tela quando ocorrer o erro 500. * `ErrorDocument 401 /obtendoacesso.html' - Direciona o usu�rio ao arquivo explicando como obter acesso ao sistema. * `ErrorDocument 503 http://www.focalinux.org/servicos.html' Redireciona o usu�rio a URL especificada. * `ErrorDocument 403 "Acesso negado"' - Mostra a mensagem na tela no caso de erros 403. 11.9. M�dulos DSO ----------------Os m�dulos _DSO_ permitem adicionar/remover caracter�sticas do `Apache' sem necessidade de recompilar todo o servidor web, assim interrompendo o servi�o para a atualiza��o dos arquivos. M�dulos de programas terceiros tamb�m podem ser compilados e adicionado sem problemas atrav�s deste recurso. Os m�dulos s�o carregados atrav�s da diretiva _LoadModule_ no arquivo de configura��o. O formato � o seguinte: `LoadModule [_nome_do_modulo_] [_caminho_do_arquivo_so_]'

_nome_do_modulo_ Especifica o nome do m�dulo, n�o deve conter espa�os. _caminho_do_arquivo_so_ Define a localiza��o do arquivo que cont�m o m�dulo especificado. Por padr�o os m�dulos est�o localizados em `/usr/lib/apache/[vers�o]' A posi��o em que os m�dulos aparecem podem ter influ�ncia em seu funcionamento, alguns requerem que sejam especificados antes de outros m�dulos para funcionarem corretamente (como o m�dulo _php3_module_, que deve ser carregado antes de qualquer m�dulo de controle de CGI's). Leia a documenta��o espec�fica sobe o m�dulo em caso de d�vidas, os m�dulos que acompanham o `Apache' s�o documentados em detalhes no manual do `Apache'. Para usar uma caracter�stica/diretiva/op��o do `Apache' que dependa de um certo m�dulo, obviamente voc� dever� carregar o m�dulo correspondente (em caso de d�vidas, leia a documenta��o sobre o m�dulo). Veja a Se��o 11.14.1, `httpd.conf' para exemplos do uso da diretiva _LoadModule_. Por exemplo, se voc� quiser utilizar as diretivas de autoriza��o (_allow, deny, order_) dever� ter o m�dulo _mod_access_ carregado, para usar as diretivas de autoriza��o (_authname, authuserfile, authtype, etc_) dever� ter o m�dulo _mod_auth_ carregado. Mais detalhes podem ser encontrados em Se��o 11.7.1, `Autoriza��o'. _OBS_: O suporte a _DSO_ atualmente s� est� dispon�vel para plataforma `UNIX' e seus derivados, como o `Linux'. Tamb�m � poss�vel ativar certas diretivas verificando se o m�dulo correspondente estiver ou n�o carregado atrav�s da diretiva _IfModule_: UserDir disabled root UserDir public_html Nas linhas acima, as diretivas _UserDir_ somente ser�o executadas se o m�dulo _mod_userdir.c_ estiver carregado atrav�s da diretiva _LoadModule_. Segue abaixo uma lista de m�dulos padr�es que acompanham do `Apache', os m�dulos marcados com "*" s�o ativados por padr�o: Cria��o de Ambiente * `* mod_env' - Ajusta vari�veis de ambiente para scripts CGI/SSI * `* mod_setenvif' - Ajusta vari�veis de ambiente de acordo com cabe�alhos http * `mod_unique_id' - Gera identificadores �nicos para requisi��es Decis�o de tipo de conte�do de arquivos * `* mod_mime' - Determina��o de tipo/encodifica��o do conte�do (configurado) * `mod_mime_magic' - Determina��o de tipo/encodifica��o do conte�do (autom�tico) * `* mod_negotiation' - Sele��o de conte�do baseado nos cabe�alhos "HTTP Accept*"

Mapeamento de URL * `* mod_alias' - Tradu��o e redirecionamento de URL simples * `mod_rewrite' - Tradu��o e redirecionamento de URL avan�ado * `* mod_userdir' - Sele��o de diret�rios de recursos por nome de usu�rio * `mod_speling' - Corre��o de URLs digitadas incorretamente * `mod_vhost_alias' - Suporte para virtual hosts din�micamente configurados em massa. Manipula��o de Diret�rios * `* mod_dir' - Manipula��o de Diret�rio e arquivo padr�o de diret�rio * `* mod_autoindex' - Gera��o de �ndice autom�tico de diret�rio Controle de Acesso * `* mod_access' - Controle de acesso por autoriza��o (usu�rio, endere�o, rede) * `* mod_auth' - Autentica��o HTTP b�sica (usu�rio, senha) * `mod_auth_dbm' - Autentica��o HTTP b�sica (atrav�s de arquivos NDBM do Unix) * `mod_auth_db' - Autentica��o HTTP b�sica (atrav�s de arquivos Berkeley-DB) * `mod_auth_anon' - Autentica��o HTTP b�sica para usu�rios no estilo an�nimo * `mod_auth_digest' - Autentica��o MD5 * `mod_digest' - Autentica��o HTTP Digest Respostas HTTP * `mod_headers' - Cabe�alhos de respostas HTTP (configurado) * `mod_cern_meta' - Cabe�alhos de respostas HTTP (arquivos no estilo CERN) * `mod_expires' - Respostas de expira��o HTTP * `* mod_asis' - Respostas HTTP em formato simples (raw) Scripts * `* mod_include' - Suporte a Includes no lado do servidor (SSI - Server Sides Includes) * `* mod_cgi' - Suporte a CGI (Common Gateway Interface) * `* mod_actions' - Mapeia scripts CGI para funcionarem como 'handlers' internos. Manipuladores de conte�do Interno * `* mod_status' - Visualiza status do servidor em tempo de execu��o. * `mod_info' - Visualiza sum�rio de configura��o do servidor. Registros de Requisi��es * `* mod_log_config' - Registro de requisi��es personaliz�veis * `mod_log_agent' - Registro especializado do User-Agent HTTP (depreciado) * `mod_log_refer' - Registro especializado do Referrer HTTP (depreciado) * `mod_usertrack' - Registro de cliques de usu�rios atrav�s de Cookies HTTP Outros * `* mod_imap' - Suporte a Mapeamento de Imagem no lado do servidor. * `mod_proxy' - M�dulo de Cache do Proxy (HTTP, HTTPS, FTP). * `mod_so' - Inicializa��o do Dynamic Shared Object (DSO) Experimental * `mod_mmap_static' - Cache de p�ginas freq�entemente servidas via mmap() Desenvolvimento

* `mod_example' - Demonstra��o da API do Apache (somente desenvolvedores) 11.10. Sistema de Log do Apache ------------------------------O `Apache' � bem flex�vel na especifica��o do que ser� registrado em seus arquivos de log, possibilitando utilizar um arquivo de log �nico, diversos arquivos de logs registrando cada evento ocorrido no sistema (conex�o, navegador, bloqueio de acesso, erros, etc) incluindo os campos que deseja em cada arquivo e a ordem dos campos em cada um deles. Enfim qualquer coisa pode ser especificada de forma que atenda as suas necessidades particulares de logging. 11.10.1. AgentLog ----------------`AgentLog arquivo/pipe': Indica o nome do arquivo que registrar� o nome do navegador que est� acessando a p�gina (conte�do do cabe�alho `User-Agent'). � poss�vel usar o pipe "|" para direcionar os erros para um programa de formata��o ou processamento. _ATEN��O_: Se um programa for usado como pipe, ele ser� executado sob o usu�rio que iniciou o `apache'. Revise o c�digo fonte do programa para ter certeza que n�o cont�m falhas que possam comprometer a seguran�a de seu sistema. Exemplo: `AgentLog /var/log/apache/agent.log' 11.10.2. ErrorLog ----------------`ErrorLog arquivo/pipe' - Especifica o arquivo que registrar� as mensagens de erro do servidor `Apache'. � poss�vel usar o pipe "|" para direcionar os erros para um programa de formata��o ou processamento. Exemplo: `ErrorLog /var/log/apache/errors.log' 11.10.3. CustomLog -----------------Permite especificar onde os logs ser�o gravados para os arquivos de logs personalizados. Esta diretiva tamb�m aceita apelidos definidos pela diretiva _LogFormat_. `CustomLog [arquivo/pipe] [formato/nome]' Onde: _arquivo/pipe_ Arquivo de log personalizado ou pipe. _formato/nome_ Especifica o formato do arquivo de log (da mesma forma que o especificado na op��o _LogFormat_). Dever� ser especificado entre "aspas" caso tiver espa�os. Veja Se��o 11.10.11, `LogFormat' para detalhes.

Ao inv�s de especificar o formato, tamb�m � poss�vel usar um apelido definido pela op��o _LogFormat_ (Se��o 11.10.11, `LogFormat'), neste caso os par�metros definidos pelo _LogFormat_ para "nome" ser�o atribu�dos a diretiva _CustomLog_. Exemplos: * `CustomLog /var/log/apache/common.log "%h %l %u %t \"%r\" %>s %b"' * `CustomLog /var/log/apache/common.log common' 11.10.4. RefererLog ------------------`RefererLog [arquivo/pipe]': Indica que arquivo/pipe registrar� os campos Referer do cabe�alho HTTP. Esta diretiva � mantida por compatibilidade com o servidor web NCSA 1.4. A configura��o padr�o do `Apache' usa uma diretiva alternativa para a especifica��o do _referer_ que � a seguinte: LogFormat "%{Referer}i -> %U" referer CustomLog /var/log/apache/referer.log referer Exemplo: `RefererLog /var/log/apache/referer.log' 11.10.5. RewriteLog ------------------`RewriteLog: [arquivo/pipe]': Indica o arquivo/pipe que registrar� qualquer regrava��o de URL feita pelo `Apache'. _OBS_: N�o � recomend�vel direcionar o nome de arquivo para `/dev/null' como forma de desativar este log, porque o m�dulo de regrava��o n�o cria a sa�da para um arquivo de log, ele cria a sa�da de log internamente. Isto somente deixar� o servidor lento. Para desativar este registro, simplesmente remova/comente a diretiva RewriteLog ou use a op��o RewriteLogLevel 0. Exemplo: `RewriteLog "/usr/local/var/apache/logs/rewrite.log' 11.10.6. RewriteLogLevel -----------------------`RewriteLogLevel [num]': Especifica os detalhes que ser�o inclu�dos no registro da op��o RewriteLog, os valores permitidos est�o entre 0 e 9. Se for usado 0, o registro do RewriteLog � totalmente desativado (esta � a padr�o). _OBS_: Qualquer valor acima de 2 deixa o servidor Web cada vez mais lento devido ao processamento e a quantidade de detalhes registrados no arquivo especificado por _RewriteLog_. 11.10.7. ScriptLog -----------------`ScriptLog [arquivo]': Especifica o nome do arquivo de log que receber� as mensagens de erros gerados por scripts CGI executados no servidor. Esta op��o � controlada pelo m�dulos _mod_cgi_. Os arquivos de log ser�o abertos por um sub-processo rodando com as

permiss�es do usu�rio especificado na diretiva "user". _OBS_: Esta op��o somente � recomendada como depuradora de scripts CGI, n�o para uso cont�nuo em servidores ativos. Exemplo: `ScriptLog /var/log/apache/cgiscripts.log' 11.10.8. ScriptLogBuffer -----------------------`ScriptLogBuffer': Especifica o tamanho do cabe�alho PUT ou POST gravado no arquivo especificado por _ScriptLog_. O valor padr�o � 1024 bytes. Esta op��o � controlada pelo m�dulos _mod_cgi_ Exemplo: `ScriptLogBuffer 512' 11.10.9. ScriptLogLength -----------------------`ScriptLogLength: [tamanho]': Especifica o tamanho m�ximo do arquivo de log gerado pela op��o ScriptLog. O valor padr�o � 10385760 bytes (10.3MB). Esta op��o � controlada pelo m�dulos _mod_cgi_ Exemplo: `ScriptLogLength 1024480' 11.10.10. TransferLog --------------------`TransferLog [arquivo/pipe]': Indica o arquivo que armazenar� as transfer�ncias entre o servidor http e o cliente. Ela cria o arquivo de log com o formato definido pela op��o _LogFormat_ mais recente ou o formato padr�o do arquivo de log do `Apache'. Se omitido, o arquivo n�o ser� gerado Exemplo: `TransferLog /var/log/apache/transfer�ncias.log' 11.10.11. LogFormat ------------------`LogFormat': Define os campos padr�es do arquivo gerado pela op��o _TransferLog_. O seu formato � o seguinte: `LogFormat [formato] [nome]' Quando o formato n�o � especificado, assume o valor padr�o `%h %l %u %t \"%r\" %s %b'. A especifica��o do [_nome_] permite que voc� utilize o formato especificado em uma op��o _CustomLog_ ou outra diretiva _LogFormat_, facilitando a especifica��o do formato do log. Os seguintes formatos s�o v�lidos: * `%b' - Bytes enviados, excluindo cabe�alhos HTTP. * `%f' - Nome do arquivo. * `%{FOOBAR}e' - O conte�do da vari�vel de ambiente FOOBAR. * `%h' - M�quina cliente. * `%a' - Endere�o IP da m�quina cliente. * `%A' - Endere�o IP local. Muito �til em virtual hostings. * `%{Foobar}i' - O conte�do de Foobar: linhas de cabe�alho na

requisi��o enviada ao servidor. * `%l' - O nome de login remoto enviado pelo identd (se fornecido). * `%{Foobar}n' - O conte�do de "FooBar" de outro m�dulo. * `%{Foobar}o:' - O conte�do de Foobar: linhas de cabe�alho na resposta. * `%p' - A porta do servidor servindo a requisi��o. * `%P' - A identifica��o do processo filho que serviu a requisi��o. * `%r' - A primeira linha da requisi��o. * `%s' - Status. Para requisi��es que foram redirecionadas. internamente. Este � o status de uma requisi��o *original*. Use %s para a �ltima. * `%t' - Hora, no formato do arquivo de log (formato ingl�s padr�o). * `%{format}t' - Hora, no formato definido por strftime. * `%T' - O tempo necess�rio para servir a requisi��o, em segundos. * `%u' - Usu�rio remoto (atrav�s do auth, pode ser falso se o status de retorno (%s) for 401). * `%U' - O caminho da URL requisitada. * `%v' - O nome can�nico definido por _ServerName_ que serviu a requisi��o. * `%V' - O nome do servidor de acordo com a configura��o de _UseCanonicalName_. Exemplos: LogFormat full LogFormat debug LogFormat LogFormat LogFormat LogFormat

"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T" "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined "%h %l %u %t \"%r\" %>s %b" common "%{Referer}i -> %U" referer "%{User-agent}i" agent

11.10.12. LogLevel -----------------Define o n�vel de alerta das mensagens que ser�o gravadas no arquivo especificado pela diretiva _ErrorLog_. Quando n�o � especificado, assume o n�vel "error" como padr�o. Abaixo os par�metros aceitos em sua respectiva ordem de import�ncia: * `emerg' - O sistema est� inutiliz�vel. * `alert' - A a��o deve ser tomada imediatamente. * `crit' - Condi��es cr�ticas. * `error' - Condi��es de erro. * `warn' - Condi��es de alerta. * `notice' - Condi��o normal mas significante. * `info' - Mensagens informativas. * `debug' - Mensagens do n�vel de depura��o. Note que os n�veis s�o os mesmos usados pelo `syslog'. Quando um n�vel particular � especificado, as mensagens de todos os n�veis de maior import�ncia tamb�m ser�o registrados. Por exemplo, se o n�vel "info" for especificado, as mensagens com os n�veis de "notice" e "warn" tamb�m ser�o registradas. � recomendado o uso de um n�vel de no m�nimo _crit_. 11.10.13. Anonymous_LogEmail

---------------------------Se estiver como "on" a senha digitada ser� registrada no arquivo especificado por _ErrorLog_. Esta diretiva � _ativada_ por padr�o. Exemplo: `Anonymous_LogEmail off' 11.10.14. CookieLog ------------------Especifica o arquivo que ser� usado para registrar os cookies _OBS1_: Caso o caminho do arquivo n�o for especificado nas diretivas, ser� assumido _DocumentRoot_ como diret�rio padr�o. _OBS2_: Caso esteja usando o pipe, o dono do processo ser� o mesmo que iniciou o servidor WEB Apache. Tenha certeza do funcionamento do programa para n�o comprometer o seu sistema, e cuide para que ele n�o possa ser modificado indevidamente por outros usu�rios. Exemplo: `CookieLog /var/log/apache/cookies.log' 11.10.15. Relat�rio gr�fico de acesso ao sistema -----------------------------------------------O programa `webalizer' poder� ser instalado para gerar um relat�rio gr�fico com a estat�sticas de visitas por ano/mes/dia/hora usando os dados do `access.log'. Outra interessante caracter�stica s�o as estat�sticas de c�digos http (veja Se��o 11.15, `C�digos HTTP'), onde � poss�vel saber a quantidade de links quebrados existentes em nosso servidor (estes poder�o ser detectados usando o pacote de an�lise de sites `linbot'). O `webalizer' tamb�m � compat�vel com os formatos de log do `squid' e `proftpd'. Na distribui��o `Debian' ele pode ser instalado a partir do pacote `webalizer' e gera um relat�rio geral quando � executado sem op��es. 11.11. Configurando o Apache como servidor proxy -----------------------------------------------O `Apache' pode ser configurado para funcionar como servidor proxy transparente para sua rede interna, possibilitando inclusive o uso de cache de disco. � poss�vel se fazer conex�es HTTP (incluindo SSL) e FTP. Atrav�s desta caracter�stica tamb�m � poss�vel usar uma das caracter�sticas mais interessante desse servidor web: o redirecionamento de conex�es para uma determinada URL para uma outra m�quina, que pode ser um outro host remoto ou uma m�quina da rede interna (n�o acess�vel diretamente via Internet). O primeiro passo � ativar o m�dulo de proxy no arquivo `httpd.conf', basta descomentar a linha: # LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so O seguinte bloco pode ser colocado no final do arquivo `httpd.conf' para configurar um servidor proxy para realizar conex�es diretas (sem o uso de cache) e permitir o uso de servidores proxy em sua rede:

# Suporte a Proxy # ProxyRequests off ProxyRemote * http://debian:3128 ProxyBlock microsoft.com microsoft.com.br NoProxy 192.168.1.0/24 ProxyDomain .gms.com.br # Ativa/Desativa a manipula��o de cabe�alhos HTTP/1.1 "Via:". # # ("Full" adiciona a vers�o do servidor Apache; "Block" remove todos os cabe�alhos # de sa�da "Via:") # Escolha uma das op��es: Off | On | Full | Block # #ProxyVia On # Segue a explica��o de cada uma das diretivas acima: ProxyRequests [_on/off_] Ativa (on) ou Desativa (off) o servi�o de proxy do servidor Apache. Note que o m�dulo `libproxy.so' deve estar carregado para que o bloco seja processado. A desativa��o desta diretiva n�o afeta a diretiva _ProxyPass_. ProxyRemote [_origem_] [_URL_] Esta op��o � �til para fazer o Apache redirecionar suas requisi��es para outro servidor proxy (como o `squid' ou o gateway da rede, caso o Apache estiver sendo executado em uma m�quina interna). A _origem_ pode ser uma URL completa (como http://www.debian.org), uma URL parcial (como ftp, http) ou "*" para que o redirecionamento seja sempre usado. ProxyBlock [_padr�o_] Permite bloquear o acesso a endere�os que contenham o _padr�o_ especificado. Podem ser especificadas palavras, m�quinas, dom�nios, URLs separados por espa�os. O `Apache' far� a resolu��o DNS no caso de endere�os IP e far� o cache para requisi��es futuras. NoProxy [_endere�os_] Permite especificar endere�os Internos que n�o ser�o redirecionados para o servidor proxy especificado por _ProxyRemote_. Podem ser usados nomes de m�quinas, endere�os IP, subredes ou dom�nios separados por espa�os. ProxyDomain [_endere�o_] Especifica o endere�o que ser� adicionado a URL caso seja recebida uma requisi��o que contenha somente um nome de m�quina. � �til em redes Internas. Note que quando o suporte a proxy n�o est� ativado no `Apache', qualquer endere�o de URL externa levar� a p�gina definida pela diretiva _DocumentRoot_. Isto deixar� de funcionar ap�s configurar o servi�o de proxy. O uso do cache � interessante para acelerar as requisi��es http da rede interna para a rede externa, desta forma, se uma requisi��o foi feita anteriormente, ser� descarregado o arquivo do disco r�gido e assim evitar uma nova conex�o externa (isto libera a rede para outras coisas). Para configurar um cache no servi�o proxy, adicione as seguintes linhas no final do bloco anterior de proxy:

# As linhas abaixo ativam o cache do apache, o cache n�o funcionar� ao menos que # CacheRoot seja especificado CacheRoot /var/spool/apache CacheForceCompletion 70 CacheSize 5 CacheGcInterval 3 CacheDefaultExpire 5 CacheMaxExpire 300 NoCache 192.168.1.0/24 a_domain.com outrodom�nio.com.br outro.dominio.net Cada diretiva acima possui o seguinte significado: CacheRoot Diret�rio base onde ser�o criados os outros diret�rios de cache. O cache s� ser� ativado se esta diretiva for definida. CacheForceCompletion [_num_] Se uma transfer�ncia for cancelada e passar de _num_%, o `Apache' continuar� a transfer�ncia e armazenar� o arquivo no cache. O valor padr�o � 90. CacheSize [_num_] Define o tamanho m�ximo do diret�rio de cache do `Apache', em KB. N�o especifique um valor que tome mais de 70% do espa�o em disco. O valor padr�o � 5. CacheGcInterval [_num_] Define o tempo que o cache ser� checado em busca de arquivos maiores que o total do cache. Arquivos que ultrapassem o tamanho do cache s�o automaticamente eliminados. CacheDefaultExpire [_num_] Define o tempo que os documentos ficar�o no cache, se foram transferidos atrav�s de protocolos que n�o suportam horas de expira��o. O valor padr�o � 1 hora. CacheMaxExpire [_num_] Define o tempo que os documentos permanecer�o armazenados no cache (em horas). Esta op��o ignora a hora de expira��o do documento (caso fornecida). O valor padr�o � 24 horas. NoCache [_endere�os_] Permite especificar lista de palavras, m�quinas, dom�nios, IP's que n�o ser�o armazenados no cache do `Apache'. Caso seja usado `NoCache *' o cache ser� desativado completamente. Note que o cache tamb�m pode ser desativado comentando a diretiva _CacheRoot_. Se voc� desejar um servidor cache mais flex�vel, r�pido, din�mico, configur�vel (com possibilidade de uso de restri��es baseadas em URL, tempo de acesso, autentica��o), instale o `squid' e configure o `apache' para fazer forward de conex�es para ele (Se��o 11.11.2, `Redirecionamento de conex�es no Apache'). 11.11.1. Controlando o acesso ao servidor proxy ----------------------------------------------Incluir o bloco abaixo no arquivo `access.conf' para definir o acesso dos servi�os de proxy nas redes desejadas (se a sua configura��o for aberta como padr�o isto pode ser opcional): # Acesso aos servi�os proxy do apache Order deny,allow Deny from all Allow from .seudominio.com.br

Para explica��es sobre o processo de bloqueio acima, veja Se��o 11.7.1, `Autoriza��o'. 11.11.2. Redirecionamento de conex�es no Apache ----------------------------------------------Este recurso do `Apache' � interessante para criar clusters de servidores em sua rede interna. O que ele faz � pegar uma requisi��o a um determinado endere�o e redireciona-lo a outra m�quina e as respostas s�o repassadas ao servidor web (para o cliente a mesma m�quina esta atendendo a requisi��o, para voc� o processamento das requisi��es esta sendo distribu�do internamente na rede). As seguintes diretivas s�o usadas para realizar o redirecionamento de conex�es: _ProxyPass_ e _ProxyPassReverse_ ProxyPass [_diret�rio_da_url_ [_outro_servidor:/diret�rio_] A _ProxyPass_ permite que a URL seja redirecionada para o servidor local e diret�rio especificado. Por exemplo, assumindo que o endere�o principal de nosso servidor � `http://www.focalinux.org' e desejamos que a URL `http://www.focalinux.org/download' seja atendida por uma m�quina localizada na nossa rede privada com o endere�o `http://192.168.1.54'. Basta incluir a linha: ProxyPass /download http://192.168.1.54 Qualquer requisi��o externa a `http://www.focalinux.org/download/iniciante' ser� atendida por `http://192.168.1.54/iniciante'. ProxyPassRemote [_diret�rio_da_url_ [_outro_servidor:/diret�rio_] Esta diretiva permite modificar o cabe�alho `Location' nas mensagens de respostas de redirecionamento enviadas pelo `Apache'. Isto permite que o endere�o retornado seja o do servidor (que faz a interface externa com o cliente) e n�o da m�quina do redirecionamento. ProxyPass /download http://192.168.1.54 ProxyPassReverse /download http://192.168.1.54 Se a m�quina `192.168.1.54' redirecionar a URL para `http://192.168.1.54/download/iniciante', a resposta ser� modificada para `http://www.focalinux.org/download/iniciante' antes de ser retornada ao cliente. \ 11.12. Virtual Hosts -------------------Virtual Hosts (sites virtuais) � um recurso que permite servir mais de um site no mesmo servidor. Podem ser usadas diretivas espec�ficas para o controle do site virtual, como nome do administrador, erros de acesso a p�gina, controle de acesso e outros dados �teis para personalizar e gerenciar o site. Existem 2 m�todos de virtual hosts: * `Virtual Hosts baseados em IP' - Requer um endere�o IP diferente para cada site. Este poder� ser um IP real (da interface de rede) ou um apelido (veja Se��o 4.10, `Definindo diversos endere�os IP para a mesma interface de rede'), o que interessa � que deve haver um endere�o IP diferente para cada site. O n�mero de sites servidos estar� limitado a quantidade de endere�os IP

dispon�veis em sua classe de rede. Veja Se��o 11.12.1, `Virtual hosts baseados em IP' para detalhes de como construir um virtual host deste tipo. O `apache' foi um dos primeiros a incluir suporte a virtual hosts baseados em IP. * `Virtual Hosts baseados em nome' - Este utiliza nomes para identificar os sites servidos e requerem somente um endere�o IP. Desta maneira � poss�vel servir um n�mero ilimitado de sites virtuais. O navegador do cliente deve suportar os cabe�alhos necess�rios para garantir o funcionamento deste recurso (praticamente todos os navegadores atuais possuem este suporte). Veja Se��o 11.12.2, `Virtual hosts baseados em nome' para detalhes de como construir um virtual host deste tipo. As explica��es desta se��o s�o baseadas na documenta��o do `Apache'. 11.12.1. Virtual hosts baseados em IP ------------------------------------Existem duas maneiras de rodar este tipo de host virtual: Atrav�s de daemons `httpd' separados ou em um �nico daemon `httpd' usando a diretiva . As vantagens do uso de _daemons separados_ para servir requisi��es � a prote��o sob _UID_ e _GID_ diferente dos outros servidores, assim o administrador do _site1_ n�o ter� acesso ao `httpd.conf', p�gina do `site2' (porque ele estar� rodando sob uma _UID_ e _GID_ diferentes e o acesso � restrito). Para usar este m�todo, especifique a op��o _-f [arquivo_cfg]_ para utilizar um arquivo de configura��o personalizado e a diretiva _Listen endere�o:porta_ para dizer onde o servidor aguardar� as requisi��es. As vantagens do uso de um _mesmo daemon_ para servir as requisi��es s�o: quando n�o h� problema se os administradores de outros sites tenham acesso ao mesmo arquivo de configura��o ou quando h� a necessidade de servir muitas requisi��es de uma s� vez (quanto menos servidores web estiverem em execu��o, melhor o desempenho do sistema). Abaixo um exemplo de configura��o de virtual hosts servindo os sites `www.site1.com.br' e `www.site2.com.br': ServerAdmin [email protected] ServerName www.site1.com.br ServerAdmin [email protected] DocumentRoot /var/www/www_site1_com_br TransferLog /var/log/apache/site1/access.log ErrorLog /var/log/apache/site1/error.log User www-data Group www-data ServerName www.site2.com.br DocumentRoot /var/www/www_site2_com_br TransferLog /var/log/apache/site2/access.log ErrorLog /var/log/apache/site2/error.log

Qualquer diretiva dentro de controlar�o ter�o efeito no site virtual especificado. Quando uma diretiva n�o for especificada dentro de , ser�o usados os valores padr�es especificados no arquivo de configura��o do `Apache' (como a diretiva _ServerAdmin [email protected]_ que ser� usado como padr�o na configura��o de _www.site2.com.br_). Digite `apache -S' para ver suas configura��es de virtual hosts atual. _OBS1:_ Desative a diretiva `UseCanonicalName off' quando utilizar o recurso de m�quinas virtuais, esta diretiva faz que o nome do servidor retornado usando o valor em `ServerName' quando o cliente digita um endere�o qualquer. _OBS2:_ Utilize sempre que poss�vel endere�os IP em configura��es cr�ticas, assim os servi�os n�o ser�o t�o vulner�veis a poss�veis falsifica��es ou erros. Veja Se��o 4.6.2.2, `/etc/host.conf' e Se��o 9.6.5, `Prote��o contra IP spoofing'. Leia tamb�m a se��o Se��o 11.12.3, `Seguran�a no uso de IP's em Virtual Hosts'. _OBS3:_ N�o permita que outros usu�rios a n�o ser o root e o dono do processo `Apache' (especificado pela diretiva _User_) tenham acesso de grava��o aos logs gerados pelo servidor, pois os dados podem ser apagados ou criados links simb�licos para bin�rios do sistema que ser�o destru�dos quando o `Apache' gravar dados. Alguns bin�rios e bibliotecas s�o essenciais para o funcionamento do sistema. 11.12.2. Virtual hosts baseados em nome --------------------------------------Este m�todo � id�ntico ao baseado em IP, em especial adicionamos a diretiva _NameVirtualHost_ para dizer qual � o endere�o IP do servidor que est� servindo os virtual hosts baseados em nome. Veja o exemplo de configura��o: NameVirtualHost 200.200.200.10:80 ServerName www.site1.com.br ServerAdmin [email protected] DocumentRoot /var/www/www_site1_com_br TransferLog /var/log/apache/site1/access.log ErrorLog /var/log/apache/site1/error.log ServerName www.site2.com.br ServerAdmin [email protected] DocumentRoot /var/www/www_site2_com_br TransferLog /var/log/apache/site2/access.log ErrorLog /var/log/apache/site2/error.log A diretiva _NameVirtualHost_ diz que ser� usado virtual hosts baseados em nome servidos pela m�quina com IP `200.200.200.10'. Os par�metros dentro do bloco das diretivas s�o espec�ficas somente no site virtual especificado, caso contr�rio os valores padr�es definidos no arquivo de configura��o ser�o usados.

Digite `apache -S' para ver suas configura��es de virtual hosts atual. Se sua inten��o � criar um grande n�mero de virtual hosts que ser�o servidos pela mesma m�quina, o uso da expans�o `%0' e diretivas `VirtualDocumentRoot' e `VirtualScriptAlias' s�o recomendados: NameVirtualHost 200.200.200.10:80 VirtualDocumentRoot /var/www/%0 VirtualScriptAlias /var/www/%0/cgi-bin TransferLog log/apache/site1/access.log ErrorLog log/apache/site1/error.log Agora crie os diret�rios em `/var/www' correspondentes aos nomes de dom�nios que ser�o servidos por sua m�quina: `mkdir /var/www/www.site1.com.br', `mkdir /var/www/www.site2.com.br'. Note que sua m�quina dever� estar com o DNS configurado para responder por estes dom�nios . _ATEN��O_ � importante que os endere�os especificados nas diretivas _ServerName_ (`www.site1.com.br') resolvam o endere�o IP da diretiva _VirtualHost_ (`200.200.200.10'). Isto deve ser feito via DNS ou nos arquivos `/etc/hosts'. _OBS1:_ Utilize sempre que poss�vel endere�os IP em configura��es cr�ticas, assim os servi�os n�o ser�o t�o vulner�veis a poss�veis falsifica��es ou erros. Veja Se��o 4.6.2.2, `/etc/host.conf' e Se��o 9.6.5, `Prote��o contra IP spoofing'. Leia tamb�m a se��o Se��o 11.12.3, `Seguran�a no uso de IP's em Virtual Hosts'. _OBS2:_ N�o permita que outros usu�rios a n�o ser o root e o dono do processo `Apache' (especificado pela diretiva _User_) tenha acesso de grava��o aos logs gerados pelo servidor. Pois os dados podem ser apagados ou criados links para bin�rios do sistema que ser�o destru�dos quando o apache gravar dados para os logs. Alguns bin�rios e bibliotecas s�o essenciais para o funcionamento do sistema. 11.12.3. Seguran�a no uso de IP's em Virtual Hosts -------------------------------------------------Quando voc� est� colocando um nome na diretiva de configura��o do seu virtual hosts, est� assumindo que ele resolver� o endere�o IP corretamente (como `www.site1.com.br' => `200.200.200.10'). Se por algum motivo o servidor DNS for modificado (por outra pessoa que tem acesso a isto), o endere�o IP resolvido para o site `www.site1.com.br' poder� ser modificado para `200.200.200.20', isto redirecionar� as requisi��es para outra m�quina ao inv�s da m�quina correta. Este tipo de ataque � chamado "DNS Spoofing" e o uso de endere�o IP (ao inv�s de nomes) praticamente evita que isto aconte�a. Esta situa��o pode acontecer com a diretiva abaixo: ServerName www.gms.com.br ServerAdmin [email protected] DocumentRoot /var/www/www_gms_com_br

Outra situa��o, que impede o funcionamento do servidor Web, � quando o servidor DNS est� em manuten��o ou por algum outro motivo n�o pode resolver o endere�o IP de um nome especificado (como `www.site1.com.br'). O `apache' precisa saber qual � o seu endere�o IP para ser executado. Veja a pr�xima modifica��o: ServerName www.gms.com.br ServerAdmin [email protected] DocumentRoot /var/www/www_gms_com_br Na configura��o acima usamos o IP do servidor para especificar o virtual host. O `apache' tentar� fazer o DNS reverso para determinar qual nome � servido por aquele endere�o IP (`www.site1.com.br'). Se ele falhar, somente a se��o correspondente ser� desativada. Isto j� � uma melhoria sobre a primeira configura��o. O nome do servidor na diretiva _ServerName_ garante que o servidor responda com o nome correto. Para evitar ataques baseados em DNS siga os seguintes procedimentos de seguran�a: 1. Preferencialmente utilize o arquivo `/etc/hosts' para a resolu��o de nomes em m�quinas locais (principalmente quando existe somente um administrador). � um m�todo que evita diversas consultas ao servidor DNS (que pode deixar o acesso lento) e este arquivo � gerenciado pelo usu�rio `root', isto evita o acesso de qualquer usu�rio para a falsifica��o de endere�os. Este arquivo tamb�m � �til caso a pesquisa DNS falhe (quando a ordem de pesquisa for do servidor DNS para o arquivo `hosts' no arquivo `/etc/host.conf'), pois de qualquer forma o nome ser� resolvido e o servidor `Apache' ser� executado. 2. Evite dar poderes a outros administradores manipularem seu pr�prio dom�nio DNS, n�o h� nada que possa impedi-lo de modificar o endere�o "X" para ser servido pelo IP "Y" desviando o tr�fego para seu pr�prio servidor web. Se isto n�o for poss�vel, siga as dicas abaixo para diminuir poss�veis problemas. 3. Utilize endere�os IP na diretiva . 4. Use endere�os IP na diretiva _Listen_. 5. Use um endere�o IP na diretiva _BindAddress_. 6. Sempre utilize o par�metro _ServerName_ em todas as diretivas , isto evita o retorno incorreto de nomes (que pode evitar/revelar fraudes). 7. Quando utilizar virtual hosts, crie uma diretiva usando uma diretiva _DocumentRoot_ que n�o aponte para lugar algum. Esta diretiva ser� acessada quando nenhuma diretiva _VirtualHost_ servir a requisi��o, conferindo com o endere�o/ip. 11.13. Uso de criptografia SSL -----------------------------Esta se��o � uma refer�ncia r�pida para configura��o e uso do m�dulo `apache-ssl' com o servidor `Apache'. Este m�dulo realiza a comunica��o segura de dados (criptografada) via porta 443 (que � usada como padr�o quando especificamos uma url iniciando com _https://_). A

transmiss�o criptografada de dados � importante quanto temos dados confidenciais que precisamos transmitir como movimenta��o banc�ria, senhas, n�mero de cart�es de cr�dito, fazer a administra��o remota do servidor, etc. SSL significa _Secure Sockets Layer_ (camada segura de transfer�ncia) e TLS _Transport Layer Security_ (camada segura de Transporte). A inten��o aqui � fornecer explica��es pr�ticas para colocar um servidor `Apache' com suporte a SSL funcionando no menor tempo poss�vel. Detalhes sobre funcionamento de certificados, m�todos de criptografia, assinatura, etc. dever�o ser buscadas na documenta��o deste m�dulo ou em sites especializados (� um assunto muito longo). 11.13.1. Servidor apache com suporte a ssl -----------------------------------------Ao inv�s de utilizar o m�dulo apache-ssl, voc� poder� usar o pacote `apache-ssl', ele nada mais � que um servidor `Apache' com o suporte SSL j� incluso e n�o interfere no servidor `Apache' padr�o, porque � executado somente na porta 443. Se voc� tem um grande site com configura��es de acesso personalizadas, ele trar� mais trabalho de administra��o, pois as configura��es e diretivas de restri��es de acesso dever�o ser copiadas para este servidor web. No entanto, ele � indicado para m�quinas que ser�o servidores SSL dedicados ou quando n�o possui configura��es especiais em seu servidor web principal. Esta se��o tem por objetivo a instala��o do suporte ao m�dulo SSL (`mod_ssl') no servidor `Apache' padr�o. 11.13.2. Gerando um certificado digital --------------------------------------O certificado digital � a pe�a que garante a transfer�ncia segura de dados. Ele cont�m detalhes sobre a empresa que far� seu uso e quem o emitiu. Para gerar ou modificar um certificado digital, execute o comando `mod-ssl-makecert' e siga as instru��es. O m�todo de criptografia usado pelo certificado digital � baseado no conceito de chave p�blica/privada, a descri��o sobre o funcionamento deste sistema de criptografia � feito em Se��o 17.5, `Usando pgp (`gpg')para criptografia de arquivos'. _OBS_ N�o utilize acentos nos dados de seu certificado. 11.13.3. Exemplo de configura��o do m�dulo mod-ssl -------------------------------------------------Abaixo uma configura��o r�pida para quem deseja ter um servidor com suporte a SSL funcionando em menor tempo poss�vel (ela � feita para operar em todas as instala��es e n�o leva em considera��o o projeto de seguran�a de sua configura��o atual do `Apache'). Note que todas as diretivas relacionadas com o m�dulo `mod_ssl' come�am com o nome "SSL": # Somente processa as diretivas relacionadas a SSL caso o m�dulo mod_ssl estiver # carregado pela diretiva LoadModule

# � necess�rio especificar as portas que o servidor Web aguardar� conex�es (normais e # ssl). Listen 80 Listen 443 # Ativa o tratamento de conex�es com o destino na porta 443 pela diretiva # VirtualHost abaixo # Ativa ou desativa o m�dulo SSL para este host virtual SSLEngine on # Certificado do servidor SSLCertificateFile /etc/apache/ssl.crt/server.crt # Chave privada de certificado do servidor. SSLCertificateKeyFile /etc/apache/ssl.key/server.key # A linha abaixo for�a o fechamento de conex�es quando a # conex�o com o navegador Internet Explorer � interrompida. Isto # viola o padr�o SSL/TLS mas � necess�rio para este tipo de # navegador. Alguns problemas de conex�es de navegadores tamb�m # s�o causados por n�o saberem lidar com pacotes keepalive. SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
################################################################################# # Adicionalmente poder�o ser especificadas as seguintes op��es para modificar # # o comportamento da se��o SSL (veja mais detalhes na documenta��o do mod-ssl) # ################################################################################# # Formato e localiza��o do cache paralelo de processos da se��o. O cache de se��o � # feito internamente pelo m�dulo mas esta diretiva acelera o processamento # de requisi��es paralelas feitas por modernos clientes navegadores. Por padr�o # nenhum cache � usado ("none"). SSLSessionCache dbm:/var/run/ssl-cache # Localiza��o do arquivo de lock que o m�dulo SSL utiliza para # sincroniza��o entre processos. O padr�o � nenhum. SSLMutex file:/var/run/ssl-mutex # Especifica o m�todo de embaralhamento de dados que ser� utilizado # durante o inicio de uma se��o SSL (startup) ou durante o processo # de conex�o (connect). Podem ser especificados "builtin" (� muito r�pido # pois consome poucos ciclos da CPU mas n�o gera tanta combina��o aleat�ria), um # programa que gera n�meros aleat�rios (com "exec") ou os dispositivos aleat�rios # /dev/random e /dev/urandom (com "file"). Por padr�o nenhuma fonte # adicional de n�meros aleat�rios � usada. SSLRandomSeed startup builtin SSLRandomSeed connect builtin #SSLRandomSeed startup file:/dev/urandom 512 #SSLRandomSeed connect file:/dev/urandom 512 #SSLRandomSeed connect exec:/pub/bin/NumAleat

# Tipos MIME para download de certificados AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl # Tempo m�ximo de perman�ncia dos objetos do cache acima. O valor padr�o � # 300 segundos (5 minutos). SSLSessionCacheTimeout 300 # Vers�o do protocolo SSL que ser� usada. Podem ser especificadas # SSLv2, SSLv3 TLSv1 ou all. O mais compat�vel com os navegadores atuais # � o "SSLv2". Por padr�o "all" � usado. #SSLProtocol all #SSLProtocol -all +SSLv3 # Registra detalhes sobre o tr�fego neste arquivo. Mensagens de erro # tamb�m s�o armazenadas no arquivo de registro padr�o do Apache SSLLog /var/log/apache/ssl-mod.log # N�vel das mensagens de log registradas por SSLLog SSLLogLevel info Algumas diretivas deste m�dulo podem fazer parte tanto da configura��o global do servidor como diretivas de acesso (`Directory', `Location', `.htaccess', veja a op��o "Context" na documenta��o do `mod_ssl'). 11.13.4. Autorizando acesso somente a conex�es SSL -------------------------------------------------Existem casos que precisa restringir o uso de conex�es normais e permitir somente conex�es via SSL (como por exemplo, dentro da diretiva de acesso que controla seu acesso a uma p�gina com listagem de clientes). A op��o _SSLRequereSSL_ � usada para tal e deve ser usada dentro das diretivas de controle acesso: Options Indexes Order deny,allow Deny from evil.cracker.com SSLRequireSSL A diretiva acima _requer_ que sejam feitas conex�es SSL (porta 443 https://) para acesso ao diret�rio `/var/www/secure/clientes', qualquer conex�o padr�o n�o criptografada (feita na porta 80) ser� rejeitada com o erro 403. _OBS:_ A diretiva _SSLRequireSSL_ podia ser colocada entre as condicionais "IfModule mod_ssl.c" mas o servidor web permitiria conex�es n�o criptografadas se por algum motivo esse m�dulo n�o estivesse carregado. Na configura��o acima, ocorrer� um erro e impedir� o funcionamento do servidor web caso ocorra algum problema com o `mod_ssl'. 11.13.5. Iniciando o servidor Web com suporte a SSL --------------------------------------------------Verifique se a configura��o do `Apache' est� ok com `apache -t'.

Caso

positivo, reinicie o servidor usando um dos m�todos descritos em Se��o 11.1.9, `Iniciando o servidor/reiniciando/recarregando a configura��o'. O servidor web lhe pedir� a FraseSenha para descriptografar a chave privada SSL (esta senha foi escolhida durante o processo de cria��o do certificado). Esta senha garante uma seguran�a adicional caso a chave privada do servidor seja copiada de alguma forma. Somente quem tem conhecimento da FraseSenha poder� iniciar o servidor com suporte a transfer�ncia segura de dados. Verifique se o virtual host est� servindo as requisi��es na porta 443 com `apache -S'. O �nico m�todo para fazer o servidor web evitar de pedir a senha para descriptografar a chave privada � colocando uma senha em branco. Isto s� � recomendado em ambientes seguros e o diret�rio que cont�m a chave privada dever� ter somente permiss�es para o dono/grupo que executa o servidor Web. Qualquer outra permiss�o poder� por em risco a seguran�a da instala��o caso a chave privada seja roubada. Depois disso, execute o comando: # entre no diret�rio que cont�m a chave privada cd /etc/apache/ssl.key # renomeie a chave privada para outro nome ren server.key server.key-Csenha openssl rsa -in server.key-Csenha -out server.key Digite a senha quando pedido. A chave original (com senha) estar� gravada no arquivo `server.key-Csenha' e poder� ser restaurada se necess�rio. Reinicie o servidor `Apache', desta vez ele n�o pedir� a senha. _OBS1:_ Tire uma c�pia de seguran�a da chave privada original antes de executar esta opera��o. _OBS2:_ N�o se esque�a de ajustar as permiss�es de acesso no diret�rio `/etc/apache/ssl.key' caso n�o utilize senha para proteger seu certificado digital. 11.14. Exemplo comentado de um arquivo de configura��o do Apache ---------------------------------------------------------------O exemplo abaixo foi retirado da distribui��o `Debian GNU/Linux', fiz sua tradu��o, modifica��es e inclui alguns coment�rios sobre as diretivas para deixa-lo mais de acordo com o conte�do abordado pelo guia e mais auto-explicativo. A configura��o do `Apache' est� distribu�da nos arquivos `httpd.conf', `srm.conf' e `access.conf' e podem ser usados como modelo para a constru��o da configura��o de seu servidor. 11.14.1. httpd.conf ------------------## ## httpd.conf -- Arquivo de configura��o do servidor httpd Apache ##

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

Baseado nos arquivos de configura��o originais do servidor NCSA por Rob McCool. Modificado para distribui��o junto ao guia Foca GNU/Linux Avan�ado http://www.metainfo.org/focalinux Este � o arquivo de configura��o principal do servidor Apache. Ele cont�m as diretivas de configura��o que d�o ao servidor suas instru��es. Veja para informa��es detalhadas sobre as diretivas. N�O leia simplesmente as instru��es deste arquivo sem entender o que significam e o que fazem, se n�o tiver certeza do que est� fazendo consulte a documenta��o on-line ou leia as se��es apropriadas do guia. Voc� foi avisado. Ap�s este arquivo ser processado, o servidor procurar� e processar� o arquivo /etc/apache/srm.conf e ent�o /etc/apache/access.conf a n�o ser que voc� tenha modificado o nome dos arquivos acima atrav�s das diretivas ResourceConfig e/ou AccessConfig neste arquivo. Configura��o e nomes de arquivos de log: Se os nomes de arquivos que especificar para os arquivos de controle do servidor iniciam com uma "/", o servidor usar� aquele caminho explicitamente. Se os nomes *n�o* iniciarem com uma "/", o valor de ServerRoot � adicionado -- assim "logs/foo.log" com ServerRoot ajustado para "/usr/local/apache" ser� interpretado pelo servidor como "/usr/local/apache/logs/foo.log". Originalmente por Rob McCool modificado por Gleydson Mazioli da Silva para o guia Foca GNU/Linux Carga dos M�dulos de Objetos Compartilhados: Para voc� ser capaz de usa a funcionalidade de um m�dulo que foi constru�do como um m�dulo compartilhado, ser� necess�rio adicionar as linhas 'LoadModule' correspondente a sua localiza��o, assim as diretivas que os m�dulos cont�m estar�o dispon�veis _antes_ de serem usadas. Exemplo:

# # ServerType pode ser inetd, ou standalone. O modo Inetd somente � suportado nas # plataformas Unix. O modo standalone inicia o servidor como um daemon. # ServerType standalone # Se estiver executando a partir do inetd, v� at� a diretiva "ServerAdmin". # Port: A porta que o servidor standalone escutar�. Para portas < 1023, ser� # necess�rio o servidor funcionando como root inicialmente. Port 80 # # # # # # # #

HostnameLookups: Registra os nomes DNS dos clientes ou apenas seus endere�os IP's ex., www.apache.org (on) ou 204.62.129.132 (off). O valor padr�o � off porque permitir� menos tr�fego na rede. Ativando esta op��o significa que cada acesso de um cliente resultar� em NO M�NIMO uma requisi��o de procura ao servidor de nomes (DNS).

HostnameLookups off # Caso desejar que o servidor http seja executado como um usu�rio ou grupo diferente # voc� deve executar o httpd inicialmente como root e ele modificar� sua ID para a # especificada. # # # # #

User/Group: O nome (ou #n�mero) do usu�rio/grupo que executar� o servidor httpd. No SCO (ODT 3) use "User nouser" e "Group nogroup" No HPUX voc� pode n�o ser� capaz de usar mem�ria compartilhada como nobody, e � sugerido que seja criado um usu�rio www e executar o servidor httpd como este usu�rio, adequando as permiss�es onde necess�rias.

User www-data Group www-data # ServerAdmin: Seu endere�o de e-mail, onde os problemas com o servidor devem ser # enviadas. Este endere�o aparecer� nas mensagens de erro do servidor. ServerAdmin [email protected] # # # # # # # # # # # #

ServerRoot: O topo da �rvore de diret�rios onde os arquivos de configura��o do servidor, erros, e log s�o mantidos. NOTA: Se tiver a inten��o de colocar isto em um sistema de arquivos montado em um servidor NFS (ou outra rede) ent�o por favor leia a documenta��o do LockFile (dispon�vel em ); e se salvar� de v�rios problemas. N�o adicione uma barra no fim do caminho do diret�rio.

ServerRoot /etc/apache # # # #

BindAddress: Voc� pode usar esta op��o em virtual hosts. Esta op��o � usada para dizer ao servidor que endere�o IP escutar. Ele pode conter ou "*", um endere�o IP, ou um nome de dom�nio completamente qualificado (FQDN). Veja tamb�m a diretiva VirtualHost.

BindAddress * # # Suporte a Objetos Compartilhados Dinamicamente (DSO - Dynamic Shared Object) # # Para ser capaz de usar a funcionalidade de um m�dulo que foi compilado como # um m�dulo DSO, voc� ter� que adicionar as linhas 'LoadModule' correspondentes # nesta localiza��o, assim as diretivas contidas nela estar�o dispon�veis # _antes_ de serem usadas. Por favor leia o arquivo README.DSO na distribui��o # 1.3 do Apache para mais detalhes sobre o mecanismo DSO e execute o comando # "apache -l" para a lista de m�dulos j� compilados (est�ticamente linkados e # assim sempre dispon�veis) em seu bin�rio do Apache. # # Please keep this LoadModule: line here, it is needed for installation. # LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so # LoadModule env_module /usr/lib/apache/1.3/mod_env.so LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so

# LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so LoadModule status_module /usr/lib/apache/1.3/mod_status.so # LoadModule info_module /usr/lib/apache/1.3/mod_info.so # LoadModule includes_module /usr/lib/apache/1.3/mod_include.so LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so LoadModule php3_module /usr/lib/apache/1.3/libphp3.so LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so # LoadModule asis_module /usr/lib/apache/1.3/mod_asis.so # LoadModule imap_module /usr/lib/apache/1.3/mod_imap.so # LoadModule action_module /usr/lib/apache/1.3/mod_actions.so # LoadModule speling_module /usr/lib/apache/1.3/mod_speling.so LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so LoadModule access_module /usr/lib/apache/1.3/mod_access.so LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so # LoadModule anon_auth_module /usr/lib/apache/1.3/mod_auth_anon.so # LoadModule dbm_auth_module /usr/lib/apache/1.3/mod_auth_dbm.so # LoadModule db_auth_module /usr/lib/apache/1.3/mod_auth_db.so # LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so # LoadModule digest_module /usr/lib/apache/1.3/mod_digest.so # LoadModule cern_meta_module /usr/lib/apache/1.3/mod_cern_meta.so LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so # LoadModule headers_module /usr/lib/apache/1.3/mod_headers.so # LoadModule usertrack_module /usr/lib/apache/1.3/mod_usertrack.so LoadModule unique_id_module /usr/lib/apache/1.3/mod_unique_id.so LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so # LoadModule sys_auth_module /usr/lib/apache/1.3/mod_auth_sys.so # LoadModule put_module /usr/lib/apache/1.3/mod_put.so # LoadModule throttle_module /usr/lib/apache/1.3/mod_throttle.so # LoadModule allowdev_module /usr/lib/apache/1.3/mod_allowdev.so # LoadModule auth_mysql_module /usr/lib/apache/1.3/mod_auth_mysql.so # LoadModule pgsql_auth_module /usr/lib/apache/1.3/mod_auth_pgsql.so # LoadModule eaccess_module /usr/lib/apache/1.3/mod_eaccess.so # LoadModule roaming_module /usr/lib/apache/1.3/mod_roaming.so # # ExtendedStatus: Controla de o Apache gerar� detalhes completos de status # (ExtendedStatus On) ou apenas detalhes b�sicos (ExtendedStatus Off) quando o # manipulador (handler) "server-status" for usado. O padr�o � Off. # ExtendedStatus on # # ErrorLog: A localiza��o do arquivo de log de erros. # Se n�o estiver especificando a diretiva ErrorLog dentro de , # as mensagens de erros relativas aos hosts virtuais ser�o registradas neste # arquivo. Se definir um arquivo de log de erros para , as # mensagens relativas ao servidor controlados por ela ser�o registradas l� e # n�o neste arquivo. # ErrorLog /var/log/apache/error.log # # LogLevel: Controla o n�mero de mensagens registradas no ErrorLog.

# Facilidades poss�veis incluem: debug, info, notice, warn, error, crit, # alert, emerg. # Veja as facilidades na se��o do guia sobre o syslog para detalhes # LogLevel warn # As seguintes diretivas definem alguns formatos de nomes que ser�o usadas com a # diretiva CustomLog (veja abaixo). LogFormat full LogFormat debug LogFormat LogFormat LogFormat LogFormat

"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T" "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined "%h %l %u %t \"%r\" %>s %b" common "%{Referer}i -> %U" referer "%{User-agent}i" agent

# # A localiza��o e formato do arquivo de log de acesso (definida pela diretiva # LogFormat acima). # Se n�o definir quaisquer arquivos de log de acesso dentro de um # , elas ser�o registradas aqui. Se for definida dentro # de o arquivo de log de acesso ser� registrado no # arquivo especificado na diretiva e n�o aqui. # #CustomLog /var/log/apache/access.log common # Se voc� desejar ter um arquivo de log separado para o agent (navegador usado) # e referer, descomente as seguintes diretivas. #CustomLog /var/log/apache/referer.log referer #CustomLog /var/log/apache/agent.log agent # Se preferir um arquivo de log simples, com os detalhes de acesso, agent, e # referer (usando o formato combined da diretiva LogFile acima), use a seguinte # diretiva. CustomLog /var/log/apache/access.log combined # # Incluir uma linha contendo a vers�o do servidor e um nome de host virtual # para as p�ginas geradas pelo servidor (documentos de erro, listagens # de diret�rios FTP, sa�da dos m�dulos mod_status e mod_info, etc., exceto # para documentos gerados via CGI). Use o valor "EMail" para tamb�m incluir # um link mailto: para o ServerAdmin. Escolha entre "On", "Off" ou "EMail". # ServerSignature On # # PidFile: O arquivo que o servidor gravar� os detalhes sobre seu PID quando # iniciar. # PidFile /var/run/apache.pid # # ScoreBoardFile: Arquivo usado para armazenar detalhes do processo interno do # servidor. Nem todas as arquiteturas requerem esta diretiva, mas se a sua

# requerer (voc� saber� porque este arquivo ser� criado quando executar o # Apache) ent�o voc� *dever�* ter certeza que dois processos do Apache n�o # utilizam o mesmo arquivo ScoreBoardFile. # ScoreBoardFile /var/run/apache.scoreboard # # Na configura��o padr�o, o servidor processar� este arquivo, o # srm.conf e o access.conf neste ordem. Voc� pode fazer o servidor # ignorar estes arquivos usando "/dev/null". # ResourceConfig /etc/apache/srm.conf AccessConfig /etc/apache/access.conf # # A diretiva LockFile define o caminho do lockfile usado quando o servidor # Apache for compilado com a op��o USE_FCNTL_SERIALIZED_ACCEPT ou # USE_FLOCK_SERIALIZED_ACCEPT. Esta diretiva normalmente deve ser deixada em seu # valor padr�o. A raz�o principal de modifica-la � no caso do diret�rio de logs # for montado via um servidor NFS< pois o arquivo especificado em LockFile # DEVE SER ARMAZENADO EM UM DISCO LOCAL. O PID do processo do servidor principal # � automaticamente adicionado neste arquivo. # LockFile /var/run/apache.lock # # # # # #

ServerName permite ajustar o nome de host que ser� enviado aos clientes, caso for diferente do nome real (por exemplo, se desejar usar www ao inv�s do nome real de seu servidor). Nota: Voc� n�o pode simplesmente inventar nomes e esperar que funcionem. O nome que definir dever� ser um nome DNS v�lido para sua m�quina.

ServerName debian.meudominio.org # UseCanonicalName: Com esta op��o ligada, se o Apache precisar construir uma # URL de refer�ncia (uma url que � um retorno do servidor a uma requisi��o) ele # usar� ServerName e Port para fazer o "nome can�nico". Com esta op��o desligada, # o Apache usar� computador:porta que o cliente forneceu, quando poss�vel. # Isto tamb�m afeta SERVER_NAME e SERVER_PORT nos scripts CGIs. # # Dependendo de sua configura��o, principalmente em virtual hosts, � recomend�vel # deixa-la desativada ou com o valor DNS. O valor DNS obt�m o nome do servidor # atrav�s de uma requisi��o DNS reversa do endere�o IP (muito �til para virtual # hosts baseados em IP). UseCanonicalName off # # # # #

CacheNegotiatedDocs: Por padr�o, o Apache envia Pragma: no-cache com cada documento que foi negociado na base do conte�do. Isto permite dizer a servidores proxy para n�o fazerem cache do documento. Descomentando a seguinte linha desativa esta caracter�stica, e os proxyes ser�o capazes de fazer cache dos documentos.

#CacheNegotiatedDocs # Timeout: O n�mero de segundos antes de receber e enviar um time out Timeout 300

# KeepAlive: Se vai permitir ou n�o conex�es persistentes (mais que uma requisi��o # por conex�o). Mude para "Off" para desativar. KeepAlive On # # # #

MaxKeepAliveRequests: O n�mero m�ximo de requisi��es que ser�o permitidas durante uma conex�o persistente. Mude para 0 para permitir uma quantidade ilimitada. N�s recomendamos deixar este n�mero alto, para obter a m�xima performance

MaxKeepAliveRequests 100 # KeepAliveTimeout: N�mero de segundos que aguardar� a pr�xima requisi��o KeepAliveTimeout 15 # # # # # #

Regulagem do tamanho de pool do servidor. Ao inv�s de fazer voc� adivinhar quantos processos servidores precisar�, o Apache adapta dinamicamente de acordo com a carga que ele v� --- isto �, ele tenta manter o n�mero de processos o bastante para manipular a carga atual, mas alguns poucos servidores esparsos para manipular requisi��es transientes (ex. requisi��es simult�neas m�ltiplas de um navegador Netscape simples).

# # # # #

Ele faz isto verificando periodicamente quantos servidores est�o aguardando por uma requisi��o. Se l� existe menos que MinSpareServers, ele cria um novo processo. Se existe mais que MaxSpareServers, ele fecha alguns processos. Os valores abaixo est�o adequados para muitos sites

MinSpareServers 5 MaxSpareServers 10 # N�mero de servidores que ser�o iniciados --- deve conter um valor razo�vel. StartServers 5 # # # # # #

Limita o n�mero total de servidores rodando, i.e., limita o n�mero de clientes que podem conectar simultaneamente --- se este limite � sempre atingido, os clientes podem ser�o BARRADOS, assim este valor N�O DEVE SER MUITO PEQUENO. Ele tem a inten��o principal de ser um freio para manter um em execu��o com uma performance aceit�vel de acordo com os requerimentos de constru��o e carga calculada no servidor.

MaxClients 150 # # # # # # # # # # # # # #

MaxRequestsPerChild: O n�mero de requisi��es que cada processo tem permiss�o de processar antes do processo filho ser finalizado. O filho ser� finalizado para evitar problemas ap�s uso prolongado quando o Apache (e talvez as bibliotecas que utiliza) tomar mem�ria e outros recursos. Na maioria dos sistemas, isto realmente n�o � necess�rio, exceto para alguns (como o Solaris) que possuem ponteiros not�veis em suas bibliotecas. Para estas plataformas, ajuste para algo em torno de 10000 ou algo assim; uma configura��o de 0 significa ilimitado. NOTA: Este valor n�o inclui requisi��es keepalive ap�s a requisi��o inicial por conex�o. Por exemplo, se um processo filho manipula uma requisi��o inicial e 10 requisi��es "keptalive" subseq�entes, ele somente contar� 1 requisi��o neste limite.

# MaxRequestsPerChild 30 # Listen: Permite fazer o Apache escutar um IP determinado e/ou porta, em # adi��o a padr�o. Veja tamb�m o comando VirtualHost #Listen 3000 #Listen 12.34.56.78:80 # # # #

VirtualHost: Permite o daemon responder a requisi��es para mais que um endere�o IP do servidor, se sua m�quina estiver configurada para aceitar pacotes para m�ltiplos endere�os de rede. Isto pode ser feito com a op��o de aliasing do ifconfig ou atrav�s de patches do kernel como o de VIF.

# Qualquer diretiva httpd.conf ou srm.conf pode ir no comando VirtualHost. # Veja tamb�m a entrada BindAddress. # #ServerAdmin [email protected]_domain.com #DocumentRoot /var/www/host.some_domain.com #ServerName host.some_domain.com #ErrorLog /var/log/apache/host.some_domain.com-error.log #TransferLog /var/log/apache/host.some_domain.com-access.log # # # # # # #

VirtualHost: Se voc� quiser manter m�ltiplos dom�nios/nomes de m�quinas em sua m�quina voc� pode ajustar o conte�do de VirtualHost para eles. Por favor veja a documenta��o em para mais detalhes antes de tentar configurar seus hosts virtuais. Voc� pode usar a op��o de linha de comando '-S' para verificar sua configura��o de hosts virtuais.

# # Se desejar usar hosts virtuais baseados em nome, ser� necess�rio definir no # m�nimo um endere�o IP (e n�mero de porta) para eles. # #NameVirtualHost 12.34.56.78:80 #NameVirtualHost 12.34.56.78 # # Exemplo de um Host Virtual: # Praticamente qualquer diretiva do Apache pode entrar na condicional # VirtualHost. # # # ServerAdmin [email protected]_domain.com # DocumentRoot /www/docs/host.some_domain.com # ServerName host.some_domain.com # ErrorLog logs/host.some_domain.com-error.log # CustomLog logs/host.some_domain.com-access.log common # # # 11.14.2. srm.conf

----------------# # # #

Neste arquivo s�o definidos o espa�o de nomes que os usu�rios visualizar�o no seu servidor http. Este arquivo tamb�m define configura��es do servidor que afetam como as requisi��es s�o servidas e como os resultados dever�o ser formatados.

# Veja os tutoriais em http://www.apache.org/ para mais detalhes # DocumentRoot: O diret�rio principal onde voc� servira seus documentos. # Por padr�o, todas as requisi��es s�o tomadas atrav�s deste diret�rio, # exceto links simb�licos e aliases que podem ser usados para apontar para # outras localiza��es no sistema de arquivos. DocumentRoot /var/www # # UserDir: O nome do diret�rio que ser� adicionado ao diret�rio home do usu�rio # caso uma requisi��o ~usu�rio for recebida. # # Linha abaixo por recomenda��o de seguran�a do manual do Apache UserDir disabled root UserDir public_html # # DirectoryIndex: Nome do arquivo ou arquivos que ser�o usados como �ndice do # diret�rio. Especifique mais de um arquivos separados por espa�os ao inv�s # de um s� um nome (como "index") para aumentar a performance do servidor. # DirectoryIndex index.html index.htm index.shtml index.cgi # # Diretivas que controlam a exibi��o de listagem de diret�rios geradas pelo servidor. # # # FancyIndexing: se voc� deseja o padr�o fancy index ou padr�o para a indexa��o # de arquivos no diret�rio. Usando FancyIndexing o servidor # apache gerar� uma listagem de arquivos que poder� ser # ordenada, usar tipos de �cones e encoding, etc. Veja as # pr�ximas op��es IndexOptions FancyIndexing # # As diretivas AddIcon* dizem ao servidor que �cone mostrar para um determinado # arquivo ou extens�o de arquivos. Estes somente s�o mostrados para os # diret�rios classificados atrav�s da op��o FancyIndexing. # AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType AddIconByType AddIconByType AddIconByType

(TXT,/icons/text.gif) text/* (IMG,/icons/image2.gif) image/* (SND,/icons/sound2.gif) audio/* (VID,/icons/movie.gif) video/*

AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon AddIcon

/icons/binary.gif .bin .exe /icons/binhex.gif .hqx /icons/tar.gif .tar /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv /icons/compressed.gif .Z .z .tgz .gz .zip /icons/a.gif .ps .ai .eps /icons/layout.gif .html .shtml .htm .pdf /icons/text.gif .txt /icons/c.gif .c /icons/p.gif .pl .py /icons/f.gif .for /icons/dvi.gif .dvi /icons/uuencoded.gif .uu /icons/script.gif .conf .sh .shar .csh .ksh .tcl /icons/tex.gif .tex /icons/bomb.gif */core /icons/deb.gif .deb Debian

AddIcon AddIcon AddIcon AddIcon

/icons/back.gif .. /icons/hand.right.gif README /icons/folder.gif ^^DIRECTORY^^ /icons/blank.gif ^^BLANKICON^^

# DefaultIcon � o �cone que ser� mostrado para aplicativos que n�o tiverem um # �cone explicitamente definido. DefaultIcon /icons/unknown.gif # # AddDescription: isto lhe permite colocar uma curta descri��o ap�s um arquivo # nos �ndices gerados pelo servidor. Estes somente s�o mostrados para diret�rios # com �ndices organizados usando a op��o FancyIndexing. # Formato: AddDescription "descri��o" extens�o # #AddDescription "GZIP compressed document" .gz #AddDescription "tar archive" .tar #AddDescription "GZIP compressed tar archive" .tgz # ReadmeName � o nome do arquivo LEIAME que o servidor procurar� como # padr�o. Estes ser�o inseridos no fim da listagem de diret�rios. Formato: ReadmeName nome # # O servidor procurar� primeiro por nome.html, inclu�do se ele for encontrado, # e ent�o procurar� pelo nome e incluir� ele como texto plano se encontrado.. ReadmeName README # HeaderName � o nome do arquivo que deve ser colocado no topo do �ndice # de diret�rios. As regras de procura de nome s�o as mesmas do arquivo # README

HeaderName HEADER # # IndexIgnore: um conjunto de nomes de arquivos que a listagem de diret�rios # deve ignorar e n�o incluir na listagem. � permitido o uso de coringas # como no interpretador de comandos. # IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
# # # # # # # #

AccessFileName: O nome do arquivo que ser� procurado em cada diret�rio que cont�m detalhes sobre as permiss�es de acesso a um determinado diret�rio e op��es de listagem. Tenha cuidado ao modificar o nome deste arquivo, muitas defini��es que trabalham em cima do nome .htaccess nos arquivos de configura��o dever�o ser modificados para n�o comprometer a seguran�a de seu servidor. Uma falta de aten��o neste ponto poder� deixar este arquivo vis�vel em qualquer listagem de diret�rios facilmente...

AccessFileName .htaccess # TypesConfig especifica o arquivo de configura��o que cont�m os tipos # usados pelo servidor TypesConfig /etc/mime.types # # DefaultType � o tipo MIME padr�o que o servidor utilizar� para um documento # caso ele n�o possa determinar seu conte�do, como atrav�s de extens�es # de arquivos. Se o servidor cont�m em sua maioria texto ou documentos em HTML, # "text/plain" � um bom valor. Caso a maioria do conte�do seja bin�rios, tal # como aplicativos ou fotos, o tipo mais adequado ao seu caso poder� ser # "application/octet-stream" para evitar que navegadores tentem exibir # aplicativos bin�rios como se fossem texto. # Se desejar uma refer�ncia r�pida sobre tipos mime, consulte o arquivo # /etc/mime.types # DefaultType text/plain # # Document types. # # # # # #

AddEncoding permite que alguns navegadores (Mosaic/X 2.1+, Netscape, etc) descompactem dados durante sua abertura. N Nota: Nem todos os navegadores suportam isto. Esque�a os nomes parecidos, as seguintes diretivas Add* n�o tem nada a ver com personaliza��es da op��o FancyIndexing usada nas diretivas acima.

AddEncoding x-compress Z AddEncoding x-gzip gz tgz # # AddLanguage: permite especificar o idioma do documento. Voc� pode # ent�o usar a negocia��o de conte�do para dar ao navegador um # arquivo no idioma solicitado. #

# #

# Nota 1: O sufixo n�o precisa ser o mesmo da palavra chave do # idioma --- estes com o documento em Polon�s (no qual o # c�digo padr�o da rede � pl) pode desejar usar "AddLanguage pl .po" # para evitar confus�o de nomes com a extens�o comum de scripts # scripts em linguagem Perl. # # Nota 2: As entradas de exemplos abaixo mostram que em alguns casos # as duas letras de abrevia��o do 'Idioma' n�o � id�ntico as duas letras # do 'Pa�s' para seu pa�s, como 'Danmark/dk' versus 'Danish/da'. # # Nota 3: No caso de 'ltz' n�s violamos a RFC usando uma especifica��o de # tr�s caracteres. Mas existe um 'trabalho em progresso' para corrigir isto # e obter os dados de refer�ncia para limpar a RFC1766. # # Danish (da) - Dutch (nl) - English (en) - Estonian (ee) # French (fr) - German (de) - Greek-Modern (el) # Italian (it) - Portugese (pt) - Luxembourgeois* (ltz) # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz) # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja) # AddLanguage da .dk AddLanguage nl .nl AddLanguage en .en AddLanguage et .ee AddLanguage fr .fr AddLanguage de .de AddLanguage el .el AddLanguage it .it AddLanguage ja .ja AddCharset ISO-2022-JP .jis AddLanguage pl .po AddCharset ISO-8859-2 .iso-pl AddLanguage pt .pt AddLanguage pt-br .pt-br AddLanguage ltz .lu AddLanguage ca .ca AddLanguage es .es AddLanguage sv .se AddLanguage cz .cz # LanguagePriority: permite definir a prioridade para a exibi��o de # documentos caso nenhum documento confira durante a negocia��o de # conte�do. # # Para fazer isto, especifique os idiomas em ordem de prefer�ncia de exibi��o # de idiomas. # LanguagePriority pt-br pt es en da nl et fr de el it ja pl ltz ca sv # # # # # # #

AddType permite modificar o mime.types sem editar o arquivo, ou fazer a associa��o de arquivos a certos tipos de conte�do. Por exemplo, o m�dulo PHP 3.x (que n�o faz parte da distribui��o do Apache - veja http://www.php.net) tipicamente utiliza isto:

#AddType #AddType # # E para # #AddType #AddType

application/x-httpd-php3 .php3 application/x-httpd-php3-source .phps arquivos PHP 4.x use: application/x-httpd-php .php application/x-httpd-php-source .phps

AddType application/x-tar .tgz AddType image/bmp .bmp # hdml AddType text/x-hdml .hdml # # AddHandler permite mapear certas extens�es de arquivos a programas # "manipuladores" adequados a seu conte�do. Estes podem ser constru�dos # no servidor ou adicionados com o comando Action (veja abaixo). # # Se desejar usar includes no lado do servidor, ou servir diret�rios # com scripts CGI para fora, descomente as seguintes linhas. # # Para usar scripts CGI: # #AddHandler cgi-script .cgi .sh .pl # # Para usar arquivos html gerados atrav�s do servidor # #AddType text/html .shtml #AddHandler server-parsed .shtml # # Descomente as seguintes linhas para ativar a caracter�sticas de arquivos # send-asis HTTP do servidor Apache # #AddHandler send-as-is asis # # Se desejar usar arquivos de mapas de imagens processadas no servidor, use # #AddHandler imap-file map # # Para ativar tipo de mapas, voc� poder� usar # #AddHandler type-map var
# Fim dos tipos de documentos # Prefer�ncias padr�es de exibi��o de caracteres (veja http://www.apache.org/info/css-security/). AddDefaultCharset on AddDefaultCharsetName iso-8859-1 # Redirect permite dizer aos cliente que documentos n�o existem mais no seu

servidor # e a nova localiza��o do documento. # Format: Redirect nomeurl url # "nomeurl" � o caminho especificado na url e "url" � a nova localiza��o do # documento # # # #

Aliases: Inclua aqui quantos apelidos voc� desejar (sem limite) o formato �: Alias nomeurl nomereal "nomeurl" � o caminho especificado na url e "nomereal" � a localiza��o do documento no sistema de arquivos local

# Note que se voc� incluir uma / no fim de "nomeurl", ent�o o servidor # requisitar� que tamb�m esteja presente na URL. Alias Alias Alias Alias Alias

/icons/ /usr/share/apache/icons/ /doc/ /usr/doc/ /focalinux /var/www/focalinux /debian-br /var/www/debian-br/htdocs /debian /pub/mirror/debian

# ScriptAlias: Esta diretiva controla que diret�rios cont�m scripts do servidor. # Format: ScriptAlias fakename realname ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # # # # # # #

Action: permite definir os tipos de m�dia que executar�o um script quando um arquivo que conferir for chamado. Isto elimina a necessidade de caminhos de URLs repetidas para processadores de arquivos CGI freq�entemente usados. Format: Action media/type /cgi-script/location Format: Action handler-name /cgi-script/location

# # MetaDir: especifica o nome do diret�rio no qual o apache procurar� arquivos de # detalhes do m�dulo mod_cern_meta. Os m�dulos meta cont�m cabe�alhos HTTP # adicionais que ser�o inclu�dos durante o envio do documento. # #MetaDir .web # # Resposta de erros personalizada (no estilo do Apache) # estas podem ser 3 tipos: # # 1) texto plano #ErrorDocument 500 "O servidor fez boo boo. # n.b. a aspa (") marca como texto, ela n�o ser� exibida # # 2) redirecionamentos locais #ErrorDocument 404 /missing.html # para redirecionar para a URL local /missing.html #ErrorDocument 404 /cgi-bin/missing_handler.pl # N.B.: � tamb�m poss�vel redirecionar a um script o documento usando includes # do lado do servidor (server-side-includes). # # 3) redirecionamentos externos #ErrorDocument 402 http://algum.outro_servidor.com/inscricao.html # N.B.: Muitas das vari�veis de ambientes associada com a requisi��o atual *n�o*

# estar�o dispon�veis para tal script. # # O m�dulo mod_mime_magic permite o servidor usar v�rias dicas atrav�s do conte�do # do arquivo para determinar o seu tipo. A diretiva MIMEMagicFile diz ao m�dulo # onde as defini��es de dicas est�o localizadas. O m�dulo mod_mime_magic n�o � # parte do servidor padr�o Apache (voc� precisar� adiciona-lo manualmente com # uma linha LoadModule (veja o par�grafo DSO na se��o Ambiente Global no # arquivo httpd.conf), ou recompile o servidor e inclua mod_mime_magic como # parte de sua configura��o), por este motivo ele est� entre as condicionais # . Isto significa que a diretiva MIMEMagicFile somente ser� processada # caso o m�dulo estiver ativo no servidor. # MIMEMagicFile conf/magic # # As seguintes diretivas modificam o funcionamento da resposta normal do # servidor HTTP. # A primeira diretiva desativa o keepalive para o Netscape 2.x e navegadores que # as falsificam. Existem problemas conhecidos com estas implementa��es de # navegadores. A segunda diretiva � para o MS IE 4.0b2 que tem uma implementa��o # defeituosa do HTTP/1.1 e n�o suporta adequadamente o keepalive quando ele # utiliza as respostas de redirecionamento 301 e 302. # BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 # # As seguintes diretivas desativam as respostas HTTP/1.1 para navegadores que # violam a especifica��o HTTP/1.0 n�o sendo capaz de enviar uma resposta # 1.1 b�sica. # BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 # Se o m�dulo Perl est� instalado, isto ser� ativado. Alias /perl/ /var/www/perl/ Options +ExecCGI SetHandler perl-script PerlHandler Apache::Registry 11.14.3. access.conf -------------------# access.conf: Configura��o de acesso Global # Documentos on-line em http://www.apache.org/

# Este arquivo define as configura��es do servidor que afetam que tipos de # servi�os s�o permitidos e em quais circunst�ncias. # Cada diret�rio que o Apache possui acesso, pode ser configurado respectivamente # com quais servi�os e caracter�sticas que podem ser permitidas e/ou bloqueadas # no diret�rio (e seus subdiret�rios). # # Primeiro a configura��o restringe uma s�rie de permiss�es Options SymLinksIfOwnerMatch AllowOverride None # Order deny,allow # Deny from all # Desse ponto em diante, � necess�rio especificar o que ser� permitido # caso contr�rio ser� bloqueado pelo bloco acima # Esta parte deve ser modificada para a localiza��o do documento ra�z do servidor. # # # # #

A op��o Options pode conter os valores "None", "All", ou quaisquer combina��o de "Indexes", "Includes", "FollowSymLinks", "ExecCGI", ou "MultiViews". Note que "MultiViews" deve ser *explicitamente* especificada --- "Options All" n�o a ativa (pelo menos n�o ainda).

Options Indexes FollowSymLinks Includes MultiViews # Esta op��o controla que op��es os arquivos .htaccess nos diret�rios podem ser # substitu�das. Pode tamb�m conter "All", ou qualquer combina��o de "Options", # "FileInfo", "AuthConfig", e "Limit" AllowOverride None # Controla quem pode obter materiais deste servidor. Leia a se��o adequada no # guia para mais explica��es sobre a ordem de acesso, padr�es e valores permitidos. order allow,deny allow from all
# # O diret�rio "/usr/lib/cgi-bin" deve ser modificado para o diret�rio que # possuem seus scripts CGI, caso tenha configurado o suporte a CGI's no # servidor. # AllowOverride None Options ExecCGI Order allow,deny Allow from all

# # Permite ver relat�rios de status e funcionamento do servidor web e # processos filhos, atrav�s da URL http://servidor/server-status # isto requer o m�dulo status_module (mod_status.c) carregado no arquivo # httpd.conf # # # SetHandler server-status # Order deny,allow # Deny from all # Allow from .meudominio.org # # # Permite relat�rio de configura��o remota do servidor, atrav�s da URL # http://servername/server-info # Isto requer o m�dulo info_module (mod_info.c) carregado no arquivo # httpd.conf # # # SetHandler server-info # Order deny,allow # Deny from all # Allow from .meudominio.org # # Visualiza��o do diret�rio de �cones Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all # O Debian Policy assume que /usr/doc � "/doc/" e linkado com /usr/share/doc, # pelo menos para localhost. Options Indexes FollowSymLinks order deny,allow deny from all allow from 192.168.1.10/24 # Esta define a localiza��o visualiz�vel do monitor de status mod_throttle # SetHandler throttle-info # # # # # # #

As seguintes linhas previnem os arquivos .htaccess de serem mostrados nos clientes Web. Pois os arquivos .htaccess freq�entemente cont�m detalhes de autoriza��o, o acesso � desabilitado por raz�es de seguran�a. Comente estas linhas se desejar que seus visitantes vejam o conte�do dos arquivos .htaccess. Se modificar a diretiva AccessFileName acima, tenha certeza de fazer as modifica��es correspondentes aqui.

# # As pessoas tamb�m tendem a usar nomes como .htpasswd nos arquivos de senhas # a diretiva abaixo os proteger� tamb�m. # Order allow,deny Deny from all # # Controla o acesso a diret�rios UserDir. As seguintes diretivas s�o um exemplo # para um site onde estes diret�rios est�o restritos a somente-leitura. Veja # detalhes sobre as op��es de acesso, e limites na se��o sobre controle # de acesso do guia # AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Order allow,deny Allow from all Order deny,allow Deny from all # # As vezes ocorrem relatos de pessoas tentando abusar de uma falha antiga nos # dias do Apache 1.1 (muitas p�ginas na Net documentam isso). Esta falha envolve # um script CGI distribu�do como parte do Apache. Descomentando estas linhas voc� # poder� redirecionar estes ataques a um script de registro em phf.apache.org. Ou # poder� gravar em sua pr�pria m�quina, usando o script support/phf_abuse_log.cgi. # # # Deny from all # ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi # # Acesso aos servi�os proxy do apache # # Order deny,allow # Deny from all # Allow from .your_domain.com # # a seguinte diretiva permite o acesso a todos os usu�rios ao conte�do da p�gina # do guia Foca GNU/Linux exceto os que possuem navegadores MSIE ;-) # Veja a se��o sobre restri��es de acesso para detalhes sobre a diretiva de # controle de acesso baseado no user-agent SetEnvIf User-Agent MSIE EXPLODER Options Indexes Order allow,deny allow from all deny from env=EXPLODER

ErrorDocument 403 "Explorer n�o entra, p�gina com o conte�do potencialmente perigoso ao Windows, use um navegador seguro para ter acesso a esta p�gina ;-)
# A diretiva abaixo somente permite acesso a leitura do arquivo # h-supor-fonte.txt a pessoas que fornecerem o nome/senha corretos # que constam no arquivo passwd1 # Este bloco cont�m um erro que � a localiza��o do arquivo da senha em um # diret�rio p�blico, voc� dever� adapta-lo se n�o quiser se ver em apuros. # # A permiss�o do diret�rio de n�vel superior prevalece sobre seus # sub-diret�rios no caso as permiss�es de /focalinux, a menos que # sejam definidas op��es de acesso espec�ficas ao arquivo abaixo AuthName "Piada de fonte de alimenta��o" AuthType basic AuthUserFile /home/gleydson/public_html/passwd1 Require valid-user # Satisfy all # Libera o acesso a localiza��o /debian (acessada atrav�s de /pub/mirror/debian, # definida no Alias acima) Options Indexes Order deny,allow allow from all deny from all 11.15. C�digos HTTP ------------------Esta se��o pode ser uma interessante refer�ncia para a programa��o e configura��o da diretiva _ErrorDocument_, etc. 2xx - Sucesso * `200' OK * `201' Criado * `202' Aceito * `203' Informa��o n�o-autoritativa * * `204' Nenhum conte�do * `205' Conte�do resetado * * `206' Conte�do parcial * 3xx - Redirecionamento * `300' M�ltiplas escolhas * `301' Movido Permanentemente * `302' Movido Temporariamente * `303' Veja outra * * `304' N�o modificada * `305' Use o Proxy (redirecionamento proxy) * 4xx - Erros no Cliente * `400' Requisi��o incorreta * `401' N�o autorizado * `402' Pagamento Requerido * * `403' Bloqueado * `404' N�o encontrada * `405' M�todo n�o permitido *

* `406' N�o aceit�vel * * `407' Autentica��o via proxy requerida * * `408' Tempo limite da requisi��o expirado * * `409' Conflito * * `410' Gone * * `411' Tamanho requerido * * `412' Falha na pr�-condi��o * * `413' A requisi��o parece ser grande * * `414' A URL requisitada � muito longa * * `415' Tipo de m�dia n�o suportado 5xx - Erros no Servidor * `500' Erro Interno no Servidor * `501' N�o implementado * `502' Gateway incorreto * `503' Servi�o n�o dispon�vel * `504' Tempo limite no gateway * * `505' Vers�o HTTP n�o suportada * Os c�digos de erros marcados com um "*" pertencem ao padr�o HTTP 1.1 ------------------------------------------------------------------------------12. Servidor ident -----------------Este cap�tulo documenta o uso, benef�cios, configura��o, utiliza��o e exemplos do servidor identd. Tamb�m s�o explicados alguns pontos positivos/negativos de sua utiliza��o para aumentar a seguran�a quando usado junto com o mecanismo de controle de acesso. O servidor identd escolhido para ser descrito nesta se��o do guia foi o `oidentd'. 12.1. Introdu��o ---------------O ident (identidade) � um servidor que permite identificar qual o usu�rio efetuou determinada conex�o e o sistema operacional usado. Ele opera na porta `113' por padr�o e retorna nomes de usu�rios localmente v�lidos, e � consultado por servi�os conhecidos como `IRC', alguns servidores `ftp', `smtp' e outros. Outro benef�cio � a utiliza��o de mecanismos de restri��es de acesso baseadas em usu�rios/endere�oIP (o `tcpd' � um exemplo de servi�o que permite esta caracter�stica). A sintaxe usada para fazer tal restri��o � universal: _usu�rio@endere�oIP_ onde normalmente aparece o _endere�oIP_ que � usado para bloquear/permitir o acesso. No momento da conex�o, o endere�o IP � checado pra ver se confere, e o servidor Ident da m�quina que est� efetuando a conex�o � consultado para checar se o usu�rio que tem acesso � o mesmo especificado no controle de acesso. Isso aumenta um pouco a seguran�a do sistema, mas existem algumas implica��es e pontos fr�geis do `identd' que ser�o explicados no decorrer deste cap�tulo. 12.1.1. Vers�o --------------

� assumido que esteja usando a vers�o 1.7 do `oidentd'. As explica��es contidas aqui podem funcionar para vers�es posteriores, mas � recomend�vel que leia a documenta��o sobre modifica��es no programa (changelog) em busca de mudan�as que alterem o sentido das explica��es fornecidas aqui. 12.1.2. Contribuindo -------------------A Homepage do projeto `oidentd' � `http://ojnk.sourceforge.net' Sugest�es, cr�ticas, coment�rios, etc., podem ser enviados para . 12.1.3. Caracter�sticas ----------------------Caracter�sticas do `oidentd': * Pode ser executado tanto como _daemon_ quanto via _inetd_ (este �ltimo � indicado para sistemas com pouca mem�ria onde o servi�o � pouco solicitado). * Pode mapear identifica��es de usu�rio via IP Masquerading, tornando este servidor muito vers�til podendo ser usado tanto em m�quina individuais como em servidores proxy/roteadores. * Pode fazer forwarding de conex�es para outras m�quinas da rede local, quando n�o � executado no proxy/roteador. * Spoofing de nomes: � poss�vel mapear um nome de usu�rio para outra identifica��o; por exemplo, o usu�rio `root' poder� ser mapeado para outra conta de usu�rio antes da identifica��o ser enviada. 12.1.4. Ficha t�cnica --------------------Pacote: `oidentd' Utilit�rios: * `oidentd' - Servidor identd Arquivos de configura��o do `oidentd': identd.spoof Controla o spoof (falsifica��o) de nomes de usu�rios. O formato deste arquivo s�o dois campos separados por ":", o primeiro contendo a identifica��o original do usu�rio e o segundo o nome que ser� enviado pelo `identd'. O segundo campo pode ser omitido, neste caso a resposta de identifica��o � lida atrav�s do arquivo `~/.ispoof'. Este arquivo deve ter como dono o usu�rio do primeiro campo do `identd.spoof' e a identifica��o retornada ser� a contida no arquivo. Esteja certo que o daemon `oidentd' tem permiss�es para acessar este arquivo, caso contr�rio nenhum spoof de identidade ser� realizado. Para o spoof ser habilitado, o servi�o `oidentd' dever� ser iniciado com a op��o _-s_ ou _-S_ (veja mais detalhes Se��o 12.1.11, `Op��es de linha de comando'). _OBS:_ Certifique-se de colocar as permiss�es adequadas para que somente o daemon _oidentd_ tenha acesso a este arquivo (de acordo com o _usu�rio_ e _grupo_ usado para executar o `oidentd'), os detalhes de mapeamento de nomes podem ser perigosos em m�os

erradas, e garantir o sucesso de uma conex�o indesej�vel. oidentd.users Mapeamento de nomes de usu�rios efetuando conex�es via Masquerading. O formato deste arquivo � o seguinte: #Endere�oIP/m�scara Usu�rio Sistema 192.168.1.1 john WINDOWS 192.168.1.2 usuario1 WINDOWS 192.168.1.1/32 usuario2 UNIX 192.168.1.0/24 usuario3 UNIX 192.168.1.0/16 usuario4 UNIX As conex�es vindas dos endere�os da primeira coluna s�o mapeados para o nome/sistema da segunda/terceira coluna e enviados a m�quina que requisitou a identifica��o. Para o suporta a mapeamento de usu�rios via Masquerading funcionar, o daemon `oidentd' dever� ser iniciado com a op��o _-m_. 12.1.5. Requerimentos de Hardware --------------------------------O `oidentd' requer pouca mem�ria e pode ser executado sem problemas em um sistema com o m�nimo de mem�ria necess�ria para rodar o kernel do `Linux' (2 MB para 2.2 e 4MB para as s�ries 2.4 do kernel). Mesmo assim � interessante considerar 1 MB a mais que o m�nimo requerido pelo kernel para uma folga na execu��o do servi�o de identifica��o junto a outros do sistema. 12.1.6. Arquivos de log criados pelo Ident -----------------------------------------Mensagens informativas, erros, e outras sobre execu��es do servi�o `oidentd' s�o enviadas ao `syslog' do sistema. 12.1.7. Instala��o -----------------Para instalar o daemon do `oidentd' digite: apt-get install oidentd Por padr�o o servi�o � instalado para ser executado como daemon, para executa-lo atrav�s do `inetd' siga os passos em Se��o 12.1.8, `Instala��o via Inetd'. O servi�o ser� executado sob o usu�rio `nobody' e grupo `nogroup' por motivos de seguran�a, altera��es de nome/grupo que executar� o `oidentd' podem ser feitas no arquivo `/etc/defaults/oidentd' ou `/etc/init.d/oidentd'. 12.1.8. Instala��o via Inetd ---------------------------Siga os procedimentos de instala��o em Se��o 12.1.7, `Instala��o' e os seguintes passos: 1. Edite o arquivo `/etc/inetd.conf' e adicione a seguinte linha: #:INFO: Info services auth stream tcp nowait.40 nobody.nogroup /usr/sbin/oidentd oidentd -q -i -t 40 A op��o _-i_ permite o `oidentd' aceitar requisi��es via `inetd' (sem ela ele ser� executado no modo daemon). As op��es _-s_ e _-m_ devem tamb�m ser especificadas caso desejar os recursos de

2. 3.

4.

falsifica��o de identifica��o (mapeamento de nomes) e masquerading (veja Se��o 12.1.11, `Op��es de linha de comando'). Aqui foi definido um par�metro m�ximo de 40 requisi��es por minuto (t�pico de um servi�o poucos usado no sistema), caso este limite seja ultrapassado o servi�o ser� desativado na se��o atual do `inetd'. Os outros campos s�o descritos em Se��o 4.7.2.1, `/etc/inetd.conf'). Interrompa a execu��o do daemon do `oidentd' atual dando um `./etc/init.d/oidentd stop'. Remova os links dos runlevels em `/etc/rc?.d' que iniciam/interrompem a execu��o do daemon com o comando: `update-rc.d -f oidentd remove'. Neste ponto o daemon `oidentd' n�o ser� mais iniciado. Para reverter esta a��o, execute o comando: `udpate-rc.d oidentd defaults'. De um comando `killall -HUP inetd' para fazer o servi�o `inetd' recarregar o arquivo de configura��o `/etc/inetd.conf'. O servi�o de identd j� estar� funcionando.

_OBS:_ A configura��o da distribui��o `Debian' permite detectar quando o servi�o ident (auth) est� sendo executado no `/etc/inetd.conf' atrav�s de seus scripts de inicializa��o. Voc� poder� fazer as coisas manualmente baseado nisso se desejar. 12.1.9. Usando tcpwrappers com oidentd -------------------------------------Especifique a op��o _-W_ para fazer o `oidentd' utilizar o mecanismo de acesso em `hosts.allow' e `hosts.deny' para garantir/bloquear ao servi�o de acordo com endere�os/hosts especificados. _OBS_ O `oidentd' � somente executado ap�s a confer�ncia de todos os par�metros de endere�os nestes arquivos de acesso, n�o utilize a sintaxe "usu�rio@endere�o" como endere�o na linha de acesso do servi�o `oidentd' (por motivos �bvios). 12.1.10. Iniciando o servidor/reiniciando/recarregando a configura��o --------------------------------------------------------------------O arquivo que controla o funcionamento do daemon do `oidentd' � controlado pelo arquivo `/etc/init.d/oidentd'. Utilize os m�todos descritos em Se��o 6.3, `Arquivos de inicializa��o' e Se��o 6.4, `N�veis de Execu��o' para entender como iniciar/interromper os servi�os e a organiza��o SYSTEM 5. A execu��o do `oidentd' atrav�s de `inetd' � autom�tica quando � feita uma requisi��o para a porta _113_. 12.1.11. Op��es de linha de comando ----------------------------------Op��es de linha de comando do `oidentd': * `-a [endere�oIP]' - Espera por requisi��es somente no nome ou endere�o IP da interface especificada. * `-A' Quando o spoofing esta ativado, permite os usu�rios falsificaram o ident em conex�es para portas privilegiadas. * `-c [p�ginacodigo]' - Especifica uma p�gina de c�digo alternativa. O padr�o � "US-ASCII". * `-d' - Ativa o modo de depura��o, mais detalhes ser�o exibidos.

* `-e' - Retorna "UNKNOWN-ERROR" (erro desconhecido) para qualquer tipo de erro. * `-f [porta]' - Redireciona requisi��es de m�quinas usando MASQUERADE para o computador na porta especificada. * `-F' - O mesmo que _-f_, mas usa a porta 113 como padr�o. * `-g [gid]' - Executa o daemon do `oidentd' no grupo especificado. * `-i' - Permite ser executado atrav�s do `inetd'. * `-m' - Ativa o suporta a IP Masquerading. * `-n' - Retorna n�meros UID ao inv�s de nomes de usu�rios. * `-N' - Permite ocultar a identifica��o de determinados usu�rios atrav�s de arquivos `~/.noident'. * `-o' - Retorna "OTHER" (outro qualquer) ao inv�s do sistema operacional especificado. * `-p [porta]' - Espera por conex�es na porta especificadas (a padr�o � a 113 - servi�o auth). * `-q' - Oculta o logging normal. * `-P [proxy]' - O proxy especificado (endere�o IP) faz redirecionamento de conex�es para a m�quina executando o `oidentd'. * `-r' - Retorna respostas aleat�rias de identd. As op��es _-n_ e _-r_ n�o podem ser usadas juntas. * `-s' - Permite utilizar os mecanismos de spoofing (falsifica��o) do `oidentd'. * `-S' - O mesmo que _-s_ mas permitem todos os usu�rios EXCETO os especificados em `/etc/identd.spoof' falsificarem suas respostas. * `-t [segundos]' - Espera o tempo especificado antes de ser encerrado. * `-T [segundos]' - O `oidentd' permanecer� aceitando conex�es quando � executado com a op��o _-w_ pelo n�mero de segundos especificado. * `-u [uid]' - Executa o servidor `oidentd' com a uid especificada. * `-v/-V' - Mostra detalhes sobre a vers�o do servidor. * `-w' - Modo de espera de conex�es. * `-x [texto]' - Se uma requisi��o falha, o texto especificado � retornado. * `-W' - Utiliza os mecanismos de acesso `hosts.allow' e `hosts.deny' do `tcpd'. * `-h' - Mostra as op��es de linha de comando do `oidentd'. 12.1.12. Exemplos ----------------N�o faz muito sentido exemplos de arquivo de configura��o do `oidentd' por estes serem muito simples e estarem bem explicados em Se��o 12.1.4, `Ficha t�cnica'. No entanto acho interessante mostrar alguns exemplos de configura��es do `hosts.allow' e `hosts.deny' fazendo uso dos recursos de restri��es baseadas em usu�rio@endere�o : # Arquivo hosts.allow # # Permite requisi��es talk de qualquer lugar in.ntalkd: ALL in.talkd: ALL # # Permite que o usu�rio john acesse os servi�os de ftp de qualquer m�quina da # rede 191.168.1.* in.ftpd: [email protected]. #

# O servi�o telnet est� permitido somente para john conectando de 192.168.1.1 in.telnetd: [email protected] # Todos podem acessar os servi�os samba (nomes e compartilhamentos) exceto # o usu�rio evil conectando de qualquer host com o endere�o cracker.com.* smbd, nmbd: ALL EXCEPT [email protected]. # Arquivo hosts.deny # Qualquer finger � bloqueado exceto vindos do usu�rio admin feitos em qualquer # m�quina da rede 192.168.1.* in.fingerd: ALL EXCEPT [email protected]. # Qualquer outra coisa � bloqueada ALL: ALL ------------------------------------------------------------------------------13. Servidor telnet ------------------Este cap�tulo ensina como instalar, configurar, usar e fazer restri��es de acesso ao servidor telnet. Tamb�m � explicada a utiliza��o do cliente telnet e o suporte a criptografia (ssl). 13.1. Introdu��o ---------------O servi�o telnet � oferece o login remoto em seu computador, que lhe permite trabalhar conectado a dist�ncia como se estivesse em frente a ela. Ele substitui o `rlogin' e possui muitas melhorias em rela��o a ele, como o controle de acesso, personaliza��o de se��o e controle de terminal. 13.1.1. Vers�o -------------� assumido que esteja usando a vers�o 0.17.16 do `telnet'. As explica��es contidas aqui podem funcionar para vers�es posteriores, mas � recomend�vel que leia a documenta��o sobre modifica��es no programa (changelog) em busca de mudan�as que alterem o sentido das explica��es fornecidas aqui. 13.1.2. Caracter�sticas ----------------------* Conex�o r�pida (n�o utiliza transmiss�o de dados criptografada), recomendado para ambientes seguros. * Possui uma vers�o com suporte a criptografia via ssl. * Possui controle de acesso tcpd (usando `/etc/hosts.allow' e `/etc/hosts.deny'). * A maioria dos sistemas operacionais trazem este utilit�rio por padr�o como sistema de acesso remoto a m�quinas UNIX. * Suporte a terminais ANSI (cores e c�digos de escape especiais para o console) e uma grande variedade de outros terminais. 13.1.3. Ficha t�cnica

--------------------Pacotes: * `telnet' - Cliente telnet com suporte a autentica��o. * `telnetd' - Servidor telnet com suporte a autentica��o. * `telnet-ssl' - Cliente telnet com suporte a autentica��o e ssl. Tamb�m suporta conex�o a servidores telnet padr�o quando o servidor n�o suporta ssl. Por padr�o � tentada a conex�o usando ssl, se esta falhar ser� assumida a transmiss�o em texto plano. * `telnetd-ssl' - Servidor telnet com suporte a autentica��o e ssl. Tamb�m suporta conex�o de clientes telnet padr�o (sem suporte a ssl). Utilit�rios: * `in.telnetd' - Servidor telnet * `telnet' - Cliente telnet padr�o (quando o pacote `telnet-ssl' est� instalado, � simplesmente um link para `telnet-ssl'). * `telnet-ssl' - Cliente telnet com suporte a ssl. 13.1.4. Requerimentos de Hardware --------------------------------Normalmente o servidor telnet � carregado via inetd, o que permite sua utiliza��o em uma m�quina com a quantidade m�nima de mem�ria RAM requerida para o funcionamento do kernel: 2 MB para kernels da s�rie 2.2 e 4MB para kernels da s�rie 2.4. 13.1.5. Arquivos de log criados pelo servidor telnet ---------------------------------------------------Mensagens do servidor telnet relacionadas com se��es s�o enviadas para `/var/log/daemon.log'. Adicionalmente, as mensagens sobre autentica��o (servi�os de login) s�o registradas pelos m�dulos PAM em `/var/log/auth.log'. 13.1.6. Instala��o -----------------`apt-get install telnet telnetd' ou `apt-get install telnet-ssl telnetd-ssl'. Os pacotes com o `-ssl' no final possuem suporte a criptografia ssl. Por padr�o a porta usada para executar o servi�o telnet � a 23 (ou outro n�mero de porta definido no `/etc/services'). A instala��o do servidor telnet � feita via inetd (no arquivo `/etc/inetd.conf') e o controle de acesso ao servi�o � feito atrav�s dos arquivos `/etc/hosts.allow' e `/etc/hosts.deny' (veja Se��o 4.7.2, `Servi�os iniciados atrav�s do inetd' e Se��o 4.8.3, `O mecanismo de controle de acessos tcpd'). O servidor tem o nome `in.telnetd' e este dever� ser usado para ajustar o controle de acesso nos arquivos acima. 13.1.7. Iniciando o servidor/reiniciando/recarregando a configura��o -------------------------------------------------------------------O arquivo que controla o funcionamento do servidor `telnet' � o `/etc/inetd.conf' e o controle de acesso sendo feito pelos arquivos `/etc/hosts.allow' e `/etc/hosts.deny'. Ser� necess�rio reiniciar o

servidor `inetd' caso algum destes tr�s arquivos seja modificado: `killall -HUP inetd'. A porta de opera��o padr�o � a 23 e pode ser modificada no arquivo `/etc/services'. 13.1.8. Op��es de linha de comando ---------------------------------Op��es de linha de comando do servidor `telnetd': * `-D n�vel_de_depura��o' - Permite especificar o que ser� registrado pelo servidor durante a conex�o dos clientes telnet. As seguintes op��es s�o suportadas: * `options' - Mostra detalhes sobre a negocia��o das op��es de conex�o. * `report' - Mostra detalhe de op��es e o que est� sendo feito. * `netdata' - Mostra os dados transferidos na conex�o telnetd. * `ptydata' - Mostra os dados mostrados na pty. * `-edebug' - Ativa a depura��o do c�digo de criptografia apenas para o servidor telnet com suporte a ssl. * `-h' - Somente mostra os detalhes de configura��o do seu PC ap�s o usu�rio fornecer um nome/senha v�lidos. * `-L [programa]' - Utiliza o programa especificado para fazer o login do usu�rio (`/usr/sbin/telnetlogin' � o padr�o). * `-n' - N�o envia pacotes keep alive para verificar o estado da conex�o. Desativando esta op��o poder� fazer o servidor ficar rodando constantemente caso aconte�a algum problema e o usu�rio n�o consiga se desconectar normalmente. * `-S TOS' - Ajusta o tipo de servi�o usado na conex�o para o valor especificado (veja Se��o 9.5.1, `Especificando o tipo de servi�o' para maiores detalhes sobre esta op��o e os valores aceitos). Estas op��es dever�o ser especificadas ap�s o servidor `in.telnetd' no arquivo `/etc/inetd.conf'. 13.2. Controle de acesso -----------------------� feito pelos arquivos `hosts.allow' e `hosts.deny'. 4.8.3, `O mecanismo de controle de acessos tcpd'.

Veja Se��o

13.3. Recomenda��es ------------------O servi�o telnet utiliza texto plano para se��o (exceto nas vers�es cliente/servidor "-ssl"). Os dados transmitidos por servi�os que utilizam texto plano podem ser capturados por sniffers e trazer perigo ao seu sistema (veja Se��o 17.2, `Sniffer'). � recomend�vel somente executar o servidor telnet padr�o em ambientes seguros (como em uma rede interna) e a vers�o com suporte a ssl para fazer conex�es via redes inseguras (como a Internet). O servi�o `ssh' (Cap�tulo 14, `Servidor ssh') � uma excelente alternativa ao telnet, al�m de possuir outras caracter�sticas adicionais que justifiquem seu uso, al�m de programas cliente para `Linux' e `Windows'. 13.4. Fazendo conex�es ao servidor telnet

----------------------------------------Use o comando: `telnet [endere�o] [porta]' para realizar conex�es com uma m�quina rodando o servidor telnet. Adicionalmente as seguintes op��es podem ser usadas: * `-l [usuario]' - Envia o nome de usu�rio ao computador remoto. Muito �til com o `telnet-ssl'. * `-E' - Desativa o caracter de escape * `-a' - Tenta fazer o login autom�tico usando o nome de usu�rio local. Se o login falhar, ser� solicitado o nome de usu�rio. Esta op��o � usada por padr�o com o cliente `telnet-ssl'. * `-r' - Emula o comportamento do programa `rlogin'. Exemplos: # Conecta-se ao servidor telnet rodando na porta 23 de sua pr�pria m�quina telnet localhost # Conecta-se ao servidor telnet 200.200.200.200 operando na porta 53454 usando o # nome de usu�rio john telnet -l john 200.200.200.200 53454 ------------------------------------------------------------------------------14. Servidor ssh ---------------Este cap�tulo documenta a instala��o, configura��o e personaliza��o do servidor de shell seguro `sshd', al�m de explicar as vantagens da utiliza��o dos servi�os criptogr�ficos. A utiliza��o do programa cliente `ssh' tamb�m � explicada, al�m de utilit�rios usados para gera��o de chaves p�blica/privada para o `ssh' (autentica��o RSA/DAS o que �, vantagens), c�pia de arquivos e m�todos de autentica��o usando o m�todo de chave p�blica/privada RSA. Ambas as vers�es 1 e 2 do ssh s�o documentadas neste cap�tulo. espec�ficas do protocolo 1 ou 2 do ssh ser�o destacadas.

Op��es

14.1. Introdu��o ---------------O servi�o de `ssh' permite fazer o acesso remoto ao console de sua m�quina, em outras palavras, voc� poder� acessar sua m�quina como se estivesse conectado localmente ao seu console (substituindo o `rlogin' e `rsh'). A principal diferen�a com rela��o ao servi�o `telnet' padr�o, `rlogin' e `rsh' � que toda a comunica��o entre cliente/servidor � feita de forma encriptada usando chaves p�blicas/privadas RSA para criptografia garantindo uma transfer�ncia segura de dados. A velocidade do console remoto conectado via Internet � excelente (melhor que a obtida pelo `telnet' e servi�os r*) dando a impress�o de uma conex�o em tempo real (mesmo em links discados de 9.600 KB/s), a compacta��o dos dados tamb�m pode ser ativada para elevar ainda mais a velocidade entre cliente-servidor ssh. Al�m do servi�o de acesso

remoto, o `scp' possibilita a transfer�ncia/recep��o segura de arquivos (substituindo o `rcp'). Em conex�es sem criptografia (rsh, rlogin) os dados trafegam de forma desprotegida e caso exista algum sniffer instalado em sua rota com a m�quina destino, todo o que fizer poder� ser capturado (incluindo senhas). 14.1.1. Vers�o -------------� assumido que esteja usando a vers�o 2.0 do `ssh'. As explica��es contidas aqui podem funcionar para vers�es posteriores, mas � recomend�vel que leia a documenta��o sobre modifica��es no programa (changelog) em busca de mudan�as que alterem o sentido das explica��es fornecidas aqui. 14.1.2. Hist�ria ---------------O `openSSH' (explicado neste cap�tulo) � baseado na �ltima vers�o livre do implementa��o de Tatu Ylonen com todos os algoritmos patenteados (para bibliotecas externas) removidos, todos as falhas de seguran�a corrigidas, novas caracter�sticas e muitas outras melhorias. O openSSH foi criado por Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt e Dug Song. 14.1.3. Contribuindo -------------------A Homepage principal � http://www.unixuser.org/~haruyama/security/openssh/index.html. Falhas, corre��es e sugest�es podem ser enviadas para a lista de discuss�o (aberta a postagens de usu�rios n�o inscritos). 14.1.4. Caracter�sticas ----------------------Abaixo as principais caracter�sticas do servi�o `ssh' (`Openssh'). * Conex�o de dados criptografada entre cliente/servidor. * C�pia de arquivos usando conex�o criptografada. * Suporte a ftp criptografado (sftp). * Suporte a compacta��o de dados entre cliente/servidor. * Controle de acesso das interfaces servidas pelo servidor `ssh'. * Suporte a controle de acesso tcp wrappers. * Autentica��o usando um par de chaves p�blica/privada RSA ou DSA. * Algoritmo de criptografia livre de patentes. * Suporte a PAM. * Suporte a caracteres ANSI (cores e c�digos de escape especiais no console). 14.1.5. Ficha t�cnica --------------------Pacote: `ssh' Utilit�rios:

* * * *

`ssh' - Cliente ssh (console remoto). `slogin' - Link simb�lico para o programa `ssh'. `sshd' - Servidor de shell seguro ssh. `scp' - Programa para transfer�ncia de arquivos entre cliente/servidor * `ssh-keygen' - Gera chaves de autentica��o para o ssh * `sftp' - Cliente ftp com suporte a comunica��o segura. * `sftp-server' - Servidor ftp com suporte a comunica��o segura. * `ssh-add' - Adiciona chaves de autentica��o DSA ou RSA ao programa de autentica��o. * `ssh-agent' - Agente de autentica��o, sua fun��o � armazenar a chave privada para autentica��o via chave p�blica (DSA ou RSA). * `ssh-keyscan' - Scaneia por chaves p�blicas de autentica��o de hosts especificados. O principal objetivo � ajudar na constru��o do arquivo local `know_hosts'. * `ssh-copy-id' - Usado para instala��o do arquivo `identity.pub' em uma m�quina remota. Arquivos de configura��o: * `/etc/ssh/sshd_config' - Arquivo de configura��o do servidor ssh. * `/etc/ssh/ssh_config' - Arquivo de configura��o do cliente ssh. * `~/.ssh/config' - Arquivo de configura��o pessoal do cliente ssh. 14.1.6. Requerimentos de Hardware --------------------------------� recomendado no m�nimo 6MB de mem�ria RAM para a execu��o do servi�o `ssh' mais o kernel do `Linux'. Este limite deve ser redimensionado para servidores de acesso dedicado, uma quantidade de 64MB deve ser confort�vel para centenas de usu�rios conectados simultaneamente (o que raramente acontece). Veja tamb�m Cap�tulo 16, `Restri��es de recursos/servi�os' para configura��o de restri��es usando PAM. O `ssh' que acompanha a distribui��o `Debian' vem com o suporte a tcp wrappers compilado por padr�o. 14.1.7. Arquivos de log criados pelo servidor ssh ------------------------------------------------Detalhes sobre a execu��o do servidor `sshd' (como inicio, autentica��o e t�rmino) s�o enviadas ao `syslog' do sistema. A _prioridade_ e _n�vel_ s�o definidos no arquivo de configura��o `/etc/ssh/sshd_config' (veja Se��o 14.3.5, `Exemplo de `sshd_config' com explica��es das diretivas'). 14.1.8. Instala��o do servidor openSSH -------------------------------------`apt-get install ssh'. Por padr�o o servidor `sshd' � instalado como daemon, tamb�m � poss�vel executa-lo via `inetd' mas isto n�o � aconselh�vel porque o servidor gera uma chave aleat�ria de se��o toda vez que � iniciado, isto podendo levar v�rios segundos (quando � usada a vers�o 1 do protocolo ssh, veja Se��o 14.3.4, `Diferen�as nas vers�es do protocolo'). 14.1.9. Iniciando o servidor/reiniciando/recarregando a configura��o

-------------------------------------------------------------------O arquivo que controla o funcionamento do daemon do `ssh' � controlado pelo arquivo `/etc/init.d/ssh'. Utilize os m�todos descritos em Se��o 6.3, `Arquivos de inicializa��o' e Se��o 6.4, `N�veis de Execu��o' para entender como iniciar/interromper os servi�os e a organiza��o SYSTEM 5. A execu��o do `ssh' atrav�s de `inetd' � autom�tica quando � feita uma requisi��o para a porta _22_. 14.1.10. Op��es de linha de comando ----------------------------------Op��es de linha de comando do servidor `sshd': * `-b bits' - Especifica o n�mero de bits da chave do servidor (768 por padr�o). * `-d' - Modo de depura��o - O servidor envia detalhes sobre seu funcionamento aos logs do sistema e n�o � executado em segundo plano. Ele tamb�m responder� conex�es pelo mesmo processo. Podem ser usadas no m�ximo 3 op��es _-d_ para aumentar os detalhes de depura��o. * `-f arquivo_configura��o' Indica um arquivo de configura��o alternativo (por padr�o � usado `/etc/ssh/sshd_config'). O `ssh' pode ser configurado atrav�s de op��es de linha de comando mas requer um arquivo de configura��o para ser executado. Op��es de linha de comando substituem as especificadas no arquivo de configura��o. * `-g segundos' - Especifica o tempo m�ximo para a digita��o de senha de acesso. Ap�s o tempo especificado o servidor encerra a conex�o. O valor padr�o � 600 segundos e 0 desativa este recurso. * `-h arquivo_chave' - Diz qual arquivo cont�m a chave privada local. O padr�o � `/etc/ssh/ssh_host_key' e somente o usu�rio `root' deve ter permiss�es de leitura neste arquivo. Ser� necess�rio especificar esta op��o caso o `sshd' n�o esteja sendo executado como usu�rio `root'. � poss�vel ter m�ltiplos arquivos de chaves para os protocolos 1 e 2 do ssh. * `-i' - Indica que o servidor `sshd' ser� executado pelo `inetd'. Isto n�o � aconselh�vel porque o servidor gerar� a chave aleat�ria de se��o toda vez que for iniciado e isto pode levar alguns segundos. Esta op��o pode se tornar vi�vel com o uso do protocolo 2 ou criando chaves pequenas como 512 bytes (no ssh 1), mas a seguran�a criptogr�fica tamb�m ser� diminu�da. Veja as diferen�as entre os dois protocolos em Se��o 14.3.4, `Diferen�as nas vers�es do protocolo'. * `-k segundos' - Especifica a freq��ncia da gera��o de novas chaves do daemon `sshd'. O valor padr�o � 3600 segundos e 0 desativa este recurso. _ATEN��O:_ N�O desative este recurso!!! Esta op��o traz a seguran�a que uma nova chave gerada de servidor ser� gerada constantemente (esta chave � enviada junto com a chave p�blica quando o cliente conecta e fica residente na mem�ria vol�til), assim mesmo que um cracker consiga obt�-la interceptando as conex�es, ser� praticamente imposs�vel tentar qualquer coisa. Valores menores tendem a aumentar ainda mais a seguran�a. * `-p porta' - Especifica a porta que o daemon `sshd' atender� as

requisi��es. Por padr�o � usada a porta 22. * `-q' - Nenhuma mensagem ser� enviada ao `syslog' do sistema. * `-u tam' - Especifica o tamanho do campo de nome do computador que ser� armazenado no arquivo `utmp'. A op��o _u0_ faz somente endere�os IP serem gravados. * `-D' - Quando usada n�o faz o `sshd' iniciar em segundo plano. * `-V vers�o_cliente' - Assume que o cliente possui a vers�o ssh especificada (1 ou 2) e n�o faz os testes de identifica��o de protocolo. * `-4' - For�a o uso do protocolo IP tradicional (IPv4). * `-6' - For�a o uso da nova gera��o do protocolo IP (IPv6). A maioria das op��es s�o realmente �teis para modificar o comportamento do servidor `ssh' sem mexer em seu arquivo de configura��o (para fins de testes) ou para executar um servidor `ssh' pessoal, que dever� ter arquivos de configura��o espec�ficos. 14.2. Usando aplicativos clientes --------------------------------Esta se��o explicar� o uso dos utilit�rios `ssh', `scp' e `sftp'. 14.2.1. ssh ----------Esta � a ferramenta usada para se��es de console remotos. O arquivo de configura��o de usu�rios � `~/.ssh/config' e o arquivo global `/etc/ssh/ssh_config'. Para conectar a um servidor ssh remoto: ssh ip/nome_do_servidor_ssh O uso da op��o _-C_ � recomendado para ativar o modo de compacta��o dos dados (�til em conex�es lentas). A op��o _-l usu�rio_ pode ser usada para alterar a identifica��o de usu�rio (quando n�o � usada, o login local � usado como nome de usu�rio remoto). Uma porta alternativa pode ser especificada usando a op��o _-p porta_ (a 22 � usada por padr�o). Na primeira conex�o, a chave p�blica do servidor remoto ser� gravada em `~/.ssh/know_hosts' ou `~/.ssh/know_hosts2' (dependendo da vers�o do servidor `ssh' remoto, veja Se��o 14.3.4, `Diferen�as nas vers�es do protocolo'), e verificada a cada conex�o como checagem de seguran�a para se certificar que o servidor n�o foi alvo de qualquer ataque ou modifica��o n�o autorizada das chaves. Por padr�o, o cliente utilizar� o protocolo ssh vers�o 1, a op��o _-2_ permite usar o protocolo vers�o 2. Vari�veis de ambiente personalizadas para o `ssh' poder�o ser definidas no arquivo `~/.ssh/environment'. Comandos que ser�o executados somente na conex�o ssh em `~/.ssh/rc' e `/etc/ssh/sshrc' caso contr�rio ser� executado o `xauth' por padr�o. _OBS:_ Para utilizar autentica��o Rhosts/Rhosts+RSA (arquivos `~/.rhosts'/`~/.shosts') o programa `ssh' dever� ter permiss�es SUID root e conectar� usando portas baixas (menores que 1024). Exemplos: # Conecta-se ao servidor remoto usando o login do usu�rio atual

ssh ftp.sshserver.org # Conecta-se ao servidor remoto usando o login john (via ssh vers�o 2) ssh -2 ftp.sshserver.org -l john # Conecta-se ao servidor remoto usando compacta��o e o login john ssh ftp.sshserver.org -C -l john # Conecta-se ao servidor remoto usando compacta��o, o login john, # ativa o redirecionamento do agente de autentica��o (-A) e redirecionamento # de conex�es X11 (-X). Veja a pr�xima se��o para entender como o # suporte a redirecionamento de conex�es do X funciona. ssh ftp.sshserver.org -C -A -X -l john 14.2.1.1. Redirecionamento de conex�es do X ------------------------------------------O redirecionamento de conex�es do X Window poder� ser habilitado em `~/.ssh/config' ou `/etc/ssh/ssh_config' ou usando as op��es _-A -X_ na linha de comando do `ssh' (as op��es _-a_ e _-x_ desativam as op��es acima respectivamente). Uma vari�vel <$DISPLAY> � criada automaticamente para fazer o redirecionamento ao servidor X local. Ao executar um aplicativo remoto, a conex�o � redirecionada a um DISPLAY proxy criado pelo ssh (a partir de `:10', por padr�o) que faz a conex�o com o display real do X (:0), ou seja, ele pular� os m�todos de autentica��o `xhost' e cookies. Por medidas de seguran�a � recomend�vel habilitar o redirecionamento individualmente somente se voc� confia no administrador do sistema remoto. # Exemplo de configura��o do ssh_config # Permite Redirecionamento de conex�es para o pr�prio computador (nomes de # m�quinas podem ser especificadas). Host 127.0.0.1 ForwardAgent yes ForwardX11 yes # Op��es espec�ficas do cliente para conex�es realizadas a 192.168.1.4 usando # somente o protocolo 2 Host 192.168.1.4 # As 2 linhas abaixo ativam o redirecionamento de conex�es do X ForwardAgent yes ForwardX11 yes PasswordAuthentication yes Port 22 Protocol 2 Cipher blowfish # Op��es espec�ficas do cliente para conex�es realizadas a 192.168.1.5 usando # somente o protocolo 1 Host 192.168.1.5 # As 2 linhas abaixo desativam o redirecionamento de conex�es do X ForwardAgent no ForwardX11 no PasswordAuthentication yes Port 22 Protocol 1

Cipher blowfish # # # # # # # # # # # # #

CheckHostIP yes RhostsAuthentication no RhostsRSAAuthentication yes RSAAuthentication yes FallBackToRsh no UseRsh no BatchMode no StrictHostKeyChecking yes IdentityFile ~/.ssh/identity IdentityFile ~/.ssh/id_dsa IdentityFile ~/.ssh/id_rsa1 IdentityFile ~/.ssh/id_rsa2 EscapeChar ~

14.2.1.2. Cliente ssh para Windows ---------------------------------O `putty' � um cliente ssh Win32 que possui suporte aos protocolos vers�o 1 e 2 do ssh, aceita compacta��o al�m de funcionar tamb�m como cliente `telnet'. Seu tamanho � pequeno, apenas um execut�vel e requer 220KB de espa�o em disco. Ele pode ser baixado de http://www.chiark.greenend.org.uk/~sgtatham/putty/. Outra alternativa � o `MindTerm', este � baseado em Java e pode inclusive ser executado como um applet em uma p�gina web. Este programa � encontrado em http://www.mindbright.se/mindterm. 14.2.2. scp ----------Permite a c�pia de arquivos entre o cliente/servidor ssh. usada por este comando � a seguinte:

A sintaxe

`scp [_origem_] [_destino_]' Os par�metros de _origem_ e _destino_ s�o semelhantes ao do comando `cp' mas possui um formato especial quando � especificado uma m�quina remota: * `Um caminho padr�o' - Quando for especificado um arquivo local. Por exemplo: `/usr/src/arquivo.tar.gz'. * `usuario@host_remoto:/diret�rio/arquivo' - Quando desejar copiar o arquivo de/para um servidor remoto usando sua conta de usu�rio. Por exemplo: `[email protected]:~/arqs'. A op��o _-C_ � recomend�vel para aumentar a taxa de transfer�ncia de dados usando compacta��o. Caso a porta remota do servidor `sshd' seja diferente de 22, a op��o _-P porta_ dever� ser especificada (� "P" mai�scula mesmo, pois a _-p_ � usada para preservar permiss�es/data/horas dos arquivos transferidos). Exemplos: # Para copiar um arquivo local chamado /pub/teste/script.sh para # meu diret�rio pessoal em ftp.sshserver.org scp -C /pub/teste/script.sh [email protected]:~/ # Para fazer a opera��o inversa a acima (copiando do servidor remoto para o local) # � s� inverter os par�metros origem/destino: scp -C [email protected]:~/script.sh /pub/teste

# Para copiar o arquivo local chamado /pub/teste/script.sh para # o diret�rio /scripts dentro do meu diret�rio pessoal em ftp.sshserver.org # com o nome teste.sh scp -C /pub/teste/script.sh [email protected]:~/scripts/teste.sh # O exemplo abaixo faz a transfer�ncia de arquivos entre 2 computadores remotos: # O arquivo teste.sh � lido do servidor server1.ssh.org e copiado para # server2.ssh.org (ambos usando o login gleydson) scp -C [email protected]:~/teste.sh [email protected]:~/ 14.2.2.1. Cliente scp para Windows ---------------------------------O `pscp' faz a tarefa equivalente ao `scp' no windows, e pode ser baixado de http://www.chiark.greenend.org.uk/~sgtatham/putty/. 14.2.3. sftp -----------Permite realizar transfer�ncia de arquivos seguras atrav�s do protocolo ssh. A conex�o e transfer�ncias s�o realizadas atrav�s da porta 22 (ainda n�o � poss�vel modificar a porta padr�o). A sintaxe para uso deste comando � a seguinte: `sftp usuario@host_remoto' Compacta��o pode ser especificada atrav�s da op��o _-C_. Um arquivo contendo os comandos usados na se��o `sftp' poder� se especificado atrav�s da op��o _-b arquivo_ para automatizar tarefas. _OBS1:_ Para desativar o servidor `sftp', remova a linha `SubSystem sftp /usr/lib/sftp-server' (que inicializa o sub-sistema ftp) do arquivo `/etc/ssh/sshd_config' e reinicie o servidor `sshd'. _OBS2:_ O suporte ao programa `sftp' somente est� dispon�vel ao protocolo ssh vers�o 2 e superiores. _OBS3:_ Algumas op��es comuns do cliente `ftp' padr�o (como _mget_) ainda n�o est�o dispon�veis ao `sftp'. Veja a p�gina de manual para detalhe sobre as op��es dispon�veis. 14.3. Servidor ssh -----------------14.3.1. sshd -----------Este � o daemon de controle da conex�o encriptada via protocolo ssh, transfer�ncia de arquivos e shell interativo. As op��es de linha de comando est�o dispon�veis em Se��o 14.1.10, `Op��es de linha de comando'. Seu arquivo de configura��o principal � `/etc/ssh/sshd_config', um exemplo e descri��o das op��es deste arquivo � encontrada em Se��o 14.3.5, `Exemplo de `sshd_config' com explica��es das diretivas'. _OBS1:_ � recomend�vel que o arquivo `/etc/ssh/sshd_config' seja lido

somente pelo dono/grupo, por conter detalhes de acesso de usu�rios, grupos e intervalo entre a gera��o de chave de se��o. _OBS2:_ Se estiver ocorrendo falhas no acesso ao servidor ssh, verifique as permiss�es nos arquivos `/etc/hosts.allow' e `/etc/hosts.deny' (o nome do servi�o � `sshd'). Mesmo operando como daemon, o servidor utiliza estes arquivos para fazer um controle de acesso adicional. 14.3.2. Controle de acesso -------------------------� definido pelas op��es `ListenAddress', `AllowUsers', `DenyUsers', `AllowGroups', `DenyGroups' e `PermitRootLogin' do arquivo de configura��o `sshd_config' (veja Se��o 14.3.5, `Exemplo de `sshd_config' com explica��es das diretivas') e via tcpd (arquivos `hosts.allow' e `hosts.deny'). Veja Se��o 4.8.3, `O mecanismo de controle de acessos tcpd'. 14.3.3. Usando autentica��o RSA - chave p�blica/privada ------------------------------------------------------Este m�todo de autentica��o permite a cria��o de um par de chaves: uma p�blica (que ser� distribu�do nas m�quinas que voc� conecta) e outra privada (que ficar� em seu diret�rio pessoal). A encripta��o e decripta��o s�o feitas usando chaves separadas e n�o � poss�vel conseguir a chave de decripta��o usando a chave de encripta��o. � poss�vel inclusive gerar uma chave sem senha para entrar diretamente em um sistema remoto (este esquema � um pouco mais seguro que os arquivos `~/.rhosts' e `~/.shosts'), mas dever� ser levado em considera��o a possibilidade de acesso f�sico ao seu diret�rio pessoal, qualquer um que tenha posse de sua chave privada poder� ter acesso ao sistema remoto. Siga os seguintes passos para se autenticar usando RSA 1 - usada na vers�o 1 do `ssh': 1. Gere um par de chaves p�blica/privada usando o comando: ssh-keygen Um par de chaves RSA vers�o 1 ser� gerado com o tamanho de 1024 bits por padr�o que garante uma boa seguran�a/velocidade e salvas no diret�rio `~/.ssh' com o nome `identity' e `identity.pub'. Para alterar o tamanho da chave use a op��o _-b tamanho_. Depois de gerar a chave, o `ssh-keygen' pedir� uma `frase-senha' (� recomend�vel ter um tamanho maior que 10 caracteres e podem ser inclu�dos espa�os). Se n�o quiser digitar uma senha para acesso ao sistema remoto, tecle <Enter> quando perguntado. Mude as permiss�es do diret�rio `~/.ssh' para 750. A op��o _-f_ especifica o diret�rio e nome das chaves. A chave p�blica ter� a extens�o `.pub' adicionada ao nome especificado. _ATEN��O_ Nunca distribua sua chave privada, nem armazene-a em servidores de acesso p�blicos ou outros m�todos que permitem outros terem acesso a ela. Se precisar de uma c�pia de seguran�a, fa�a em disquetes e guarde-a em um lugar seguro. 2. Instale a chave p�blica no servidor remoto que deseja se conectar, por exemplo, `www.sshserver.org': ssh-copy-id -i ~/.ssh/identity [email protected] A fun��o do utilit�rio acima � entrar no sistema remoto e adicionar a chave p�blica local `~/.ssh/identity.pub' no arquivo

`/home/gleydson/.ssh/authorized_keys' do sistema remoto `www.sshserver.org'. O mesmo processo poder� ser feito manualmente usando os m�todos tradicionais (`ssh'/`scp'). Caso o arquivo remoto `/home/gleydson/.ssh/authorized_keys' n�o existe, ele ser� criado. Seu formato � id�ntico ao `~/.ssh/know_hosts' e cont�m uma chave p�blica por linha. 3. Agora utilize o `ssh' para entrar no sistema remoto usando o m�todo de chave p�blica/privada. Entre com a senha que usou para gerar o par de chaves p�blico/privado (ele entrar� diretamente caso n�o tenha digitado uma senha). Para autenticar em uma vers�o 2 do `ssh' (usando chave RSA 2 ou DSA): 1. Gere um par de chaves p�blica/privada usando o comando: ssh-keygen -t rsa -f ~/.ssh/id_rsa ou ssh-keygen -t dsa -f ~/.ssh/id_rsa Um par de chaves RSA 2/DSA ser� gerado. Para alterar o tamanho da chave use a op��o _-b tamanho_. Depois de gerar a chave, o `ssh-keygen' pedir� uma `frase-senha' (� recomend�vel ter um tamanho maior que 10 caracteres e podem ser inclu�dos espa�os). Se n�o quiser digitar uma senha para acesso ao sistema remoto, tecle <Enter> quando perguntado. Mude as permiss�es do diret�rio `~/.ssh' para 750. _ATEN��O_ Nunca distribua sua chave privada, nem armazene-a em servidores de acesso p�blicos ou outros m�todos que permitem outros terem acesso a ela. Se precisar de uma c�pia de seguran�a, fa�a em disquetes e guarde-a em um lugar seguro. 2. Instale a chave p�blica no servidor remoto que deseja se conectar copiando o arquivo com: scp ~/.ssh/id_rsa.pub usuario@servidorremoto:~/.ssh/authorized_keys2 Caso o arquivo remoto `/home/gleydson/.ssh/authorized_keys2' n�o existe, ele ser� criado. Seu formato � id�ntico ao `~/.ssh/know_hosts2' e cont�m uma chave p�blica por linha. 3. Agora utilize o `ssh' para entrar no sistema remoto usando o m�todo de chave p�blica/privada. Entre com a senha que usou para gerar o par de chaves p�blico/privado (ele entrar� diretamente caso n�o tenha digitado uma senha). O tipo de chave criada por padr�o � a _rsa1_ (compat�vel com as vers�es 1 e 2 do ssh). A op��o _-t [chave]_ poder� ser usada (ao gerar a chave) para selecionar o m�todo de criptografia: * `rsa1' - Cria uma chave rsa compat�vel com a vers�o 1 e 2 do `ssh' (esta � a padr�o). * _rsa_ - Cria uma chave rsa compat�vel somente com a vers�o 2 do `ssh'. * _dsa_ - Cria uma chave dsa compat�vel somente com a vers�o 2 do `ssh'. Para trocar a senha utilize o comando: `ssh-keygen -p -t rsa -f ~/.ssh/identity' - ser� pedida sua senha antiga e a nova senha (no mesmo estilo do `passwd'). Opcionalmente voc� pode utilizar a sintaxe: `ssh-keygen -p -f ~/.ssh/identity -P senha_antiga -N senha_nova', que troca a senha em um �nico comando (�til para ser usado em scripts junto com a op��o _-q_ para evitar a exibi��o de mensagens de sa�da do `ssh-keygen'). 14.3.4. Diferen�as nas vers�es do protocolo -------------------------------------------

Retirada da p�gina de manual do `sshd': Protocolo SSH vers�o 1 Cada servidor possui uma chave RSA espec�fica (1024 bits por padr�o) usada para identifica-lo. Quando o sshd inicia, ele gera uma chave RSA do servidor (768 bits por padr�o, valor definido por ServerKeyBits) que � recriada a cada hora (modificado por KeyRegenerationInterval no `sshd_config') e permanece sempre residente na RAM. Quando um cliente se conecta o sshd responde com sua chave p�blica da m�quina e chaves do servidor. O cliente ssh compara a chave RSA com seu banco de dados (em `~/.ssh/know_hosts') para verificar se n�o foi modificada. Estando tudo OK, o cliente gera um n�mero aleat�rio de 256 bits, o encripta usando ambas as chaves de m�quina e chave do servidor e envia este n�mero ao servidor. Ambos os lados ent�o usam este n�mero aleat�rio como chave de se��o que � usado para encriptar todas as comunica��es seguintes na se��o. O resto da se��o usa um m�todo de embaralhamento de dados convencional, atualmente Blowfish ou 3DES (usado como padr�o). O cliente seleciona o algoritmo de criptografia que ser� usado de um destes oferecidos pelo servidor. Ap�s isto o servidor e cliente entram em um di�logo de autentica��o. O cliente tenta se autenticar usando um dos seguintes m�todos de autentica��o: * `~/.rhosts' ou `~/.shosts' (normalmente desativada). * `~/.rhosts' ou `~/.shosts' combinado com autentica��o RSA (normalmente desativada). * Autentica��o RSA por resposta de desafio. * Autentica��o baseada em senha. A autentica��o usando Rhosts normalmente � desativada por ser muito insegura mas pode ser ativada no arquivo de configura��o do servidor se realmente necess�rio. A seguran�a do sistema n�o � melhorada a n�o ser que os servi�os `rshd', `rlogind', `rexecd' e `rexd' estejam desativados (assim, o `rlogin' e `rsh' ser�o completamente desativados na m�quina). � Protocolo SSH vers�o 2 A vers�o 2 funciona de forma parecida com a 1: Cada m�quina possui uma chave DSA espec�fica usada para se identificar. A diferen�a � que quando o `sshd' inicia, ele n�o gera uma chave de servidor. A seguran�a de redirecionamento � oferecida atrav�s da concord�ncia do uso de uma chave Diffie-Hellman. Esta concord�ncia de chave resulta em uma se��o com chave compartilhada. O resto da se��o � encriptada usando um algoritmo sim�trico, como Blowfish, 3DES, CAST128, Arcfour, 128 bit AES, ou 256 bit AES. O cliente que seleciona o algoritmo de criptografia que ser� usado entre os oferecidos pelo servidor. Adicionalmente a integridade da se��o � oferecida atrav�s de um c�digo de autentica��o de mensagem criptogr�fica (hmac-sha1 ou hmac-md5). A vers�o 2 do protocolo oferece um m�todo de autentica��o baseado em chave p�blica (PubkeyAuthentication) e o m�todo de autentica��o convencional usando senhas.

14.3.5. Exemplo de `sshd_config' com explica��es das diretivas -------------------------------------------------------------Abaixo segue um exemplo deste arquivo que poder� ser adaptado ao seu sistema. O objetivo � ser ao mesmo tempo �til para sua configura��o e did�tico: # # # #

Modelo personalizado para o guia Foca GNU/Linux baseado na configura��o original do FreeBSD. Autor: Gleydson Mazioli da Silva Data: 20/09/2001.

# Porta padr�o usada pelo servidor sshd. M�ltiplas portas podem ser # especificadas separadas por espa�os. Port 22 # Especifica o endere�o IP das interfaces de rede que o servidor sshd # servir� requisi��es. M�ltiplos endere�os podem ser especificados # separados por espa�os. A op��o Port deve vir antes desta op��o ListenAddress 0.0.0.0 # Protocolos aceitos pelo servidor, primeiro ser� verificado se o cliente � # compat�vel com a vers�o 2 e depois a vers�o 1. Caso seja especificado # somente a vers�o 2 e o cliente seja vers�o 1, a conex�o ser� descartada. # Quando n�o � especificada, o protocolo ssh 1 � usado como padr�o. Protocol 2,1 # As 4 op��es abaixo controlam o acesso de usu�rios/grupos no sistema. # Por padr�o o acesso a todos � garantido (exceto o acesso root se # PermitRootLogin for "no"). AllowUsers e AllowGroups definem uma lista # de usu�rios/grupos que poder�o ter acesso ao sistema. Os coringas # "*" e "?" podem ser especificados. Note que somente NOMES s�o v�lidos, # UID e GID n�o podem ser especificados. # # As diretivas Allow s�o processadas primeiro e depois Deny. O m�todo que # estas diretivas s�o processadas � id�ntico a diretiva # "Order mutual-failure" do controle de acesso do Apache: # O usu�rio dever� TER acesso via AllowUsers e AllowGroups e N�O ser bloqueado # por DenyUsers e DenyGroups para ter acesso ao sistema. Se uma das diretivas # n�o for especificada, "*" � assumido como padr�o. # Estas permiss�es s�o checadas ap�s a autentica��o do usu�rio, porque # dados a ele pelo /etc/passwd e PAM s�o obtidos ap�s o processo de # autentica��o. #AllowUsers gleydson teste? #DenyUsers root adm #AllowGroups users #DenyGroups root adm bin # Permite (yes) ou n�o (no) o login do usu�rio root PermitRootLogin no # Chaves privadas do servidor (as chaves p�blicas possuem um ".pub" adicionado # no final do arquivo. HostKey /etc/ssh/ssh_host_key HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key

# Tamanho da chave. 768 bits � o padr�o ServerKeyBits 768 # Tempo m�ximo para login no sistema antes da conex�o ser fechada LoginGraceTime 600 # Tempo para gera��o de nova chave do servidor (segundos). O padr�o � # 3600 segundos (1 hora). KeyRegenerationInterval 3600 # Ignora os arquivos ~/.rhosts e ~/.shosts IgnoreRhosts yes # Ignora (yes) ou n�o (no) os arquivos ~/.ssh/known_hosts quando for usado # para a op��o RhostsRSAAuthentication. Se voc� n�o confia neste mecanismo # ajuste esta op��o para yes. IgnoreUserKnownHosts no # Checa por permiss�es de dono dos arquivos e diret�rio de usu�rio antes de # fazer o login. � muito recomend�vel para evitar riscos de seguran�a # com arquivos lidos por todos os usu�rios. StrictModes yes # Permite (yes) ou n�o (no) o redirecionamento de conex�es X11. A seguran�a # do sistema n�o � aumentada com a desativa��o desta op��o, outros m�todos # de redirecionamento podem ser usados X11Forwarding yes # Especifica o n�mero do primeiro display que ser� usado para o redirecionamento # X11 do ssh. Por padr�o � usado o display 10 como inicial para evitar conflito # com display X locais X11DisplayOffset 10 # Mostra (yes) ou n�o (no) a mensagem em /etc/motd no login. O padr�o � "no". PrintMotd no # Mostra (yes) ou n�o (no) a mensagem de �ltimo login do usu�rio. O padr�o � "no". PrintLastLog no # Permite (yes) ou n�o (no) o envio de pacotes keepalive (para verificar se o # cliente responde. Isto � bom para fechar conex�es que n�o respondem mas # tamb�m podem fechar conex�es caso n�o existam rotas para o cliente # naquele momento (� um problema tempor�rio). Colocando esta op��o como # "no" por outro lado pode deixar usu�rios que n�o tiveram a oportunidade # de efetuar o logout do servidor dados como "permanentemente conectados" # no sistema. Esta op��o deve ser ativada/desativada aqui e no programa # cliente para funcionar. KeepAlive yes # Facilidade e n�vel das mensagens do sshd que aparecer�o no syslogd SyslogFacility AUTH LogLevel INFO # Especifica se somente a autentica��o via arquivos ~/.rhosts e /etc/hosts.equiv � # suficiente para entrar no sistema. N�o � muito bom usar "yes" aqui. RhostsAuthentication no # Mesmo que o acima com o acr�scimo que o arquivo /etc/ssh/ssh_known_hosts tamb�m

# � verificado. Tamb�m evite usar "yes" aqui. RhostsRSAAuthentication no # Especifica se a autentica��o via RSA � permitida (s� usado na vers�o 1 do # protocolo ssh). Por padr�o "yes". RSAAuthentication yes # Permite autentica��o usando senhas (serve para ambas as vers�es 1 e 2 do ssh). # O padr�o � "yes". PasswordAuthentication yes # Se a PasswordAuthentication for usada, permite (yes) ou n�o (no) login # sem senha. O padr�o � "no". PermitEmptyPasswords no # Ativa senhas s/key ou autentica��o PAM NB interativa. Nenhum destes � # compilado por padr�o junto com o sshd. Leia a p�gina de manual do # sshd antes de ativar esta op��o em um sistema que usa PAM. ChallengeResponseAuthentication no # Verifica se o usu�rio possui emails ao entrar no sistema. O padr�o � "no". # Este m�dulo tamb�m pode estar sendo habilitado usando PAM (neste caso # cheque a configura��o em /etc/pam.d/ssh). CheckMail no # Especifica se o programa login � usado para controlar a se��es de shell # interativo. O padr�o � "no". UseLogin no # Especifica o n�mero m�ximo de conex�es de autentica��o simult�neas feitas # pelo daemon sshd. O valor padr�o � 10. Valores aleat�rios podem ser # especificados usando os campos "inicio:taxa:m�ximo". Por exemplo, # 5:40:15 rejeita at� 40% das tentativas de autentica��o que excedam o # limite de 5 at� atingir o limite m�ximo de 15 conex�es, quando # nenhuma nova autentica��o � permitida. MaxStartups 10 #MaxStartups 10:30:60 # Mostra uma mensagem antes do nome de usu�rio/senha Banner /etc/issue.net # Especifica se o servidor sshd far� um DNS reverso para verificar se o # endere�o confere com a origem (isto � �til para bloquear conex�es # falsificadas - spoofing). O padr�o � "no". ReverseMappingCheck yes # Ativa o subsistema de ftp seguro. Para desabilitar comente a linha # abaixo Subsystem sftp /usr/lib/sftp-server ------------------------------------------------------------------------------15. Servidor pop3 ----------------Este cap�tulo descreve a instala��o, configura��o, cria��o de contas e

controle de acesso ao servidor pop3. servidor qpopper da Qualcomm.

Este cap�tulo � baseado no

15.1. Introdu��o ---------------� o servidor para recebimento de mensagens eletr�nicas (e-mails) para o cliente de e-mails. O servidor pop3 documentado � o `qpopper' (da Qualcomm), � um dos mais usados em ambiente `Linux', simples de configurar e distribu�do livremente. O que este programa faz � ler os e-mails de usu�rios em `/var/mail' e os envia via porta 110 ao programa cliente (`Netscape', `sylpheed', `mutt', `balsa', `Pegasus', `Outlook', ou qualquer outro que suporte o protocolo pop3). 15.1.1. Vers�o -------------� assumido que esteja usando a vers�o 4.0.3 do `qpopper'. As explica��es contidas aqui podem funcionar para vers�es posteriores, mas � recomend�vel que leia a documenta��o sobre modifica��es no programa (changelog) em busca de mudan�as que alterem o sentido das explica��es fornecidas aqui. 15.1.2. Contribuindo -------------------O site do `qpopper' � http://www.eudora.com/qpopper/, an�ncios de novas vers�es, bugs e corre��es s�o enviados para (inscreva-se enviando uma mensagem com o assunto "subscribe" para o nome da lista acrescentando "-request"). A lista de suporte aos usu�rios � (o m�todo de inscri��o � id�ntico a lista `announce'). 15.1.3. Caracter�sticas ----------------------* Simples de configurar. * Possui um timeout padr�o de 30 segundos ao inv�s de 10 minutos do protocolo pop3 padr�o. * O protocolo pop3 � mais simples e consome menos recursos no servidor que o IMAP. * Suporte a envio de boletins aos usu�rios do sistema. * Inclui suporte a TLS/SSL. * Suporte a senhas ocultas (shadow passwords). * Suporta PAM. * Suporte a autentica��o via APOP. * Alta performance. 15.1.4. Ficha t�cnica --------------------Pacote: `qpopper'. Utilit�rios: * `in.qpopper' - Servidor pop3. * `popauth' - Manipula os bancos de dados de autoriza��o quando �

usado o m�todo de autentica��o APOP. Arquivos de configura��o: * `/etc/popper.allow' - Cont�m a lista de usu�rios autorizados a usar o servi�o pop3. * `/etc/popper.deny' - Cont�m uma lista de usu�rios N�O autorizados a usar o servi�o pop3. * `/etc/pop.auth' - Cont�m dados de autentica��o criados pelo programa `popauth'. 15.1.5. Requerimentos de Hardware --------------------------------O servidor `qpopper' requer no m�nimo 6MB de mem�ria para rodar e espa�o em disco suficiente para acomodar os e-mails de usu�rios. 15.1.6. Arquivos de log criados pelo qpopper -------------------------------------------Mensagens sobre a execu��o do `qpopper' s�o enviadas aos seguintes arquivos em `/var/log': * `mail.info' - Detalhes sobre autentica��o de usu�rios e mensagens. * `mail.warn' - Erros e avisos diversos ocorridos na se��o pop3. * `syslog' e `daemon.log' - Mensagens sobre a execu��o do servidor qpopper. * `auth.log' - Mensagens de autentica��o gerados pelo PAM. 15.1.7. Instala��o -----------------`apt-get install qpopper' Por padr�o o servidor qpopper � instalado via inetd: pop-3

stream tcp nowait.60 /usr/sbin/in.qpopper -s

root

/usr/sbin/tcpd

Se estiver configurando um servidor pop3 com um grande n�mero de conex�es, � recomend�vel aumentar o n�mero de execu��es do servi�o pop3 por minuto (no `inetd.conf') ou rodar o servidor `qpopper' como daemon (preferido). Para fazer isto, remova a linha que inicia o `qpopper' no `inetd.conf' e construa um script que inicie o servi�o como daemon usando a op��o _-S_ (veja outras op��es em Se��o 15.1.10, `Op��es de linha de comando'). 15.1.8. Iniciando o servidor/reiniciando/recarregando a configura��o -------------------------------------------------------------------O servi�o � executado por padr�o via inetd e utiliza o controle de acesso `tcpd' (veja Se��o 4.8.3, `O mecanismo de controle de acessos tcpd'). Adicionalmente voc� pode definir que usu�rios ter�o/n�o acesso ao servi�o pop3 nos arquivos `/etc/popper.allow' e `popper.deny'. Por padr�o, o acesso � garantido para qualquer usu�rio. Ap�s instalar o servidor pop3 instalado, resta configurar o cliente para conectar ao servidor pop3 do servidor. O nome de usu�rio e senha s�o os usados no arquivo `/etc/passwd'.

15.1.9. Testando o servidor pop3 -------------------------------Um simples teste consiste em usar o `telnet' conectando a porta pop3 (110): `telnet 127.0.0.1 110': Connected to 127.0.0.1. Escape character is '^]'. +OK Qpopper (version 4.0.3) at server.org starting.

<[email protected]>

A resposta acima indica que o servidor pop3 est� funcionando corretamente. 15.1.10. Op��es de linha de comando ----------------------------------Op��es de linha de comando do servidor `in.qpopper': endere�o:porta Quando est� operando em modo daemon (iniciado com _-S_), espera por conex�es no _endere�o_ e opcionalmente na _porta_ especificada. O endere�o dever� ser o da interface de rede local do servidor (como `192.168.1.1') caso n�o seja especificado, o servidor `qpopper' monitorar� todos os endere�os. A porta padr�o � 110 caso n�o seja especificada. -b [diret�rio] Ativa o sistema de envio de boletins. O diret�rio especificado � o que cont�m os boletins que ser�o enviados (na distribui��o `Debian', o `/var/spool/popbull' � o indicado). Veja Se��o 15.1.11, `Enviando boletins de mensagens' para instru��es de utiliza��o deste recurso. -c Modifica a senha para caracteres min�sculos antes de autenticar, permitindo que clientes conectem com a senha em MAI�SCULAS ou caracteres mIsTurados. -f [arquivo] Especifica um arquivo de configura��o para o servidor qpopper. Veja a p�gina de manual para detalhes sobre as op��es. Recomendo usar as op��es de linha de comando exceto se for requerida configura��es especiais para modificar o comportamento do servidor pop3. -l [num] Modifica as op��es de criptografia TLS/SSL usada no transporta da se��o. Os seguintes valores s�o aceitos: * `0' - Desativa TLS/SSL. � o padr�o. * `1' - Ativa o suporte a TLS/SSL. Se o cliente n�o suportar criptografia, os dados ser�o transmitidos usando a forma padr�o. * `2' - Tenta ativar uma conex�o TLS quando o cliente conecta ao servidor usando uma porta alternativa. -p [num] Seleciona como a senha em texto plano ser� manipulada. O servidor dever� estar compilado com suporte a outras formas de autentica��o (como APOP) ao inv�s de texto plano. As seguintes op��es s�o suportadas. * `0' - Senhas em texto plano podem ser usadas para usu�rios n�o cadastrados no arquivo `/etc/pop.auth' (gerenciado pelo `popauth'. Este � o padr�o.

* `1' - Somente permite acesso de usu�rios cadastrados no arquivo `/etc/pop.auth'. Qualquer acesso usando texto plano � negado. * `2' - Permite autentica��o usando texto plano como prefer�ncia, at� mesmo para usu�rios que estejam no `/etc/pop.auth'). � �til para clientes que n�o suportam autentica��o usando texto plano. * `3' - Somente usu�rios conectando da mesma m�quina (127.0.0.1) podem usar autentica��o em texto plano. * `4' - Permite autentica��o usando texto plano somente se uma conex�o criptogr�fica foi estabelecida usando TLS ou SSL. -R -s

Desativa a resolu��o reversa de endere�os IP de clientes. Registra dados de inicio da se��o, nome de usu�rio, n�mero de bytes/mensagens apagadas, n�mero de mensagens deixadas no servidor e fim da se��o. Estes detalhes s�o registrados pelo `syslogd'. Seu uso � recomend�vel para ter controle sobre o que est� acontecendo em seu servidor.

-S

Ativa o modo daemon. �til para servidores pop3 com grande n�mero de acessos. -T [num] Tempo m�ximo em segundos para finaliza��o da se��o quando o cliente n�o envia nenhuma resposta ou comando. Valores pequenos (como 20) podem ser especificados para servidores que possuem poucos usu�rios e um link r�pido. Para grande quantidade de usu�rios ou conex�o feita via links lentos (como ppp, slip, plip, etc.) use valores como 600 (10 minutos) ou mais. O valor padr�o � 120 segundos (2 minutos). -u L� o arquivo `~/.qpopper.options' no diret�rio do usu�rio em busca de op��es adicionais para o servidor. Este arquivo � lido ap�s o processo de autentica��o e deve ter permiss�es leitura/grava��o para o dono. Isto n�o � recomend�vel em servidores seguros, a criptografia ou m�todo de autentica��o podem ser desativados sem o conhecimento do administrador comprometendo a seguran�a dos dados. -U Id�ntica a op��o acima, mas o arquivo deve residir no diret�rio de spool (`/var/spool/pop') e ter o formato: .usuario.qpopper-options Este arquivo deve ter como dono o administrador ou dono do servidor pop3. Esta alternativa � mais segura que a anterior porque o usu�rio n�o ter� acesso ou desativar op��es espec�ficas. -y [facilidade] Permite modificar o n�vel _facilidade_ que as mensagens s�o registradas no `syslogd' (veja Se��o 5.2.1.1, `Arquivo de configura��o `syslog.conf''). 15.1.11. Enviando boletins de mensagens --------------------------------------Este recurso � muito �til para enviar alertas ou avisos para todos os usu�rios em seu sistema de uma s� vez. A mensagem � escrita no diret�rio `/var/spool/popbull' seguindo um formato especial e quando o usu�rio pop3 se conecta para pegar seus e-mails receber� tamb�m uma c�pia do boletim. O controle de boletins j� recebido pelo usu�rio �

feito no arquivo `~/.popbull'. configurar este sistema:

Siga os passos a seguir para

1.

Ative o suporte a envio de boletins no servidor qpopper, adicionando a op��o `-b /var/spool/popbull' a linha de comando.

2.

Os n�meros de boletins s�o controlados seq�encialmente pelos arquivos `~/.popbull', portanto � importante come�ar com o nome do boletim com pelo menos 5 d�gitos (00001, 00002, 00003, etc). Vamos usar `00001-teste' em nosso exemplo.

3.

A primeira linha do boletim deve conter a palavra "From" e um espa�o e deve ser completada com um nome e data, seguido de campos essenciais para o envio da mensagem:

From teste Sex Set 29 21:40:00 2001 To: user@localhost From: Administrador do Sistema Date: Fri, 29 Sep 2001 21:40:00 -0800 (PST) Subject: Teste do sistema de boletins Este � apenas um teste para o sistema de boletins. Se tudo estiver OK voc� receber� esta mensagem quando pegar seus e-mails no cliente pop3 e este boletim ser� registrado no arquivo ~/.popbull para que n�o seja novamente recebido. Deve haver uma linha em branco para separar o cabe�alho da mensagem. _OBS:_ Quando incluir novos usu�rios no sistema, somente os �ltimos 10 boletins ser�o enviados. 15.1.12. Especificando quotas para as caixas de correio ------------------------------------------------------Crie o diret�rio de spool `/var/mail' em uma parti��o separada e ative o sistema de quota do `Linux' nela. Leia as instru��es em Se��o 16.11, `Limitando o uso de espa�o em disco (quotas)'. 15.1.13. Restringindo acesso ao servidor pop3 --------------------------------------------O controle de acesso de conex�es � feito via m�todo `tcpd' usando o daemon `in.qpopper' (veja Se��o 4.8.3, `O mecanismo de controle de acessos tcpd'). O controle de acesso dos usu�rios � feito atrav�s do arquivos `/etc/popper.allow' e `/etc/popper.deny', respectivamente cont�m os nomes de usu�rios que podem e n�o podem ter acesso ao servidor `qpopper'. Por motivos de seguran�a � recomend�vel redirecionar os e-mails do usu�rio `root' para outra conta (no arquivo `/etc/aliases' e bloquear o acesso do usu�rio root ao pop3 no arquivo `/etc/popper.deny'. Se a m�quina servidora pop3 n�o for utilizada para acesso remoto, � recomend�vel desativar os servi�os de login (veja Se��o 16.1.6, `Desabilitando servi�os de shell para usu�rios'). -------------------------------------------------------------------------------

16. Restri��es de recursos/servi�os ----------------------------------Este cap�tulo documenta diversos m�todos de fazer restri��es de contas, limita��o de acesso interno/externo, de recursos por usu�rios/grupos, login, tempo m�ximo ocioso, e outros modos para limitar o uso de recursos do sistema. Tamb�m s�o descritos m�todos para aumentar a seguran�a do acesso f�sico a seu servidor e maneiras de restringir o uso de servi�os dispon�veis no sistema. Se voc� deseja restringir o acesso de m�quinas na rede ou portas espec�ficas em sua m�quina, veja tamb�m . 16.1. Limitando recursos no `bash' ---------------------------------16.1.1. Uso do comando readonly para exportar vari�veis ------------------------------------------------------Vari�veis exportadas na forma comum podem ser modificadas a qualquer momento pelo usu�rio, e isso pode trazer problemas de acordo com o tipo de sistema que administramos. A defini��o da vari�vel como somente leitura (readonly) evita a maioria destes problemas: readonly TESTE="123" A vari�vel n�o poder� ser modificada ou exclu�da. Com isto o administrador pode "bloquear" a modifica��o de vari�veis que controlam o funcionamento de determinados recursos do interpretador de comandos (alguns deles ser�o vistos ainda nesta se��o). _OBS1:_ Algumas vari�veis de controle de ambientes ambiente do interpretador de comandos j� s�o iniciadas com valores somente leitura (como as vari�veis <EUID> e ) _OBS2:_ Vari�veis exportadas como somente leitura em shell scripts s�o mantidas at� a finaliza��o do script e depois liberadas. 16.1.2. Restri��es nos diret�rios de usu�rios e root ---------------------------------------------------O controle de acesso a diret�rios de usu�rios � importante quando desejamos que outras pessoas n�o tenham acesso ao diret�rio de outros usu�rios, violando a privacidade do mesmo e obtendo acesso a partes indesej�veis, principalmente do usu�rio `root'. � recomendado restringir o acesso somente ao `dono' e `grupo' do usu�rio, bloqueando o acesso a outros tipos de usu�rios: chmod 2750 /root chmod 2750 /home/usuario O exemplo acima permitir� o acesso do diret�rio `/root' e `/home/usuario' somente ao usu�rio e grupo que pertencem. Este processo pode ser facilitado na cria��o dos diret�rios de usu�rios em `/home' especificando a vari�vel: no arquivo

`/etc/adduser.conf'. _OBS:_ Algumas distribui��es de `Linux' garantem o acesso livre a diret�rios de usu�rios por padr�o pois alguns daemons que requerem acesso a diret�rio de usu�rios rodam sob outros usu�rios ao inv�s do root. Um bom exemplo � a utiliza��o do recurso "UserDir" do `Apache' para servir requisi��es como `http://servidor.org/~usuario'. A restri��o de diret�rio home neste caso bloquear� o acesso do servidor web `Apache' ao diret�rio `/home/usuario/public_html'. Mesmo assim, uma alternativa para garantir a utiliza��o da restri��o � incluir o usu�rio do servidor web `Apache' (`www-data') no grupo "usuario" (que possui acesso ao diret�rio `/home/usuario'): adduser www-data usuario Isto garantir� que o servidor `Apache' continue servindo as requisi��es dentro do diret�rio `/home/usuario', com acesso garantido via grupo. O mesmo principio pode ser aplicado em outros programas, apenas leve em considera��o que se um cracker tomar conta do processo que tem acesso ao seu diret�rio home restrito, ele certamente tamb�m ter� acesso. 16.1.3. Restri��es b�sicas do shell bash com bash -r/--restricted, rbash -----------------------------------------------------------------------Quando o `bash' � iniciado com o par�metro `-r', `--restricted' ou como `rbash', o shell restringe o uso dos seguintes recursos em sua se��o: * Usar o comando `cd' para mudar de diret�rio. * Definindo, modificar ou apagar a vari�veis <SHELL>, , <ENV>, . * Nomes de comandos que cont�m `/' * Especificar um nome de arquivo contendo uma `/' como argumento para o comando `builtin' (embutido no interpretador de comandos). * Especificar uma `/' como argumento a op��o _-p_ no comando `hash' (embutido no interpretador de comandos). * Importar a defini��o de fun��es do ambiente do shell atual. * Analisar o valor da vari�vel <SHELLOPTS> do ambiente do shell atual. * Redirecionando a sa�da padr�o usando os operadores de redirecionamento `>', `>|', `<>', `>&', `&>'; e `>>'. * Usando o comando embutido `exec' para substituir o shell por outro comando. * Usar as op��es _-f_ ou _-d_ com o comando `enable' (embutido no interpretador de comandos). * Especificar a op��o _-p_ ao comando interno `command'. * Desativar o modo restrito com `set +r' ou `set +o restricted' * Estas restri��es s�o ativadas ap�s a leitura dos arquivos de inicializa��o do interpretador de comandos. O shell restrito desliga as restri��es quando um shell script � executado. 16.1.4. Finalizando consoles inativos ------------------------------------A vari�vel determina o tempo de inatividade de um shell para que ele seja terminado.

export TMOUT=600 Terminar� o `bash' caso nenhum comando seja executado no per�odo de 600 segundos (5 minutos). Veja Se��o 16.1.1, `Uso do comando readonly para exportar vari�veis' como complemento. 16.1.5. Desabilitando o registro de comandos digitados -----------------------------------------------------Todos os comandos que digitamos em uma se��o do shell s�o registrados no arquivo `~/.bash_history', as seguintes vari�veis fazem seu controle: * - Nome do arquivo que armazenar� o hist�rico de comandos. O padr�o � `~/.bash_history'. Caso n�o seja especificado, os comandos n�o ser�o gravados ap�s finalizar o shell. * - Define o n�mero de comandos que o arquivo de hist�rico poder� armazenar, o padr�o � 500. * - Define o n�mero m�ximo de linhas no arquivo de hist�rico. Se voc� possui muitos usu�rios em seu sistema, � recomendado ajustar estas vari�veis como somente leitura para que o usu�rio n�o desative o logging por qualquer motivo (veja Se��o 16.1.1, `Uso do comando readonly para exportar vari�veis'). 16.1.6. Desabilitando servi�os de shell para usu�rios ----------------------------------------------------Existem casos onde o usu�rio precisa estar cadastrado no sistema mas n�o precisa ter acesso a uma conta de login v�lida (como um sistema servidor de e-mail ou outros servi�os). Neste caso a desabilita��o dos servi�os de shell aumentar� um pouco a seguran�a do sistema, mesmo conseguindo acesso a conta/senha estar� impedido de entrar no sistema (pelo menos ter� um pouco mais dificuldade para conseguir isso). Um programa que � muito usado para desabilitar o shell exibindo uma mensagem ao usu�rio que fez a tentativa � o `falselogin'. Ele deve ser colocado como o "shell padr�o" no arquivo `/etc/passwd' e exibir� a mensagem contida no arquivo `/etc/falselogin.conf' quando o login para aquele usu�rio for tentado. Esta opera��o pode ser facilitada usando a vari�vel no arquivo `/etc/adduser.conf'. Uma forma alternativa de desativar o servi�o de login de TODOS os usu�rios (exceto o `root' e os j� logados no sistema) � criar um arquivo chamado `/etc/nologin' e colocando uma mensagem dentro dele, que ser� exibida quando tentarem efetuar o login no sistema. _OBS:_ Tome cuidado ao usar esta alternativa, este m�todo deve ser usado somente em caso de _EMERG�NCIA_, as distribui��es `Linux' usam este m�todo para bloquear o login de outros usu�rios durante o processo de inicializa��o, removendo assim que o processo � terminado. Esteja consciente disso. Em alguns casos, o uso do PAM pra desabilitar os servi�os de login pode ser mais adequado (veja Se��o 16.2.3, `Restringindo/Bloqueando o login').

16.2. Limita��o de recursos usando PAM -------------------------------------Plugglable Autentication Modules (M�dulos de autentica��o plug�veis) s�o um conjunto de bibliotecas usadas para fazer autentica��o, gerenciamento de contas, controle de recursos dos usu�rios no sistema, em adi��o ao tradicional sistema de acesso baseado em usu�rios/grupos. Este recurso permite modificar a forma que um aplicativo autentica e define recursos para o usu�rio sem necessidade de recompilar o aplicativo principal. Os recursos que desejamos controlar restri��es via PAM s�o especificados individualmente por servi�os nos arquivos correspondentes em `/etc/pam.d' e ent�o os arquivos correspondentes em `/etc/security' s�o usados para controlar tais restri��es. Nesta se��o assumirei explica��es dirigidas aos recursos controlados pelos arquivos em `/etc/security' A maioria das explica��es s�o baseadas em testes e nos pr�prios exemplos dos arquivos de configura��o do PAM. 16.2.1. Descobrindo se um determinado programa tem suporte a PAM ---------------------------------------------------------------Um m�todo simples de se determinar se um programa bin�rio possui suporte a PAM � executando o comando: ldd [programa] Por exemplo: ldd /bin/login libcrypt.so.1 => /lib/libcrypt.so.1 (0x4001c000) libpam.so.0 => /lib/libpam.so.0 (0x40049000) libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x40051000) libdl.so.2 => /lib/libdl.so.2 (0x40054000) libc.so.6 => /lib/libc.so.6 (0x40058000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Caso a biblioteca `libpam' for listada, o programa tem suporte a PAM compilado. Programas que n�o possuem suporte a PAM dever�o ter o c�digo fonte modificado inserindo as fun��es para tratamento dos m�dulos de autentica��o. 16.2.2. Definindo um policiamento padr�o restritivo --------------------------------------------------O Policiamento padr�o do PAM � especificado em `/etc/pam.d/other' e define o que acontecer� caso nenhum dos arquivos de controle de servi�o em `/etc/pam.d' confiram com o servi�o em quest�o. Normalmente o m�dulo `pam_unix.so' � usado para fazer o policiamento padr�o, para deixar o sistema mais seguro, utilize a seguinte configura��o no arquivo `/etc/pam.d/other': auth auth account password

required required required required

/usr/lib/security/pam_warn.so /usr/lib/security/pam_deny.so /usr/lib/security/pam_deny.so /usr/lib/security/pam_warn.so

password required session required

/usr/lib/security/pam_deny.so /usr/lib/security/pam_deny.so

O m�dulo `pam_deny.so' � respons�vel por fazer o bloqueio, e o `pam_warn' envia avisos ao `syslog' (facilidade _auth_ n�vel _notice_) caso servi�os m�dulos PAM que necessitem do servi�o de autentica��o sejam bloqueados (isto n�o � feito automaticamente pelo `pam_deny.so'). _OBS:_ Esta configura��o poder� causar bloqueio em muitas coisas caso possua m�dulos de autentica��o mau configurados. Esteja certo de utilizar o m�dulo `pam_warn.so' (antes do `pam_deny.so') nas diretivas restritivas para entender qual � o problema atrav�s da an�lise dos arquivos de logs. Mais detalhes sobre a configura��o de m�dulos de autentica��o poder�o ser encontrados no endere�o ftp://ftp.us.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html e http://www.kernel.org/pub/linux/libs/pam/pre/doc/rfc86.0.txt.gz. 16.2.3. Restringindo/Bloqueando o login --------------------------------------Isto � controlado pelo arquivo `/etc/security/access.conf'. O formato deste arquivo consistem em tr�s campos separados por ":": * `Primeiro campo' - Garante ("+") ou bloqueia ("-") o acesso caso as condi��es nos outros campos confiram. * `Segundo campo' - Cont�m o login, grupo. O formato _usu�rio@computador_ pode ser usado para conferir com usu�rios que acessam de determinadas m�quinas. Caso existam mais de um par�metro, estes devem ser separados usando espa�os. As palavras chave `ALL' (todos) e `EXCEPT' (exce��o) e console tamb�m podem ser usadas. * `Terceiro campo' - Lista de terminais (tty - na forma listada pelo `ttyname'), nomes de m�quinas, nomes de dom�nios (come�ando com "."), endere�os IP ou FQDN, por��o de rede (finalizando com um "."). As palavras chave `ALL' (todos) e `LOCAL' (m�quinas na mesma rede) tamb�m podem ser usadas. _OBS1:_ - A configura��o padr�o do `access.conf' � garantir o acesso a todos os usu�rios, atrav�s de qualquer lugar (permissiva). _OBS2:_: Mesmo se existir uma regra autorizando o acesso ao usu�rio, as restantes ser�o verificadas em busca de uma que bloqueie o acesso do usu�rio. Se nenhuma regra conferir, o usu�rio ter� acesso garantido. _OBS3:_ - O nome de grupo somente � checado quando nenhum nome de usu�rio confere com nenhum usu�rio logado no sistema. _OBS4:_ - Grupos/usu�rios NIS podem ser especificados precedendo o nome do usu�rio ou grupo por uma "@". Abaixo uma configura��o restrita de `/etc/security/access.conf': # # Desabilita o login de todos os usu�rios EXCETO o root no terminal tty1 -:ALL EXCEPT root:tty1

# Permite o login no console de todos os usu�rios especificados. +:gleydson root:console # Conex�es vindas da rede *.debian.org e *.debian.org.br de usu�rios pertencendo # ao grupo operadores s�o consideradas seguras (exceto para o usu�rio root). +:operadores EXCEPT root: .debian.org .debian.org.br # Qualquer outra tentativa de acesso n�o definida acima � bloqueada imediatamente. -: ALL: ALL 16.2.4. Restri��es de servi�os PAM baseados em dia/hora ------------------------------------------------------Estas restri��es s�o controladas pelo arquivo `/etc/security/time.conf', a sintaxe deste arquivo � quatro campos separados por ";": * `Primeiro campo' - Nome do servi�o PAM que ser� controlado (um dos servi�os contidos em `/etc/pam.d'). * `Segundo campo' - Lista de nomes de terminais que a regra que aplicar�. O sinal "&" tem a fun��o _and_, "|" tem a fun��o _or_ e "!" especifica uma exce��o. * `Terceiro campo' - Nome de usu�rios afetados pela regra. O sinal "&" tem a fun��o _and_, "|" tem a fun��o _or_ e "!" especifica uma exce��o. _OBS:_ O "*" poder� ser usado somente no primeiro, segundo ou terceiro campo em uma mesma regra. * `Quarto campo' - DiaSemana/faixa-de-horas que a restri��o se aplicar�. O dia da semana � especificado em duas letras: * `Mo' - Segunda-feira * `Tu' - Ter�a-feira * `We' - Quarta-feira * `Th' - Quinta-feira * `Fr' - Sexta-feira * `Sa' - S�bado * `Su' - Domingo * `Wk' - Todos os dias da semana * `Wd' - Somente s�bado e domingo (fim de semana) * `Al' - Todos os dias O sinal "!" especifica uma exce��o. A faixa de horas � especificada ap�s o dia no formato HHMM-HHMM. Por exemplo: MoTuWe0000-2400 - Segundas, ter�as e quartas MoFrSu0800-1900- - Segundas, sextas e domingo das 08:00 da manha as 19:00 da noite. FrFr0500-0600 - N�o ser� realizada na sexta (especifica��es repetidas s�o anuladas) de 05:00 as 06:00. WkWe0731-1456 - Todos os dias da semana a partir de Quarta de 07:31 da manh� as 14:56 da tarde. AlMo0000-2400 - Todos os dias da semana, exceto segunda-feira. Por padr�o o acesso � garantido a todos os usu�rios. Abaixo um exemplo de restri��es usando o `/etc/security/time.conf':

# Bloqueia o login do usu�rio user1 ou user2 em qualquer tty, a restri��o # durante todos os dias de 00:00 as 06:30 login;tty*;user1|user2;!Al0000-0630 # Bloqueia o acesso do usu�rio root ao servi�o login nos terminais tty* # (e n�o nos terminais ttyp*) nos finais de semana. login;tty* & !ttyp*;root;!Wd0000-2400 # O usu�rio 1 n�o poder� efetuar o login as ter�as feiras de 00:00 as 06:00 login;!tty*;user1;Tu0000-0600 _OBS1:_ Mesmo se existir uma regra autorizando o acesso ao usu�rio, as restantes ser�o verificadas em busca de uma que bloqueie o acesso do usu�rio. Se nenhuma regra conferir, o usu�rio ter� acesso garantido. _OBS2:_ Quando as restri��es de tempo s�o ativadas no `/etc/security/time.conf', o daemon `logoutd' poder� ser ativado manualmente (atrav�s de `/etc/init.d/logoutd') para monitora as restri��es neste arquivo, for�ando o logout de usu�rio de acordo com as configura��es do `/etc/security/time.conf'. Isto ocorrer� automaticamente na pr�xima vez que iniciar o sistema (a distribui��o detecta a presen�a de restri��es de tempo no arquivo `/etc/security/time.conf' para decidir se deve ou n�o carregar este daemon). Quando n�o est� em execu��o, os limites de tempo s�o verificados somente no login do usu�rio, ele poder� ultrapassar este tempo sem ser desconectado do sistema. 16.2.5. Permitindo acesso a grupos extras ----------------------------------------Este recurso � controlado pelo arquivo `/etc/security/group.conf'. Este arquivo � composto por 5 campos separados por ";" (os 4 primeiros s�o os mesmos explicados em Se��o 16.2.4, `Restri��es de servi�os PAM baseados em dia/hora'. O 5o campo cont�m um ou mais grupos (separados por espa�os ou v�rgulas) que ser�o adicionados aos grupos do usu�rio quando as condi��es dos campos anteriores conferirem. _OBS:_ Se o usu�rio escrever um programa que chama um interpretador de comandos e der a permiss�o SGID (chmod g+s programa), ele ter� acesso �quele grupo na hora que quiser. Restrinja o uso de grupos somente a usu�rios de confian�a ou crie grupos espec�ficos para evitar problemas. Exemplo de configura��o do arquivo `/etc/security/group.conf': # Permite que o usu�rio gleydson tenha acesso ao grupo floppy efetuando o login # entre 08:00 da manha e 19:00 da noite login;tty*;gleydson;Al0800-1900;floppy # Todos os usu�rios podem ter acesso ao grupo games e sound aos s�bados e domingos login;tty*;*;SaSu0000-2400;sound games # Todos os usu�rios podem ter acesso ao grupo games e sound todos os dias # de 18:00 as 05:00 da manh� (fora do hor�rio de expediente ;-) login;tty*;*;Al1800-0500;sound,games

# Backups s�o permitidos fora do hor�rio de expediente (para n�o sobrecarregar # a CPU e evitar o uso excessivo de disco). login;tty*;gleydson;Al1830-2400;backup _OBS:_: Mesmo que uma regra confira com o usu�rio, as outras tamb�m ser�o verificadas para garantir acesso grupos extras. 16.2.6. Limita��o de recursos do shell -------------------------------------Estas restri��es s�o especificadas no arquivo `/etc/security/limits.conf'. Seu formato consiste em 4 campos separados por ou ou mais espa�os: * `Primeiro campo' - Especifica o nome de usu�rio, um nome de grupo (@grupo) ou um "*" especificando que as restri��es nos outros campos se aplicam a todos os grupos e todos os usu�rios. * `Segundo campo' - Tipo de restri��o: * `soft' - Limite suave de bloqueio. * `hard' - Limite r�gido de bloqueio. * `-' - Quando o tipo de restri��o n�o se aplica ao �tem que deseja restringir o acesso. Quando somente o limite "hard" (r�gido) � especificado, o limite suave assume o mesmo valor. * `Terceiro campo' - �tem que deseja restringir o acesso: * `core' - Limita o tamanho do arquivo core (KB) * `data' - Tamanho m�ximo de arquivo de dados (KB) * `fsize' - Tamanho m�ximo de arquivo (KB) * `memlock' - Tamanho m�ximo do espa�o de endere�os bloqueado na mem�ria (KB) * `nofile' - N�mero m�ximo de arquivos abertos * `rss' - Tamanho m�ximo residente (KB) * `stack' - Tamanho m�ximo da pilha (KB) * `cpu' - Tempo m�ximo de uso da CPU (MIN) * `nproc' - N�mero m�ximo de processos * `as' - Limite de espa�o de endere�os * `maxlogins' - N�mero m�ximo de logins * `priority' - Prioridade de execu��o de processos de usu�rios * `Quarto campo' - Especifica o valor do campo anterior Os limites aplicados ao usu�rio podem ser visualizados atrav�s do comando `ulimit -S -a' (para listar limites suaves - soft) e `ulimit -H -a' (para listar limites r�gidos - hard). Caso o par�metro _-S_ ou _-H_ sejam omitidos, os limites listados ser�o os suaves (soft). Um exemplo de `/etc/security/limits.conf' (retirado da distribui��o `Debian GNU/Linux': * * @student @faculty @faculty ftp @student

soft hard hard soft hard hard -

core rss nproc nproc nproc nproc maxlogins

0 10000 20 20 50 0 4

gleydson

-

maxlogins

2

_OBS:_ Estas permiss�es passam a ter efeito no momento que o usu�rio se conecta ao sistema, e n�o quando elas s�o modificadas no arquivo `/etc/security/limits.conf'. 16.3. Restri��es de acesso a programas/diret�rios/arquivos usando grupos -----------------------------------------------------------------------Usu�rios podem ter o acesso liberado a diret�rios/arquivos execu��o de programas de acordo com o grupo que pertencem. Este � um recurso valioso na administra��o de sistemas `Unix' que se bem usado, aumenta as restri��es de acesso e seguran�a no acesso/utiliza��o de programas em um ambiente de trabalho. Usu�rios de sistema tendem a usar o usu�rio `root' para fazer tarefas como conex�o com internet, utiliza��o da placa de som, modem, etc. e as vezes nem sabem que isso pode ser feito atrav�s do mesmo usu�rio adicionando este a um grupo espec�fico. Esta tarefa pode ser feita com o comando `adduser usu�rio grupo' ou editando manualmente os arquivos `/etc/group' e `/etc/gshadow'. Podemos ter as seguintes situa��es facilitadas com o uso de grupos: * Usar a placa de som. Os dispositivos usados pela placa de som como `/dev/audio', `/dev/dsp', `/dev/sndstat', etc. normalmente tem permiss�o leitura/grava��o para o usu�rio `root' e grupo `audio' (cheque com o comando `ls -la /dev/audio'). Para autorizar determinados usu�rios usar a placa de som basta adiciona-los neste grupo: `adduser usuario audio'. * Conectar a Internet. Normalmente o utilit�rio ppp tem as permiss�es SUID `root' e grupo `dip'. Adicionamos o usu�rio a este grupo: `adduser usuario dip'. Agora ele poder� conectar/desconectar a internet sem a interven��o do usu�rio `root'. _OBS_ Certamente o usu�rio ter� acesso aos arquivos de configura��o da discagem do `ppp' e conseq�entemente a senha de conex�o internet, e esta senha � a mesma usada no e-mail prim�rio do provedor (com o mesmo nome da conta). Esta mesma situa��o pode acontecer com outros programas que autorize o acesso a grupos, � importante que conhe�a bem as permiss�es do programa e entender se existem riscos. * Utilizar o modem. Um bom grupo para permitir a utiliza��o do modem � `dialout'. O dispositivo utilizado pelo modem (n�o seu link) deve ter permiss�es leitura/grava��o para o usu�rio `root' e grupo `dialout'. Cadastrando o usu�rio neste grupo autorizar� a utiliza��o do modem: `adduser usuario dialout'. * Permitir que diversos usu�rios compartilhem um mesmo diret�rio. Isto � �til quando muitas pessoas est�o desenvolvendo um mesmo projeto. Siga estes passos: * Crie um novo grupo no sistema: `groupadd gp1', a op��o _-g_ permite selecionar manualmente a GID. Opcionalmente voc� poder� usar um grupo j� existente no sistema (veja o arquivo `/etc/group'). * Crie o diret�rio que ser� usado para armazenar os arquivos deste grupo de usu�rios: `mkdir projeto1'). * Mude o dono/grupo do diret�rio: `chown root.gp1 projeto1/' * De permiss�es de leitura/grava��o para o dono/grupo do diret�rio, vamos tamb�m incluir a permiss�o SGID para que

todos os arquivos criados dentro deste diret�rio perten�am ao mesmo grupo e n�o ao grupo prim�rio do usu�rio, assim todos os usu�rios ter�o acesso: `chmod 2770 projeto1' * Agora cadastre os usu�rios que dever�o ter acesso ao diret�rio `projeto1/' no grupo `gp1', somente estes usu�rios e o root ter�o acesso ao diret�rio (permiss�es 2770). * � interessante tamb�m mudar a "umask" do usu�rio de `022' para `002' (ou equivalente) para que os novos arquivos criados tenham permiss�o de leitura/grava��o para o grupo `gp1'. Caso contr�rio, lembre-se de modificar as permiss�es de seus arquivos manualmente. Um �timo comando para fazer isso (sem afetar diret�rios) �: `find . -type f -user usuario1 -exec chmod 0660 \{\} \;'. Este comando parece estranho mas � excelente! um `chmod -R 0660' afetaria at� os diret�rios, imagine o caos. A maioria das distribui��es `Linux' vem com uma boa pol�tica de grupos para permitir um controle eficaz de recurso. Se voc� quer saber quais arquivos em seu sistema pertencem a determinado grupo (�til para saber o que o usu�rio ter� acesso se adiciona-lo �quele grupo) execute o comando: find / -group nome_do_grupo 16.4. Dando poderes de root para executar determinados programas ---------------------------------------------------------------A ferramenta ideal para isto � o `sudo'. Atrav�s dela � poss�vel permitir um usu�rio comum executar um comando como `root' e registrar quando isto foi feito. � poss�vel selecionar os usu�rios/grupos que ter�o acesso e quais aplicativos que poder�o ser usados, estas configura��es s�o feitas no arquivo `/etc/sudoers'. Por exemplo, para o usu�rio "john" usar o comando `shutdown' para desligar o computador: `sudo shutdown -h now'. O `sudo' � um programa muito completo, tomaria muitos Kilobytes guia. Recomendo dar uma lida na p�gina de manual para entender as vari�veis do arquivo de configura��o funcionam. Mesmo assim vai um exemplo simples deste arquivo para iniciar rapidamente o `sudo':

neste como aqui uso do

# arquivo sudoers. # # Edite este arquivo com o comando 'visudo' como root # # # Especifica��o de m�quinas. O primeiro campo (Host_Alias) diz que a vari�vel # LOCALSERVER ser� um nome/endere�o de m�quina Host_Alias LOCALSERVER=192.168.0.1 # Especifica��o de usu�rios. O primeiro campo (User_Alias) diz que a vari�vel # NETMASTERS armazenar� nomes de usu�rios User_Alias NETMASTERS=gleydson, goodboy # Comandos. O primeiro campo (Cmnd_Alias) diz que a vari�vel # C_REDE cont�m comandos do sistema. Mais de um par�metro # deve ser separado por v�rgulas

Cmnd_Alias

C_REDE=/sbin/ipchains, /sbin/iptables

# Padr�es que se aplicam aos usu�rios da vari�vel NETMASTERS. O par�metro # mail_always sempre envia um e-mail ao root avisando sobre o uso do # sudo Defaults:NETMASTERS mail_always # As linha que come�am com o nome de usu�rio ou vari�vel "User_Alias" # definem o acesso aos recursos. O primeiro campo � o usu�rio, o segundo # o endere�o de acesso (opcionalmente seguido de um sinal "=" para # especificar op��es adicionais) o terceiro o comando ou lista de comandos # # O usu�rio root n�o tem restri��es root ALL=(ALL) ALL # Permite que os usu�rios especificados na vari�vel NETMASTERS # acessando dos locais em LOCALSERVER utilizem os comandos # em C_REDE (sem fornecer senha). NETMASTERS LOCALSERVER=NOPASSWD: C_REDE Edite este arquivo com o comando `visudo', ele faz algumas checagens para detectar problemas de configura��o. 16.5. Restringindo o comando `su' --------------------------------Restri��es de acesso atrav�s de grupos, bloqueio de acesso, acesso direto sem senha, etc. podem ser aplicados ao sudo via seu arquivo de configura��o PAM `/etc/pam.d/su'. Abaixo um exemplo explicativo deste arquivo: # A configura��o abaixo requer que o usu�rio seja membro do # grupo adm para usar o 'su'. # auth required pam_wheel.so group=adm # Membros do grupo acima n�o precisam fornecer senha, temos confian�a neles. # auth sufficient pam_wheel.so trust # Usu�rio que pertencem ao grupo "nosu" nunca dever�o ter acesso ao 'su' # auth required pam_wheel.so deny group=nosu # O root n�o precisa fornecer senha ao 'su' auth sufficient pam_rootok.so # Ativa as restri��es PAM de /etc/security/limits.conf session required pam_limits.so # Isto ativa as restri��es PAM de /etc/security/time.conf no # comando 'su' account requisite pam_time.so # M�dulos padr�es de autentica��o Unix auth required pam_unix.so account required pam_unix.so session required pam_unix.so

16.6. Restri��es baseadas em usu�rio/IP --------------------------------------O servi�o `identd' permite identificar os usu�rios que est�o realizando conex�es TCP, adicionalmente esta caracter�stica � usada por programas para fazer restri��es para usu�rios em adi��o ao endere�o de origem/destino. A sintaxe usada nas diretivas de acesso � especificada na forma _usu�rio@endere�o_. O Cap�tulo 12, `Servidor ident' explica a configura��o/utiliza��o/vulnerabilidades e recomenda��es sobre este servi�o. Diversos programas que possuem controle de acesso baseado em IP's/hosts aceitam esta especifica��o, como o `exim', `ircd', e o conhecido `tcpd'. Segue um exemplo da utiliza��o do `identd' com o arquivo `hosts.allow': # Permite o acesso ao servi�o de telnet somente ao usu�rio gleydson conectando # a partir da m�quina com IP 192.168.1.1 in.telnetd: [email protected] # Permite o acesso ao servi�o ftp somente ao usu�rio gleydson conectando de # qualquer m�quina da rede 192.168.1.* in.ftpd: [email protected]. Note que a utiliza��o do `identd' torna a utiliza��o do servi�o um pouco mais restrita, somente conhecendo os "logins" de quem tem acesso ao servi�o, um cracker conseguir� ter acesso ao mesmo servi�o naquele sistema (este � um dos motivos que � recomendado sempre divulgar o m�nimo detalhes poss�veis sobre o sistema para minimizar riscos de ataques). Veja mais detalhes sobre o uso do `identd' em Cap�tulo 12, `Servidor ident'. 16.7. Desabilitando servi�os n�o usados no Inetd -----------------------------------------------Desative todos os servi�os que n�o ser�o utilizados no arquivo `/etc/inetd.conf', isto diminui bastante as possibilidades de ataques em seu sistema. Os nomes de servi�os s�o os par�metros especificados na primeira coluna do arquivo `/etc/inetd.conf' (por exemplo, talk, ircd, pop3, auth, smtp). Para desativar servi�os neste arquivo, ponha o s�mbolo "#" no inicio das linhas que deseja comentar e execute um `killall -HUP inetd'. Alternativamente, o comando `update-inetd' pode ser usado para facilitar esta tarefa: update-inetd --disable finger,talk,time,daytime update-inetd --disable Este comando envia automaticamente o sinal de reinicio (HUP) ao `inetd'. O servi�o poder� ser novamente ativado substituindo a op��o _--disable_ por _--enable_ ou retirando o trecho "##" no come�o

da linha do servi�o do `/etc/inetd.conf'. 16.8. Evitando o uso de `hosts.equiv' e `.rhosts' ------------------------------------------------O arquivo `hosts.equiv' cont�m uma lista de usu�rios autorizados/desautorizados que podem fazer uso dos servi�os "r*" sem fornecer uma senha (como `rsh', `rcp', `rexec', etc), veja Se��o 4.8.3.3, `/etc/hosts.equiv e /etc/shosts.equiv'. � muito f�cil falsificar um nome de usu�rio para obter acesso aos privil�gios de outro usu�rio usando este recurso. Os arquivos `~/.rhosts', `~/.shosts' tem o funcionamento parecido com o `hosts.equiv' mas cont�m somente dois campos, o primeiro especificando o nome do computador (FQDN) e o segundo o nome do usu�rio que tem permiss�o de acesso sem fornecer senha. Ele garantir� este acesso ao usu�rio e m�quina remota especificada neste arquivo. Se for definido somente o nome do computador, o nome de usu�rio dever� ser o mesmo do local para que o acesso sem senha seja garantido. � recomend�vel restringir o acesso a estes arquivos somente ao usu�rio/grupo quando for realmente necess�rio. Um exemplo de `~/.rhosts': maquina1.dominio.com.br usuario1 maquina2.dominio.com.br usuario2 O uso destes dois mecanismos e dos servi�os "r*" s�o desencorajados! (o �ltimo por usar transfer�ncia de dados n�o criptografadas, veja Cap�tulo 14, `Servidor ssh' para uma alternativa melhor). Utilize estes dois mecanismos somente se deseja facilidade no gerenciamento e se sua rede seja absolutamente confi�vel e a seguran�a de dados n�o seja prioridade pra voc�... 16.9. Restringindo o uso do shutdown -----------------------------------Por padr�o todos que tem acesso ao console do sistema podem efetuar o reinicio do computador pressionando CTRL+ALT+DEL. Estas teclas de combina��o s�o definidas pela linha ca:12345:ctrlaltdel:/sbin/shutdown -r now do arquivo `/etc/inittab'. A op��o _-a_ (access) do `shutdown' restringe isto, permitindo somente o reinicio do sistema caso um dos usu�rios cadastrados no arquivo `/etc/shutdown.allow' estejam logados no console. Caso nenhum usu�rio autorizado esteja logado, a mensagem `shutdown: no authorized users logged in' � exibida no console local. O arquivo `/etc/shutdown.allow' deve conter um usu�rio por linha e 32 no m�ximo. A mesma linha do `/etc/inittab' pode ser modificada para a seguinte: ca:12345:ctrlaltdel:/sbin/shutdown -a -t5 -r now _OBS:_ Se a op��o _-a_ seja especificada e o arquivo

`/etc/shutdown.allow' n�o existe, a op��o _-a_ � ignorada. 16.10. Restringindo o acesso ao sistema de arquivos /proc --------------------------------------------------------O patch _restricted proc fs_ � um dos melhores para realizar esta tarefa. Restringindo o acesso ao sistema de arquivos `/proc' evita que o usu�rio normal tenha acesso aos detalhes sobre processos de outros (com `ps aux') ou acesso a detalhes de processos de outros usu�rios existentes nos subdiret�rios num�ricos (equivalentes a PID) em `/proc'. Abaixo algumas caracter�sticas do patch _restricted proc fs_: * � pequeno, r�pido e faz poucas modifica��es no fonte do kernel. * Seu m�todo de funcionamento � baseado nas restri��es de dono/grupo (nativas de ambiente `Unix'). * Restringe a visualiza��o de processos s� dos usu�rios. Adicionalmente ser� especificada uma GID para o diret�rio `/proc', qualquer usu�rio que perten�a ao grupo especificado poder� visualizar todos os processos e entrar em qualquer diret�rio do kernel (sem restri��es, como se n�o tivesse o patch). * Muito est�vel e confi�vel. Este patch deve ser baixado de http://noc.res.cmu.edu/proc, existem vers�es para os kernels da s�rie 2.2 e 2.4, baixe e aplique o patch, na configura��o do kernel ative a op��o `Restricted Proc fs support'. Compile e instale seu kernel. No arquivo `/etc/fstab' inclua um grupo para a montagem do sistema de arquivos `/proc' (vamos usar o grupo `adm' com a GID 4): # /etc/fstab: informa��es est�ticas do sistemas de arquivos. # # <Sist. Arq.> <passo> proc /proc proc defaults,gid=4 0 0 Ap�s reiniciar o sistema, execute o comando `ls -lad /proc' note que o grupo do diret�rio `/proc' ser� modificado para `adm'. Agora entre como um usu�rio e execute um `ps aux', somente seus processos ser�o listados. Para autorizar um usu�rio espec�fico ver todos os processos (ter acesso novamente ao diret�rio `/proc'), inclua este no grupo que usou no arquivo `/etc/fstab': adduser usuario adm Ap�s efetuar o usu�rio j� estar� pertencendo ao grupo `adm' (confira digitando `groups'), e poder� ver novamente os processos de todos os usu�rios com o comando `ps aux'. _OBS1:_ Incluir um usu�rio no grupo `adm' � PERIGOSO, porque este usu�rio poder� ter acesso a arquivo/diret�rios que perten�am a este grupo, como os arquivos/diret�rios em `/var/log'. Se esta n�o � sua inten��o, crie um grupo independente como `restrproc' para controlar quem ter� acesso ao diret�rio `/proc': `addgroup restrproc'. _OBS2:_ Se a op��o `gid' n�o for especificada para a montagem de `/proc' no `/etc/fstab', o grupo `root' ser� usado como padr�o. NUNCA adicione usu�rios ao grupo `root', use o m�todo da observa��o acima

para permitir outros usu�rios ver todos os processos em execu��o. _OBS3_ Caso o servidor `identd' esteja sendo usado na m�quina servidora, ser� necess�rio roda-lo com a mesma GID do diret�rio `/proc' para que continue funcionando. Se ele � executado como daemon, adicione a op��o _-g GRUPO_ no script que inicia o servi�o em `/etc/init.d' e reinicie o daemon. Caso ele seja iniciado via inetd, fa�a a seguinte modifica��o no arquivo `/etc/inetd.conf' (assumindo o uso do `oidentd'): #:INFO: Info services auth stream -i -t 40

tcp

nowait.40

nobody.adm

/usr/sbin/oidentd oidend -q

Veja Cap�tulo 12, `Servidor ident' para detalhes sobre este servi�o. 16.11. Limitando o uso de espa�o em disco (quotas) -------------------------------------------------O sistema de `quotas' � usado para limitar o espa�o em disco dispon�vel a usu�rios/grupo. O uso de parti��es independentes para o diret�rio `/home' e outros montados separadamente n�o � muito eficaz porque muitos usu�rios ser�o prejudicados se a parti��o for totalmente ocupada e alguns possuem requerimentos de uso maior do que outros. O suporte a _Quotas_ deve estar compilado no kernel (se��o _FileSystems_) e o sistema de arquivos dever� ser do tipo _ext2_ ou _XFS_ para funcionar. 16.11.1. Instalando o sistema de quotas --------------------------------------Abaixo o passo a passo para a instala��o de quotas em seu sistema: 1. Recompile seu kernel com suporte a quota. Habilite a op��o "Quota support" na se��o "FileSystems" na configura��o de recursos do seu kernel. 2. Instale o pacote `quota' no sistema (`apt-get install quota'). 3. Habilite a quota para os sistemas de arquivos que deseja restringir no arquivo `/etc/fstab': /dev/hda1 /boot ext2 defaults 1 1 /dev/hda3 / ext2 defaults,usrquota 1 2 /dev/hda4 /usr ext2 defaults,grpquota 1 3 /dev/hda5 /pub ext2 defaults,usrquota,grpquota 1 4 O sistema de arquivos `/dev/hda1' n�o ter� suporte a quota, `/dev/hda3' ter� suporte a quotas de usu�rios (_usrquota_), `/dev/hda4' ter� suporte a quotas de grupos (_grpquota_) e `/dev/hda5' ter� suporte a ambos. Por padr�o � assumido que os arquivos de controle de quota est�o localizados no ponto de montagem da parti��o com os nomes `quota.user' e `quota.group'. 4. Agora ser� necess�rio criar os arquivos `quota.user' e `quota.group' no ponto de montagem de cada parti��o _ext2_ acima que utilizar� o recurso de quotas. O arquivo `quota.user' controla as quotas de usu�rios e `quota.group' controla as quotas de grupos. * Crie um arquivo vazio `quota.user' em `/' (ter� suporte somente a quota de usu�rios, veja a op��o de montagem no `/etc/fstab'): `touch /quota.user' ou `echo -n

5.

6.

7.

# Ativa quotaon

>/quota.user'. * Crie um arquivo vazio `quota.group' em `/usr' (ter� suporte somente a quota de grupos): `touch /usr/quota.group' ou `echo -n >/usr/quota.group'. * Crie um arquivo vazio `quota.user' e `quota.group' em `/pub' (este sistema de arquivos tem suporte a ambos os tipos de quota): `touch /pub/quota.user /pub/quota.group'. Por motivos de seguran�a, as permiss�es dos arquivos de controle de quota `quota.user' e `quota.group' devem ser leitura/grava��o ao usu�rio `root' e sem permiss�es para grupo/outros usu�rios: `chmod 0600 /quota.user /quota.group'. Entre em modo monousu�rio `init 1', desmonte os sistemas de arquivos que utilizar�o a quota e monte-os novamente (isto serve para ativar as op��es de quota). Alternativamente, execute `umount -a' (para desmontar todos os sistemas de arquivos) e `mount -a' para remontar todos. Se voc� ativou as quotas para o sistema de arquivos `/' (como em nosso exemplo) ser� necess�rio reiniciar o sistema. O pr�ximo passo � scanear o disco para criar os dados para as parti��es com suporte a quota (ativadas no `/etc/fstab'): quotacheck -augv O par�metro _-a_ diz para checar todas as parti��es com suporte a quota no arquivo `/etc/mtab', _-u_ para checar quotas de usu�rios, _-g_ para checar grupos e _-v_ para mostrar o progresso da checagem da parti��o. Na primeira execu��o � mostrado uma mensagem de erro de arquivo `quota.user'/`quota.group' corrompido, mas isto � normal porque o arquivo anterior tem tamanho zero. Estes nomes tamb�m servem para o `quotacheck' "auto-detectar" a vers�o do sistema de quota usada no sistema de arquivos. _OBS:_ Certamente ser� necess�rio "for�ar" a remontagem como somente leitura do sistema de arquivos `/' com a op��o _-m_ para o `quotacheck' criar as configura��es de quota nesta parti��o. Agora resta ativar o suporte as quotas de disco em todas as parti��es (_-a_) com recurso de quota especificado (no `/etc/mtab'): quotaon -augv As op��es possuem o mesmo significado do comando `quotacheck'. O utilit�rio `quotaoff' serve para desativar quotas de usu�rios e usa as mesmas op��es do `quotaon'. Estes tr�s utilit�rios somente podem ser usados pelo usu�rio `root'. As op��es de quota podem ser especificadas independente para cada sistema de arquivos: o suporte a quota em /pub (somente grupos de usu�rios no momento). -gv /pub

# Ativa as quotas de usu�rios em /pub quotaon -uv /pub # Desativa as quotas de grupos em /pub (deixando somente a de usu�rios ativa) quotaoff -gv /pub A atualiza��o de quotas durante a grava��o/exclus�o de arquivos � feita automaticamente. O utilit�rio `quotacheck' dever� ser executado sempre que o sistema de quotas for desativado (por n�o haver atualiza��o autom�tica dos dados de uso de disco) ou quando ocorrerem falhas de disco. Na distribui��o `Debian' o `quotacheck' � disparado sempre que

necess�rio ap�s as situa��es de checagem de disco. As quotas de todas as parti��es tamb�m s�o ativadas automaticamente pelo script `/etc/init.d/quota' e `/etc/init.d/quotarpc'. Em sistemas que utilizam NFS e possuem sistemas de arquivos exportados em `/etc/exports', o daemon `rpc.rquotad' dever� ser carregado. Sua fun��o � fornecer os detalhes de `quota' dos sistemas de arquivos locais exportados para as m�quinas clientes. 16.11.2. Editando quotas de usu�rios/grupos ------------------------------------------O programa `edquota' � usado pelo `root' para editar as quotas de usu�rios/grupos. Por padr�o, todos os usu�rios/grupos do sistema n�o possuem quotas. Sua sintaxe � a seguinte `edquota [_op��es_] [_usu�rio/grupo_]' As op��es podem ser: -u Edita a quota do usu�rio especificado (esta � a padr�o). -g

Edita a quota de grupo especificado.

-r Permite editar a quota de sistemas de arquivos remotos atrav�s do daemon `rpc.rquotad'. -t Permite modificar o valor de toler�ncia dos limites que ultrapassam _soft_ at� que sejam bloqueados. Durante o tempo de toler�ncia, ser�o enviados somente avisos sobre a quota ultrapassada sem bloquear totalmente a grava��o de arquivos (at� que o limite _hard_ seja atingido ou o tempo de toler�ncia seja ultrapassado). Quando a quota _soft_ do usu�rio/grupo � estourada, a mensagem "warning: user disk quota excedeed" ser� exibida. Quando a quota _hard_ � ultrapassada, a grava��o atual � interrompida e a mensagem "write failed, user disk limit reatched" � mostrada ao usu�rio. Nenhuma nova grava��o que ultrapasse a quota _hard_ � permitida Por exemplo, para modificar a quota do usu�rio gleydson: `edquota gleydson' Disk quotas for user gleydson (uid 1000): Filesystem blocks soft hard /dev/hda5 504944 500100 15000 20000

hard

inodes

600000

10868

O editor de textos usado poder� ser modificado atrav�s da vari�vel <$EDITOR>. Abaixo a explica��o destes campos: * `Filesystem' - Sistema de arquivos que ter� a quota do usu�rio/grupo editada. As restri��es se aplicam individualmente de acordo com o sistema de arquivos.

soft

* `blocks' - N�mero m�ximo de blocos (especificado em Kbytes) que o usu�rio possui atualmente. O usu�rio `gleydson' est� usando atualmente 504944 Kbytes. * `soft' - Restri��o m�nima de espa�o em disco usado. Atualmente 500100 Kb. * `hard' - Limite m�ximo aceit�vel de uso em disco para o usu�rio/grupo sendo editado. 600000 Kb atualmente. O sistema de quotas nunca deixar� este limite ser ultrapassado. * `inodes' - N�mero m�ximo de arquivos que o usu�rio possui atualmente na parti��o especificada. O usu�rio `gleydson' possui atualmente 10868 arquivos na parti��o `/pub'. * `soft' - Restri��o m�nima de n�mero de arquivos que o usu�rio/grupo possui no disco. Atualmente em 15.000. * `hard' - Restri��o m�xima de n�mero de arquivos que o usu�rio/grupo possui no disco. Atualmente em 20.000. Para desativar as restri��es coloque "0" no campo _soft_ ou _hard_. Quando o limite _soft_ � atingido, o usu�rio � alertado por ter ultrapassado sua quota com a mensagem "warning: user quota excedeed" (quota do usu�rio excedida). O programa `setquota' � uma programa n�o-interativo para edi��o de quotas para ser usado diretamente na linha de comando ou em shell scripts. Ap�s ultrapassar o limite _soft_, come�a a contagem do tempo para que este passe a valer como limite _hard_ (o m�ximo aceit�vel e que nunca poder� ser ultrapassado). O comando `edquota -t' serve para modificar estes valores na parti��o especificada: Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda5 2days 7days Abaixo a explica��o destes campos: * `Filesystem' - Sistema de arquivos que ter� o per�odo de toler�ncia modificado. * `Block grade period' - Tempo m�ximo de toler�ncia para usu�rios/grupos que ultrapassaram sua quota _soft_ de espa�o em disco antes de passar a valer como _hard_. No exemplo, o usu�rio tem 2 dias para excluir poss�veis arquivos ou contactar o administrador para redimensionar o tamanho de quota. O valor padr�o � 7 dias. * `Inode grade period' - Tempo m�ximo de toler�ncia para usu�rios/grupos que ultrapassaram sua quota _soft_ de n�mero de arquivos gravados antes de passar a valer como _hard_. No exemplo, o usu�rio tem 7 dias para excluir poss�veis arquivos ou contactar o administrador para analisar seu tamanho de quota. O valor padr�o � 7 dias. _OBS1:_ - O comando `quotacheck' dever� ser executado na parti��o sempre que novas restri��es/limites forem editados com o `edquota'. Isto atualiza os arquivos `quota.user' e `quota.group'. Lembre-se de desativar o sistema de quotas (`quotaoff -ugv /parti��o') antes de executar este comando (para liberar totalmente a parti��o, `quotacheck' remonta a parti��o somente para leitura quando � executado). Por este motivo � recomend�vel fazer isso em modo monousu�rio.

_OBS2:_ Quando o limite _soft_ (suave) � excedido, o sistema come�ar� a lhe mostrar mensagens alertando a passagem do limite (para lhe dar tempo de eliminar arquivos ou n�o ser pego desprevenido com o bloqueio de grava��o) porque o limite _hard_ (r�gido) nunca poder� ser ultrapassado. _OBS3:_ - O tempo de toler�ncia restante ao usu�rio/grupo quando a quota � ultrapassada poder ser visualizada com o comando `quota' (veja Se��o 16.11.3, `Verificando a quota dispon�vel ao usu�rio'). _OBS4:_ - Quando o usu�rio exclui seus arquivos e volta a ficar abaixo dos limites _soft_ da quota, o tempo de toler�ncia � resetado aos valores padr�es (especificados por `edquota -t'. _OBS5:_ - As quotas de espa�o em disco podem ser definidas automaticamente para os novos usu�rios adicionados ao sistema colocando o espa�o em disco na vari�vel do arquivo `/etc/adduser.conf'. Isto ser� equivalente a digitar o comando `edquota -q QUOTA novo_usu�rio'. 16.11.3. Verificando a quota dispon�vel ao usu�rio -------------------------------------------------Execute o comando `quota' mostra os limites de usu�rios/grupos e a toler�ncia restante antes do limite _soft_ se tornar r�gido. Abaixo alguns exemplos descritivos deste comando: quota Disk quotas for user gleydson (uid 1234): Filesystem blocks quota limit grace /dev/hda5 504944* 500100 600000 00:05

files 10868

quota 0

limit 0

grace

Os campos tem o seguinte significado: * `Filesystem' - Sistema de arquivos. * `blocks' - N�mero de blocos usados atualmente na parti��o (em Kb). O "*" indica que o limite foi ultrapassado. Atualmente em 504944. * `quota' - Limite suave (_soft_) de espa�o na parti��o que o usu�rio/grupo possui. Atualmente 500100. O valor 0 indica que o usu�rio/grupo n�o possui restri��es. * `limit' - Limite m�ximo (_hard_) de espa�o na parti��o que o usu�rio/grupo possui. Atualmente em 600000. O valor 0 indica que o usu�rio/grupo n�o possui restri��es. * `grace' - Toler�ncia antes que o limite _soft_ passe a valer como _hard_ quando o espa�o em disco � ultrapassado. Este usu�rio tem 5 minutos restantes para que isto ocorra. Quando o valor _soft_ volta a ficar abaixo da quota, a toler�ncia � resetada. O par�metro "none" indica que o tempo de toler�ncia expirou (caso existam limita��es de quota que foram ultrapassadas) ou que o usu�rio/grupo n�o possui restri��es. Veja se existe um "*" no campo `blocks'. * `files' - N�mero m�ximo de arquivos que usu�rio/grupo possui atualmente na parti��o. Um "*' indica que o limite foi ultrapassado. Atualmente em 10868. * `quota' - Limite suave (_soft_) de n�mero de arquivos na parti��o que o usu�rio/grupo possui. Atualmente ilimitado.

* `limit' - Limite m�ximo (_hard_) de n�mero de arquivos na parti��o que o usu�rio/grupo possui. Atualmente ilimitado. * `grace' - Toler�ncia antes que o limite _soft_ passe a valer como _hard_ para o n�mero de arquivos ultrapassados. Como n�o existe quota para n�mero de arquivos, n�o existe toler�ncia. A toler�ncia � resetada aos valores padr�es quando o valor _soft_ volta a ficar abaixo da quota. A quota de outros usu�rios/grupos podem ser visualizadas especificando as op��es _-u_ (padr�o) e _-g_ na linha de comando respectivamente. A op��o _-v_ permite visualizar quotas em sistemas de arquivos n�o alocados e _-q_ mostra somente uma mensagem dizendo se o usu�rio est� ou n�o dentro de sua quota: quota -u usuario quota -uq usuario quota -g users Por motivos de seguran�a, voc� n�o poder� visualizar as quotas de outros usu�rios e grupos que n�o pertence (exceto para o usu�rio `root'). 16.11.4. Verificando a quota de todos os usu�rios/grupos do sistema ------------------------------------------------------------------Quando precisamos verificar o uso de quotas de todos os usu�rios/grupos do sistema o `quota' se torna inc�modo e pouco pr�tico. O comando `repquota' lista est� dispon�vel ao administrador para facilitar esta tarefa. Sua listagem � organizada por parti��es listando dados adicionais como `grace time' e aceita as mesmas op��es dos utilit�rios `quotaon' e `quotaoff'. Primeiro s�o listados as restri��es de usu�rios e depois de grupos para a parti��o. (toler�ncia) As op��es aceitas por este utilit�rio tem o mesmo significado das op��es do `quotaon' e `quotaoff': repquota -aug *** Report for user quotas on device /dev/hda3 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------root -29160 0 0 none 9970 0 0 none daemon -64 0 0 22 0 0 man -944 0 0 65 0 0 mail -4960 0 0 823 0 0 news -4 0 0 1 0 0 gleydson -31032 0 0 6956 0 0 testuser -16 0 0 4 0 0 anotheruser -16 0 0 4 0 0 nobody -2344 0 0 2 0 0 *** Report for user quotas on device /dev/hda5 Block grace time: 2days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------root -16052 0 0 none 6443 0 0 none

gleydson

+-

4944

500100

600000

none

10868

0

0

*** Report for group quotas on device /dev/hda5 Block grace time: 7days; Inode grace time: 7days Block limits File limits Group used soft hard grace used soft hard grace ---------------------------------------------------------------------root -20308 0 0 none 636 0 0 none src -11404 0 0 660 0 0 users -1756 0 0 6561 0 0 gleydson -3452 0 0 9307 0 0 Um sinal de "+-" no segundo campo indica quota ultrapassada ou no espa�o em disco, "-+' em n�mero de arquivos e "++" em ambos. Como vimos acima, o este comando tamb�m lista o n�mero de arquivos e bytes pertencentes a cada usu�rio na parti��o (mesmo n�o sendo monitorado pelas restri��es de quota), isto ajuda a monitorar a��es suspeitas com a exced�ncia de espa�o em disco de determinados usu�rios/grupos do sistema. Um exemplo � algu�m que esteja fora da quota e abusando de seu usu�rio/grupo para uso excessivo de espa�o em disco sem seu conhecimento. _OBS:_ Este utilit�rio pode ser executado por qualquer usu�rio no sistema e mostrar o uso de quotas de usu�rios/grupos que n�o deveria ter acesso. � recomendado deve ter permiss�es de leitura/grava��o somente para o usu�rio `root' e sem permiss�es para grupo/outros usu�rios. 16.11.5. Avisando usu�rios sobre o estouro de quota --------------------------------------------------Avisos sobre quota ultrapassada podem ser enviadas automaticamente a todos os usu�rios pelo utilit�rio `warnquota'. Ele poder� ser executado periodicamente atrav�s do `cron' (por padr�o isto � feito diariamente na distribui��o `Debian' pelo script `/etc/cron.daily/quota'). Dados adicionais sobre o envio das mensagens devem ser especificados no arquivo `/etc/warnquota.conf' seu formato � o seguinte: # Programa usado para enviar as mensagens MAIL_CMD = "/usr/sbin/sendmail -t" # Campo de origem da mensagem FROM = "root@localhost" # but they don't have to be: SUBJECT = Quota excedida CC_TO = "root@localhost" SUPPORT = "root@localhost" PHONE = "5555-2525" # O e-mail � enviado aos usu�rios (e usu�rios que pertencem a grupos com a quota excedida) com o seguinte formato: From: root@localhost To: [email protected] Cc: root@localhost Reply-To: root@localhost Subject: Quota Excedida

Date: Sat, 22 Sep 2001 14:27:38 -0400 Hi, We noticed that you are in violation with the quotasystem used on this system. We have found the following violations:

Filesystem /dev/hda5

+-

Block limits used soft hard 504944 500100 600000

grace none

File limits used soft 10868 0

hard 0

grace

We hope that you will cleanup before your grace period expires. Basically, this means that the system thinks you are using more disk space on the above partition(s) than you are allowed. If you do not delete files and get below your quota before the grace period expires, the system will prevent you from creating new files. For additional assistance, please contact us at root@localhost or via phone at 5555-2525. 16.12. Suporte a senhas ocultas ------------------------------Veja Se��o 10.4.1, `Shadow Passwords'. 16.13. Suporte a senhas md5 --------------------------Veja Se��o 10.4.2, `Senhas MD5'. 16.14. Restri��es no hardware do sistema ---------------------------------------As restri��es descritas aqui s�o �teis para diminuir as chances de um ataque por acesso f�sico ser realizado com sucesso no sistema que desejamos proteger. Ter um sistema totalmente seguro � praticamente imposs�vel, mas existem diversas maneiras de se dificultar as coisas. 16.14.1. BIOS do sistema -----------------------Algumas restri��es podem ser configuradas na para diminuir as chances de se obter acesso `root' (usando m�todos conhecidos de recupera��o via disquete/CD inicializ�vel) ou simplesmente aumentar nossa confian�a no sistema: * Coloque uma senha para entrada no Setup da m�quina, compartilhe esta senha _somente_ com as pessoas que tem poder de root (ou seja, pessoal de confian�a que administra a m�quina).

* Mude a seq�encia de partida para somente sua unidade de disco r�gido que cont�m o sistema operacional. As BIOS trazem conven��es de DOS para especificar o m�todo de partida, ent�o _Only C_ quer dizer somente o primeiro disco r�gido, _SCSI_ tentar dispositivos SCSI primeiro, etc. Isso pode variar de acordo com o modelo de sua BIOS. Com os dois �tens acima qualquer um ficar� impedido de inicializar o sistema a partir de um disco de recupera��o ou entrar no Setup para modificar a ordem de procura do sistema operacional para dar a partida via disquetes. 16.14.2. Retirada da unidade de disquetes ----------------------------------------Como n�o � seguro com conhecimentos gabinete e dar um aterrar o pino de recomendada, isso

confiar nas restri��es de senha da BIOS (qualquer um de hardware e acesso f�sico a m�quina pode abrir o curto na bateria que mant�m os dados na CMOS ou sinal da CMOS), a retirada da unidade de disquetes � dificultar� bastante as coisas.

16.14.3. Placas de rede com eprom de boot ----------------------------------------Evite a utiliza��o de placas de rede com recursos de boot via EPROM no servidor, um servidor dhcp/bootp/tftp poder� ser configurado sem problemas por um cracker na rede (caso a BIOS esteja com a ordem inadequada de procura de discos) e o ataque se dar com mais "sofistica��o" e rapidez. 16.14.4. Protegendo o LILO -------------------------A op��o _passwd=senha_ e _restricted_ poder�o ser usadas na se��o da imagem que desejamos proteger. Respectivamente pedem uma senha para a inicializa��o do sistema e caso argumentos como _root=single_ sejam usados para conseguir acesso `root' sem fornecer senha. E deixe somente as permiss�es de acesso ao usu�rio `root' (caso contr�rio sua senha poder� ser vista por qualquer usu�rio) e modifique os atributos deste arquivo para imut�vel para que nem mesmo o `root' possa modifica-lo: `chattr +i /etc/lilo.conf'. 16.14.5. Disco r�gido --------------------O disco r�gido do servidor poder� se retirado como alternativa para se ter acesso aos dados armazenados. Isto poder� ser dificultado com o uso de lacres de disco ou outras maneiras de dificultar mais esta tarefa (mais parafusos, armazenamento em partes de dif�cil manipula��o do HD, etc) qualquer coisa que possa lhe fazer ganhar tempo e despertar suspeitas para evitar o sucesso desta alternativa (ousada). Dados importantes ou confidenciais poder�o ser armazenados em um sistema de arquivos criptografados e serem montados somente pelos administradores que possuem acesso f�sico ao sistema. O algoritmo _Serpent_ � muito forte na prote��o de dados al�m de possuir um �timo desempenho. Patches de criptografia poder�o ser aplicados no kernel

para ativa��o deste recurso (veja Se��o 17.4, `Sistemas de arquivos criptogr�fico') para detalhes. Sensores podem ser ligados na carca�a do HD como forma de disparar um pequeno alarme embutido no gabinete do servidor, se voc� gosta de eletr�nica poder� montar um destes facilmente para chamar a aten��o alimentado por fonte/baterias em um circuito de emerg�ncia, e poder� acomodar sua caixa em uma segunda "carca�a de fonte" apenas para desviar suspeitas. Um circuito interno de c�meras tamb�m � uma boa alternativa para monitorar a movimenta��o. Esquemas de seguran�a dependendo do porte da organiza��o e dos dados que se desejam proteger dever�o ser elaborados e postos em pr�tica. Todos os m�todos imagin�veis dever�o ser considerados de acordo com as possibilidades do ambiente. ------------------------------------------------------------------------------17. Introdu��o ao uso de criptografia para transmiss�o/armazenamento de dados ---------------------------------------------------------------------------Este cap�tulo explica como dados transmitidos em uma rede pode ser capturados, isto ajudar� a entender a vulnerabilidade de servi�os comuns que n�o utilizam criptografia para a transmiss�o de dados e alternativas/programas equivalentes que fazem transmiss�o de dados usando m�todos criptogr�ficos para deixar a mensagem somente leg�vel para origem e destino. 17.1. Introdu��o ---------------Quando enviamos um tr�fego de nossa m�quina para outra (e-mails, mensagens de ICQ, navega��o, ftp, etc) os dados passam por v�rias m�quinas at� atingir o seu destino (isto se chama roteamento). Se algum cracker instalou algum capturador de pacotes (sniffer) em alguma das m�quinas de nossa rota os dados poder�o facilmente visualizados. Crackers normalmente configuram estes programas a procura de campos como "passwd" e outras express�es que sejam �teis para acesso ao seu sistema ou espionagem. Quem gosta de ter sua privacidade violada? A internet definitivamente � uma rede insegura e nem todos os administradores de servidores s�o respons�veis o suficiente para fazer uma configura��o restrita para evitar acesso de pessoas mal intencionadas. Este cap�tulo mostra (na pr�tica) como um sniffer funciona para captura de pacotes, isto ajudar� a entender como servi�os que enviam seus dados em forma texto plano s�o vulner�veis a isto e alternativas para transmiss�o segura de dados. Este cap�tulo tem a inten��o de mostrar alternativas seguras de prote��o dos dados que trafegam em sua rede e a seguran�a de suas instala��es. 17.2. Sniffer

------------O sniffer (farejador) � um programa que monitoram/registram a passagem de dados entre as interfaces de rede instaladas no computador. Os dados coletados por sniffers s�o usados para obten��o de detalhes �teis para solu��o de problemas em rede (quando usado com boas inten��es pelo administrador do sistema) ou para ataques ao sistema (quando usado pelo cracker para obter nomes/senhas e outros detalhes �teis para espionagem). Os sniffers mais conhecidos para sistemas `Linux' s�o `tcpdump', `ethereal'. Este �ltimo apresenta uma interface gr�fica GTK para f�cil opera��o em m�quinas que executam o servidor X. Para explicar o funcionamento de um sniffer, vou assumir o `ethereal' instalado (ele n�o requer modifica��es no sistema al�m de ser f�cil de executar e fazer pesquisa de express�es espec�ficas). Instale o `ethereal' com o comando `apt-get install ethereal'. Agora vamos a pr�tica para entender como o sniffer funciona e a import�ncia da criptografia de dados (s� assim mesmo, n�o da para entender falando muita teoria :-): 1. Conecte-se a Internet 2. Execute o `ethereal' como usu�rio `root'. 3. Pressione `CTRL+K' para abrir a tela de captura de pacotes. Em `Interface' selecione sua interface de internet. Nesta tela clique no bot�o "FILE" e coloque um nome de arquivo que a captura ser� gravada. Opcionalmente marque a op��o "Update list of packets in real time" para monitorar a passagem de pacotes em tempo real. 4. Clique em "OK". A captura de pacotes ser� iniciada 5. Conecte-se a um site ftp qualquer (digamos ftp.debian.org.br). Entre com o usu�rio "anonymous" e senha "[email protected]" 6. Finalize a captura de pacotes clicando no bot�o "STOP" Agora v� em "File"/"Open" e abra o arquivo capturado. Ele est� no formato usado pelo sniffer `tcpdump' como padr�o. Procure no campo "INFO" a linha "Request: USER anonymous", logo abaixo voc� ver� a senha digitada pelo usu�rio. Entendeu agora a import�ncia da criptografia na transfer�ncia segura de dados? n�o s� o nome/senha pode ser capturado mas toda a se��es feitas pelo usu�rio. Scanners como o `tcpdump' e `ethereal' s�o flex�velmente configur�veis para procurar por dados espec�ficos nas conex�es e salva-los para posterior recupera��o. 17.2.1. Detectando a presen�a de sniffers ----------------------------------------Uma caracter�stica comum de sniffers � mudar o modo de opera��o das interfaces monitoradas para o "Modo Prom�scuo" com o objetivo de analisar todo o tr�fego que passa por aquele segmento de rede (mesmo n�o sendo destinados para aquela m�quina). A entrada/sa�da de interfaces no modo prom�scuo � monitorada nos logs do sistema: Sep 25 16:53:37 myserver kernel: device eth0 left promiscuous mode Sep 25 16:53:56 myserver kernel: device eth0 entered promiscuous mode Sep 25 16:54:18 myserver kernel: device eth0 left promiscuous mode

Sep 25 16:54:31 myserver kernel: device eth0 entered promiscuous mode O `logcheck' monitora estas atividades e classificam esta mensagem como prioridade "Viola��o" (dependendo da configura��o dos seus filtros em `/etc/logcheck'. Veja Se��o 5.4.1, `logcheck' para detalhes sobre este programa. _OBS:_ A utiliza��o de `switches' dificulta a captura de pacotes em redes distribu�das porque somente os dados destinados a m�quina onde o sniffer est� instalado poder�o ser capturados. 17.3. Alternativas seguras a servi�os sem criptografia -----------------------------------------------------17.3.1. http -----------Isto � indispens�vel em servidores que servem p�ginas de com�rcio eletr�nico, banco de dados, sistemas banc�rios, administra��o via web ou que tenham dados que oferecem risco, se capturados. Existem duas alternativas: instalar o servidor Apache-ssl (pacote `apache-ssl' ou adicionar o m�dulo `mod-ssl' na instala��o padr�o do `Apache'. Esta segunda � a preferida por ser mais r�pida e simples de se administrar, por usar o servidor Web `Apache' padr�o e sua configura��o. Veja (veja Se��o 11.13, `Uso de criptografia SSL') para detalhes de como configurar um servidor Web para transmiss�o de dados criptografados. 17.3.2. Transmiss�o segura de e-mails ------------------------------------A codifica��o padr�o usada para o envio de mensagens em muitos clientes de e-mail � o MIME/base64. Isto n�o oferece muita seguran�a porque os dados podem ser facilmente descriptografados se pegos por sniffers (veja Se��o 17.2, `Sniffer') ou abertos por administradores n�o confi�veis no diret�rio de spool do servidor. A alternativa mais segura para a transmiss�o de mensagens/arquivos atrav�s do correio eletr�nico � usando o PGP (veja Se��o 17.5, `Usando pgp (`gpg')para criptografia de arquivos') em conjunto com um MUA (Mail User Agent - cliente de e-mails) que suporte o envio de mensagens criptografadas/assinadas usando PGP. Os dois programas mais usados em sistemas `Unix' s�o o `mutt' e o `sylpheed'. O `mutt' � um MUA para modo texto e o `sylpheed' para modo gr�fico. Ambos s�o muito flex�veis, permitem uma grande variedade de configura��es, personaliza��es, possuem agenda de endere�os e gerenciam diversas contas de e-mails em um s� programa. Para encriptar/assinar uma mensagem no `mutt' escreva/responda seu e-mail normalmente, quando aparecer a tela onde voc� tecla "y" para enviar a mensagem, tecle "p" e selecione uma das op��es para criptografar/assinar uma mensagem. Para fazer a mesma opera��o no `sylpheed', escreva/responda seu e-mail normalmente e clique no menu "Mensagem" e marque "assinar", "criptografar" ou ambos. A chave p�blica dever� estar dispon�vel para

tal opera��o (veja Se��o 17.5.8, `Adicionando chaves p�blicas ao seu chaveiro pessoal' e Se��o 17.5.7, `Extraindo sua chave p�blica do chaveiro'). 17.3.3. Servidor pop3 --------------------A alternativa mais segura � a utiliza��o do protocolo `IMAP' com suporte a ssl. Nem todos os clientes de e-mail suportam este protocolo. 17.3.4. Transfer�ncia de arquivos --------------------------------Ao inv�s do `ftp', use o `scp' ou o `sftp' para transfer�ncia segura de arquivos. Veja Se��o 14.2.2, `scp' e Se��o 14.2.3, `sftp'. 17.3.5. login remoto -------------------Ao inv�s do uso do `rlogin', `telnet' e `rsh' utilize o `ssh' (veja Se��o 14.2.1, `ssh') ou o telnet com suporte a ssl (veja Se��o 13.1.6, `Instala��o'). 17.3.6. Bate papo via IRC ------------------------O programa `SILC' (Secure Internet Live Conference) � um sistema IRC que realiza a criptografia de dados durante o bate papo entre diversos usu�rios conectados via rede. 17.3.7. Transmiss�o de mensagens via ICQ ---------------------------------------O protocolo ICQ padr�o al�m dos dados trafegarem sem nenhuma prote��o, operam sobre o protocolo UDP. O protocolo UDP � limitado a pacotes de 512 bytes e n�o possui muitos campos para a checagem da autenticidade de endere�os. Isto � bom para transmitir dados em alta velocidade e consumir menos MTU em sua interface de rede mas isto facilita a falsifica��o de pacotes enviados ao destinat�rio como se fossem outra pessoa. Outro ponto fraco � que se alguma coisa acontecer com os pacotes UDP, eles ser�o simplesmente descartados perdendo a mensagem. O programa `licq' (cliente de ICQ para `Linux') pode ser compilado com o suporte a `ssl' para transmiss�o segura de dados. 17.4. Sistemas de arquivos criptogr�fico ---------------------------------------Esta � uma forma excelente para armazenamento seguro de seus dados, pois estar�o criptografados e ser�o somente acessados ap�s fornecer uma senha que s� voc� conhece. O sistema usado � a montagem de um arquivo comum como um sistema de arquivos via loopback voc� pode escolher um nome de arquivo discreto para dificultar sua localiza��o (use a imagina��o) e poder� ser armazenado at� mesmo em parti��es n�o-ext2. Siga estes passos para criar seu sistema de arquivos criptografado (baseado no `Loopback-Encripted-Filesystem'):

Suporte no kernel Baixe o patch criptogr�fico de ftp://ftp.kernel.org/pub/linux/kernel/crypto de acordo com a sua vers�o do kernel e aplique os patches. Este suporte n�o pode ser inclu�do nativamente no kernel devido a restri��es de uso e importa��o de criptografia impostas pelos EUA e outros pa�ses, com este suporte embutido o kernel n�o poderia ser distribu�do livremente. Se o patch para seu kernel n�o existir, pegue a vers�o anterior mais pr�xima (se n�o existir o patch para seu kernel `2.2.19', pegue a vers�o `2.2.18' do patch internacional). Isto certamente funcionar�. Op��es de compila��o do kernel Na se��o `Crypto Support' ative `Crypto Ciphers' e ative o suporte aos ciphers `Twofish', `blowfish', `cast128', e `serpent' (estes s�o distribu�dos livremente e sem restri��es). Todos possuem cifragem de 128 bits, exceto o `blowfish' que � 64 bits. Tamb�m � recomendado ativar os m�dulos em `Digest algorithms'. Na se��o `Block Devices': ative o suporte a `loopback' (necess�rio para montar arquivos como dispositivos de bloco) e `Use relative block numbers as basis for transfer functions' (isto permite que um backup do sistema de arquivos criptografado seja restaurado corretamente em outros blocos ao inv�s dos originais). Ative tamb�m o suporte para `General encription support' e o suporte aos cyphers `cast128' e `twofish'. N�o ative as op��es de criptografia para a se��o "Networking" (a n�o ser que saiba o que est� fazendo). Recompile e instale seu kernel . Crie um arquivo usando os n�meros aleat�rios de `/dev/urandom': `dd if=/dev/urandom of=/pub/swap-fs bs=1M count=15' Ser� criado um arquivo chamado `swap-fs' (um arquivo de troca tem caracter�sticas que ajudam a esconder um sistema de arquivos criptografado que � o tamanho e n�o poder� ser montado pelo usu�rio comum, evitando desconfian�as). O processo de cria��o deste arquivo � lento, em m�dia de 1MB a cada 10 segundos em um Pentium MMX. Monte o arquivo como um sistema de arquivos loop `losetup -e twofish /dev/loop0 /pub/swap-fs' O algoritmo de criptografia � selecionado pela op��o _-e_. Algoritmos recomendados s�o o `serpent' e `twofish' (ambos possuem cifragem de 128 bits), sendo o serpent o preferido. gerenciamento do sistema loop encriptado � feito atrav�s do m�dulo `loop_gen'.

O

Quando � executado pela primeira vez, ser� lhe pedida uma senha que ser� usada para montagens futuras de seu sistema de arquivos. Digite-a com aten��o pois ela ser� lhe pedida apenas uma vez. Para desativar o sistema de arquivos loop, execute o comando:

`losetup -d /dev/loop0' _OBS:_ Se errou a senha ser� necess�rio desmontar, apagar o arquivo criado e repetir o procedimento. Crie um sistema de arquivos ext2 para armazenamento de dados `mkfs -t ext2 /dev/loop0' ou `mkfs.ext2 /dev/loop0' Monte o sistema de arquivos Crie um diret�rio que ser� usado para montagem do seu sistema de arquivos, se preferir monta-lo dentro de seu diret�rio pessoal para armazenar seus arquivos, crie um diret�rio com as permiss�es "0700". mount /pub/swap-fs /pub/criptofs -t ext2 -o loop Agora poder� gravar seus arquivos dentro deste diret�rio normalmente como qualquer outro. O comando `df -hT' listar� a parti��o loop como uma parti��o do tipo `ext2' comum. Desmontando/Protegendo os dados Ap�s usar o sistema de arquivos criptogr�fico, desmonte-o e desative o dispositivo loopback: umount /pub/criptofs losetup -d /dev/loop0 Remontando o sistema de arquivos criptografado Execute novamente os comandos: losetup -e twofish /dev/loop0 /pub/swap-fs mount /pub/swap-fs /pub/criptofs -t ext2 -o loop Ser� pedida a senha que escolheu e seu sistema de arquivos ser� montado em `/pub/swap-fs'. Com este sistema, seus dados estar�o protegidos mesmo do usu�rio `root'. 17.5. Usando pgp (`gpg')para criptografia de arquivos ----------------------------------------------------O `gpg' (GNU pgp, vers�o livre da ferramenta pgp) permite encriptar dados, assim somente o destinat�rio ter� acesso aos dados, adicionalmente poder� verificar se a origem dos dados � confi�vel (atrav�s da assinatura de arquivos). O sistema PGP se baseia no conceito de chave _p�blica_ e _privada_: Sua chave _p�blica_ � distribu�da para as pessoas que deseja trocar dados/mensagens e a chave _privada_ fica em sua m�quina (ela n�o pode ser distribu�da). As chaves p�blicas e privadas s�o armazenadas nos arquivos `pubring.gpg' e `secring.gpg' respectivamente, dentro do subdiret�rio `~/.gnupg'. Veja Se��o 17.5.2, `Criando um par de chaves p�blica/privada' para criar este par de chaves. Os dados que recebe de outra pessoa s�o criptografados usando sua chave p�blica e somente voc� (de posse da chave privada) poder�

desencriptar os dados. Quando assina um arquivo usando o pgp, ele faz isto usando sua chave privada, o destinat�rio de posse da chave p�blica poder� ent�o confirmar que a origem dos dados � confi�vel. O `gpg' vem largamente sendo usado para transmiss�o segura de dados via internet. Muitos programas de e-mails como o `mutt' e `sylpheed' incluem o suporte a pgp embutido para envio de mensagens assinadas/encriptadas (MIME n�o tem uma codifica��o segura e n�o garante que a mensagem vem de quem realmente diz ser). Um servidor de e-mail no `Linux' configurado como as mesmas configura��es/endere�os do provedor da v�tima pode enganar com sucesso um usu�rio passando-se por outro. 17.5.1. Instalando o PGP -----------------------apt-get install gnupg Ap�s instalar o `gnupg', execute o comando `gpg' para criar o diret�rio `~/.gnupg' que armazenar� as chaves p�blica e privada. 17.5.2. Criando um par de chaves p�blica/privada -----------------------------------------------Para gerar um par de chaves pessoais use o comando `gpg --gen-key'. Ele executar� os seguintes passos: 1. `Chave criptogr�fica' - Selecione _DSA e ELGamal_ a n�o ser que tenha necessidades espec�ficas. 2. `Tamanho da chave' - 1024 bits traz uma boa combina��o de prote��o/velocidade. 3. `Validade da chave' - 0 a chave n�o expira. Um n�mero positivo tem o valor de dias, que pode ser seguido das letras `w' (semanas), `m' (meses) ou `y' (anos). Por exemplo, "7m", "2y", "60". Ap�s a validade, a chave ser� considerada inv�lida. 4. `Nome de usu�rio' - Nome para identificar a chave 5. `E-mail' - E-mail do dono da chave 6. `coment�rio' - Uma descri��o sobre a chave do usu�rio. 7. `Confirma��o' - Tecle "O" para confirmar os dados ou uma das outras letras para modificar os dados de sua chave. 8. `Digite a FraseSenha' - Senha que ir� identific�-lo(a) como propriet�rio da chave privada. � chamada de FraseSenha pois pode conter espa�os e n�o h� limite de caracteres. Para alter�-la posteriormente, siga as instru��es em Se��o 17.5.11, `Mudando sua FraseSenha'. 9. `Confirme e aguarde a gera��o da chave p�blica/privada'. 17.5.3. Encriptando dados ------------------------Use o comando `gpg -e arquivo' faz a encripta��o de dados: gpg -e arquivo.txt Ser� pedida a identifica��o de usu�rio, digite o nome que usou para criar a chave. O arquivo criado ser� encriptado usando a chave p�blica do usu�rio (`~/.gnupg/pubring.gpg') e ter� a extens�o `.gpg' adicionada (`arquivo.txt.gpg'). Al�m de criptografado, este arquivo �

compactado (recomend�vel para grande quantidade de textos). A op��o _-a_ � usada para criar um arquivo criptografado com sa�da ASCII 7 bits: gpg -e -a arquivo.txt O arquivo gerado ter� a extens�o `.asc' acrescentada (`arquivo.txt.asc') e n�o ser� compactado. A op��o _-a_ � muito usada para o envio de e-mails. Para criptografar o arquivo para ser enviado a outro usu�rio, voc� dever� ter a chave p�blica do usu�rio cadastrado no seu chaveiro (veja Se��o 17.5.8, `Adicionando chaves p�blicas ao seu chaveiro pessoal') e especificar a op��o _-r_ seguida do nome/e-mail/ID da chave p�blica: gpg -r kov -e arquivo.txt O exemplo acima utiliza a chave p�blica de kov para encriptar o arquivo `arquivo.txt' (somente ele poder� decriptar a mensagem usando sua chave privada). _OBS:_ � recomend�vel especificar o nome de arquivo sempre como �ltimo argumento. 17.5.4. Descriptando dados com o gpg -----------------------------------Agora vamos fazer a opera��o reversa da acima, a op��o _-d_ � usada para decriptar os dados usando a chave privada: gpg -d arquivo.txt.asc >arquivo.txt gpg -d arquivo.txt.gpg >arquivo.txt Descriptografa os arquivos `arquivo.txt.asc' e `arquivo.txt.gpg' recuperando seu conte�do original. A sua "FraseSenha" ser� pedida para descriptografar os dados usando a chave privada (`~/.gnupg/secring.gpg'). 17.5.5. Assinando arquivos -------------------------Assinar um arquivo � garantir que voc� � a pessoa que realmente enviou aquele arquivo. Use a op��o _-s_ para assinar arquivos usando sua chave privada: gpg -s arquivo.txt A "FraseSenha" ser� pedida para assinar os dados usando sua chave privada. Ser� gerado um arquivo `arquivo.txt.gpg' (assinado e compactado). Adicionalmente a op��o _--clearsign_ poder� ser usada para fazer uma assinatura em um texto plano, este � um recurso muito usado por programas de e-mails com suporte ao gpg: gpg -s --clearsign arquivo.txt Ser� criado um arquivo chamado `arquivo.txt.asc' contendo o arquivo assinado e sem compacta��o.

17.5.6. Checando assinaturas ---------------------------A checagem de assinatura consiste em verificar que quem nos enviou o arquivo � realmente quem diz ser e se os dados foram de alguma forma alterados. Voc� dever� ter a chave p�blica do usu�rio no seu chaveiro para fazer esta checagem (veja Se��o 17.5.8, `Adicionando chaves p�blicas ao seu chaveiro pessoal'). Para verificar os dados assinados acima usamos a op��o _--verify_: gpg --verify arquivo.txt.asc Se a sa�da for "Assinatura Correta", significa que a origem do arquivo � segura e que ele n�o foi de qualquer forma modificado. gpg --verify arquivo.txt.gpg Se a sa�da for "Assinatura INCORRETA" significa que ou o usu�rio que enviou o arquivo n�o confere ou o arquivo enviado foi de alguma forma modificado. 17.5.7. Extraindo sua chave p�blica do chaveiro ----------------------------------------------Sua chave p�blica deve ser distribu�da a outros usu�rios para que possam enviar dados criptografados ou checar a autenticidade de seus arquivos. Para exportar sua chave p�blica em um arquivo que ser� distribu�do a outras pessoas ou servidores de chaves na Internet, use a op��o _--export_: gpg --export -a -r usuario >chave-pub.txt A op��o _-r_ especifica que chave p�blica ser� exportada (podem existir v�rias no seu chaveiro, al�m de sua chave p�blica) podem ser usados o nome do usu�rio/e-mail/IDchave. A op��o _-a_ permite que os dados sejam gravados usando ASCII 7 bits. 17.5.8. Adicionando chaves p�blicas ao seu chaveiro pessoal ----------------------------------------------------------Isto � necess�rio para o envio de dados criptografados e checagem de assinatura do usu�rio, use a op��o _--import_: gpg --import chave-pub-usuario.txt Assumindo que o arquivo `chave-pub-usuario.txt' cont�m a chave p�blica do usu�rio criada em Se��o 17.5.7, `Extraindo sua chave p�blica do chaveiro'. O `gpg' detecta chaves p�blicas dentro de textos e faz a extra��o corretamente. Minha chave p�blica pode ser encontrada em Se��o 18.7, `Chave P�blica PGP' ou http://pgp.ai.mit.edu. 17.5.9. Listando chaves de seu chaveiro --------------------------------------Use o comando `gpg --list-keys' para listar as chaves p�blica do seu chaveiro. O comando `gpg --list-secret-keys' lista suas chaves privadas.

17.5.10. Apagando chaves de seu chaveiro ---------------------------------------Quando uma chave p�blica � modificada ou por qualquer outro motivo deseja retira-la do seu chaveiro p�blico, utilize a op��o _--delete-key_: gpg --delete-key usuario Pode ser especificado o nome de usu�rio, e-mail IDchave ou qualquer outro detalhe que confira com a chave p�blica do usu�rio. Ser� pedida a confirma��o para excluir a chave p�blica. _OBS:_ A chave privada pode ser exclu�da com a op��o _--delete-secret-key_. Utilize-a com o m�ximo de aten��o para excluir chaves secretas que n�o utiliza (caso use mais de uma), a exclus�o acidental de sua chave secreta significa � como perder a chave de um cofre de banco: voc� n�o poder� descriptografar os arquivos enviados a voc� e n�o poder� enviar arquivos assinados. Mesmo assim se isto acontecer acidentalmente, voc� poder� recuperar o �ltimo backup da chave privada em `~/.gnupg/secring.gpg~'. 17.5.11. Mudando sua FraseSenha ------------------------------Execute o comando `gpg --edit-key usu�rio', quando o programa entrar em modo de comandos, digite `passwd'. Ser� lhe pedida a "Frase Senha" atual e a nova "Frase Senha". Digite "save" para sair e salvar as altera��es ou "quit" para sair e abandonar o que foi feito. O `gpg --edit-key' permite gerenciar diversos aspectos de suas chaves � interessante explora-lo digitando "?" para exibir todas as op��es dispon�veis. 17.5.12. Assinando uma chave digital -----------------------------------A assinatura de chaves � um meio de criar la�os de confian�a entre usu�rios PGP. Assinar uma chave de algu�m � algo s�rio, voc� deve ter no��o do que isto significa e das conseq��ncias que isto pode trazer antes de sair assinando chaves de qualquer um. O pr�prio teste para desenvolvedor da distribui��o `Debian' requer como primeiro passo a identifica��o do candidato, caso sua chave pgp seja assinada por algum desenvolvedor desta distribui��o, imediatamente o teste de identifica��o � completado. A partir disso voc� deve ter uma no��o b�sica do que isto significa. Para assinar uma chave siga os seguintes passos: 1. Importe a chave p�blica do usu�rio (veja Se��o 17.5.8, `Adicionando chaves p�blicas ao seu chaveiro pessoal'). 2. Execute o comando `gpg --edit-key usuario' (onde _usuario_ � o nome do usu�rio/e-mail/IDchave da chave p�blica importada). 3. Digite `list', e selecione a chave p�blica (pub) do usu�rio com o comando `uid [numero_chave]'. Para assinar todas as chaves p�blicas do usu�rio, n�o selecione qualquer chave com o comando `uid'. 4. Para assinar a chave p�blica do usu�rio digite `sign', ser�

5.

perguntado se deseja realmente assinar a chave do usu�rio e ent�o pedida a "FraseSenha" de sua chave privada. Digite "list", repare que existe um campo chamado `trust: n/q' no lado direito. O primeiro par�metro do "trust" indica o valor de confian�a do dono e o segundo (ap�s a `/') o valor de confian�a calculado automaticamente na chave. As seguintes possuem o seguinte significado: * `-' - Nenhum dono encontrado/confian�a n�o calculada. * `e' - Chave expirada/falha na checagem de confian�a. * `q' - Quando n�o conhece o usu�rio. * `n' - Quando n�o confia no usu�rio (� o padr�o). * `m' - Pouca confian�a no usu�rio. * `f' - Totalmente confi�vel. * `u' - Indiscutivelmente confi�vel. Somente usado para especificar a chave p�blica do pr�prio usu�rio. O valor de confian�a da chave pode ser modificado com o comando `trust' e selecionando uma das op��es de confian�a. Os valores de confian�a para a chave p�blica pessoal � `-/u' (n�o � necess�rio calcular a confian�a/indiscutivelmente confi�vel).

17.5.13. Listando assinaturas digitais -------------------------------------Execute o comando `gpg --list-sigs' para listas todas as assinaturas existentes no seu chaveiro. Opcionalmente pode ser especificado um par�metro para fazer refer�ncia a assinatura de um usu�rio:`gpg --list-sigs usuario'. O comando `gpg --check-sigs' adicionalmente faz a checagem de assinaturas. ------------------------------------------------------------------------------18. Ap�ndice -----------Este cap�tulo cont�m considera��es sobre o guia Foca GNU/Linux. 18.1. Sobre este guia --------------------Esta guia foi criado com a inten��o de servir como refer�ncia a usu�rios _Avan�ados_ que j� dominam grande parte do sistema operacional e procuram aprender mais sobre os seus detalhes e configura��es especiais ou com refer�ncia de consulta r�pida. A vers�o que esta lendo agora foi gerada com as seguintes op��es: * Descri��o detalhada de comandos * Op��es usadas em comandos e programas * Observa��es * Exemplos para a melhor compreens�o do assunto discutido. e cont�m o(s) n�vel(is) de aprendizado (Iniciante, Intermedi�rio e Avan�ado): * Avan�ado O _Foca GNU/Linux_ � atualizado frequentemente, por este motivo

recomendo que preencha a ficha do aviso de atualiza��es na p�gina web em Foca Linux HomePage (http://focalinux.cipsga.org.br) no fim da p�gina principal. Ap�s preencher a ficha do aviso de atualiza��es, eu te enviarei um e-mail sobre o lan�amento de novas vers�es do guia e o que foi modificado, desta forma voc� poder� decidir em copia-la caso a nova vers�o cont�m modifica��es que considera importantes. Vers�es diferentes deste guia podem ser geradas a partir do c�digo fonte SGML ou obtidas atrav�s da home page principal (para detalhes veja Se��o 18.3, `Onde encontrar a vers�o mais nova do guia?'). 18.2. Refer�ncias de aux�lio ao desenvolvimento do guia ------------------------------------------------------* As se��es sobre comandos/programas foram constru�das ap�s uso, teste e observa��o das op��es dos comandos/programas, help on line, p�ginas de manual, info pages e documenta��o t�cnica do sistema. * How-tos do Linux (principalmente o _Networking Howto_, _Security-Howto_) ajudaram a formar a base de desenvolvimento do guia e desenvolver algumas se��es (vers�es _Intermedi�rio_ e _Avan�ado_ somente). * Todos os exemplos e se��es descritivas do guia s�o de minha autoria. Quanto a exemplos de configura��es e utiliza��o de programas, ser� citada a origem que foram baseados n�o desmerecendo o trabalho de seus autores. * Uso de programas e macetes aprendidos no dia a dia para gerenciar m�quinas, controlar redes e automatizar sistemas. * As se��es do n�vel avan�ado constru�das com base em outras documenta��es, ter�o as refer�ncias explicitamente citadas em seus respectivos cap�tulos. * Manual de Instala��o da _Debian GNU/Linux_ - Os cap�tulos contendo materiais extra�dos do manual de instala��o da Debian s�o muito �teis e explicativos, seria desnecess�rio reescrever um material como este. O texto � claro e didaticamente organizado, o documento aborda detalhes t�cnicos �teis sobre hardwares em geral e o Linux ausentes nos manuais de outras distribui��es Linux. 18.3. Onde encontrar a vers�o mais nova do guia? -----------------------------------------------Novas vers�es deste guia, avisos de lan�amento, outros n�veis de aprendizado (Iniciante, Intermedi�rio e Avan�ado), vers�es para outras distribui��es Linux podem ser encontradas em: Foca GNU/Linux Homepage (http://focalinux.cipsga.org.br). Se quiser receber notifica��es de novas vers�es por E-Mail, envie uma mensagem para pedindo para ser inclu�do na lista de atualiza��es do guia ou preencha o formul�rio encontrado no final da HomePage do guia (recomendado). 18.4. Colaboradores do Guia ---------------------------

Entre as principais colabora��es at� a vers�o atual, posso citar as seguintes: * `Djalma Valois ' - Pela do Foca GNU/Linux e do site MetaInfo do amigo feliz vendo o Foca GNU/Linux fazendo parte de positivo como o CIPSGA � para o crescimento e software livre nacional.

recente hospedagem Ma�an. Estou muito um projeto t�o desenvolvimento do

* `Bakurih ' - Revis�o inicial do documento. * `Eduardo Marcel Ma�an ' - Pelo apoio dado atrav�s da hospedagem da p�gina do guia no Metafo (http://www.metainfo.org) nos livrando dos banners da Geocities... * `Michelle Ribeiro <[email protected]>' - Por dispensar parte de seu atencioso tempo enviando revis�es e sugest�es que est�o melhorando bastante a qualidade do guia. Entre eles detalhes que passaram desapercebidos durante muito tempo no guia e p�gina principal. * `Augusto Campos ' - Descri��o sobre a distribui��o `Suse' . * `Paulo Henrique Baptista de Oliveira ' - Pelo apoio moral oferecido durante os freq�entes lan�amentos do guia, acompanhamento e divulga��o. * `Diego Abadan ' - Envio de corre��es significativas, novos endere�os de listas de discuss�o. * `Alexandre Costa ' - Envio de centenas de patches ortogr�ficos nas vers�es Iniciante e Intermedi�rio do guia que passaram desapercebidas durante v�rias vers�es do guia... * `Christoph Simon ' - Pela pesquisa e a gigantesca colet�nea de textos sobre o Linux enviada. Eles est�o sendo muito �teis tanto para mim quanto no desenvolvimento do guia. * `Gustavo Noronha <[email protected]>' - Vem enviando freq�entes corre��es, contribui��es construtivas ao desenvolvimento al�m de apoio ao desenvolvimento do guia . Vale a pena destaca-lo por sua atual dedica��o junto a distribui��o Debian/GNU, sua tradu��o e a comunidade Open Source. 18.5. Marcas Registradas -----------------------Todas as marcas registradas citadas neste guia s�o propriedades de seus respectivos autores. 18.6. Futuras vers�es

--------------------Estes s�o os materiais que pretendo adicionar em futuras vers�es do guia: * Acrescentar mais detalhes sobre o sistema gr�fico X-Window. * Entre outros itens que venho estudando para verificar se encaixam no perfil do guia. Esta � uma futura implementa��o que venho estudando para acompanhar o crescimento do guia. Sugest�es s�o bem vindas e podem ser enviadas para . 18.7. Chave P�blica PGP ----------------------Chaves PGP s�o usadas para criptografar arquivos, e-mails ou qualquer outra coisa que desejamos que somente uma pessoa tenha acesso. O PGP segue o padr�o de chave p�blica/privada; a chave p�blica � distribuida a todos e a chave privada permanece na posse do criador para que ele seja o �nico a ter acesso aos dados criptografados ap�s digitar a "frase de acesso" correta. Minha chave PGP segue abaixo, ela tamb�m pode ser encontrada em http://pgp5.ai.mit.edu. Se voc� deseja saber mais sobre o PGP, recomendo um excelente documento encontrado em http://www.cipsga.org.br encontrado na se��o `Apostilas'. -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org mQGiBDl7WYgRBACsQNtIozvf8XId+xEpF2D1x7nqgFdJyn1QA2VzXg0/OZ9DewXj qr7ChEIoyyzAmxBSubE/jdtkAb9+2LsE9+OXgzJvBc4luYpv+HG2IXlMPujI9drO ubLlK6xqPiakBgqBTS74rp/ZEEAGQsr0sug7b8nsXHMk+spyGkjsU8pPWwCgltai 4vfmBDMZMqBYvUoksVxbaKcD/ApAMghgE53KAAKFtwXI0o7K1DJmdZBufCvGDbEB Y3MVS4BI+aXxoP5zQpEmQ5+lYOZ8RjPL9pNUJa9nOQtjf7Kiw/41BPDtlZXCeRR5 OcQTit0lYRCLGam7FZ22uliwh0h/3lpf4olMff3qeLqv1DECbo8Qsdn6yxynLihE OA9kA/9K1sqiIl/+gXM3/Sjz8EcrwQNklV3MoaETbDmukbXcOEUjdqfFr1xARM5W 8SKoVrWO5y1oa1e9XcQuK6g8c7KeJsK/GEWYiRwX2X2AqdBC2ZzVfJSmgpguZJHn ltMdYZhPwZaCsNPdQSlem3UrGupL0pbpT7PqkvyAHBH2itB9X7RKR2xleWRzb24g TWF6aW9saSBkYSBTaWx2YSAoQ2hhdmUgUEdQIFBlc3NvYWwpIDxnbGV5ZHNvbkBl c2NlbHNhbmV0LmNvbS5icj6IVgQTEQIAFgUCOXtZiAQLCgQDAxUDAgMWAgECF4AA CgkQpWvD35hbooFdwgCfQijPTW5VH+Cep1HIBvyuw9uMg7wAoI/RYW0tkjjnhrgH 8+Zqx6AgGlQ/iEYEEBECAAYFAjnlrPAACgkQoUSye+uc2tWZPgCfVgR4lbd8XPBm bjPupLzB3EYAPI8AoJomkfsgz+NuUZy1mD6pI1Ptc/fDiEYEEBECAAYFAjm4FfUA CgkQco65AkzGCoF34gCgsVcH4b3s6kfCtjD7iMMhkubnDnUAoL2UiorB3Z/m3f9A RZiRMhQUclMRiEYEEBECAAYFAjm4ITAACgkQt1anjIgqbEupXgCg1/NjvT562Hgt /ft5JETOf3yOFywAn1SmK3unyhMU5GU9d49MNM3fNgBtiEYEEBECAAYFAjnFWrYA CgkQORwuc54x+1t8VQCeMZTCla98rrI60EnlkAvb9AaScm4AnA4V795vcVlr3ix9 f6fcl5YGamKciEYEEBECAAYFAjvSF6sACgkQUZATEoypqPVQ7wCbBTRiSGGMzMTd KJotfRKf5aoUAr0AoIAX0oE5XEEFm7Ea0IQqG91T9TvXtDtHbGV5ZHNvbiBNYXpp b2xpIGRhIFNpbHZhIChEZXZlbG9wZXIpIDxnbGV5ZHNvbkBkZWJpYW4ub3JnPohX BBMRAgAXBQI7BR7fBQsHCgMEAxUDAgMWAgECF4AACgkQpWvD35hbooESRACcCliY yxR02KEBYs8cxKav9L0wlzwAn2Z9DWAbqi9Mv4fqPqZ7mViSMRbeiEYEEBECAAYF AjsauX0ACgkQt1anjIgqbEvBEACffJxYfK22YPQ8ZkcjIc85BCiPLuUAnRq1EE9i

ukdUHPUo0vzHBeiN355miEYEEBECAAYFAjxEY28ACgkQGERS+iaKCE2fgwCeNGNV Mpa1EWgXF+Hj15gidVjaVCAAn187X6eATJAVzspveNSf/Ny1iuFnuQENBDl7WasQ BACxhBiSFOGa8tv7MOn0XVa6WCViBuQs9QJx2ZnMrx/KssRHMsNXnps+i+zVENqr 1Lz5zPpP7eWgrUy6B7/V9R4LV8nwHC1lZrR/1xyJ6G5j9RLSbYInZCLIAFUMlAar iTThMhvXM+Pf7SXPj+ivrP9EYPSLxqTs1K/dWAbrDK/QiwADBQP9Hgc3EOw+7luB /bXWssQp70bF9yvZLCGOgIE/rZIbOXumXkPlV7FTDgv+h47Bgcj2KDPEM98LUyxG GcJAmrC9gWH7mYEUFNn1bGD+qHRwJ7+xj45NXBJDOBbHzTDS8QhacCRGW1CvRVgP 8ycPDOv/hmGfAJEzqzUkSO1uBcPmmXSIRgQYEQIABgUCOXtZqwAKCRCla8PfmFui gQHnAJ4kDKHKvG9s9OjGV6RvszTDGE51igCcCZn0rO/Si0ek97bTCIusQzJF/pA= =bvnT -----END PGP PUBLIC KEY BLOCK----------------------------------------------------------------------------------Guia Foca GNU/Linux Gleydson Mazioli da Silva Vers�o 6.05 - segunda, 18 de mar�o de 2002

Related Documents

Avancado
June 2020 3
Excel Avancado
October 2019 11
Plsql Avancado
May 2020 1
Manual Excel Avancado
November 2019 13
Como Vetorizar Avancado
December 2019 5
Flash 5 - Avancado
November 2019 13