Você está na página 1de 265

Guia Foca GNU/Linux

-------------------

Gleydson Mazioli da Silva <gleydson@cipsga.org.br>

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. Introdu��o
1.1. Considera��es sobre o n�vel Avan�ado
1.2. Pr�-requisitos para a utiliza��o deste guia
1.3. O Linux
1.3.1. Algumas Caracter�sticas do Linux

2. Explica��es B�sicas
2.1. Monitorando os logs
2.2. Curingas

3. Hardware
3.1. Placa de expans�o
3.2. Nomes de dispositivos
3.3. Configura��o de Hardware
3.3.1. IRQ - Requisi��o de Interrup��o
3.3.1.1. Prioridade das Interrup��es
3.3.2. DMA - Acesso Direto a Mem�ria
3.3.2.1. Conflitos de DMA
3.3.3. I/O - Porta de Entrada/Sa�da
3.4. Hardwares configur�veis por jumpers, dip-switches,
jumperless e Plug-and-Play.
3.4.1. Jumpers
3.4.2. Dip-Switches
3.4.3. Jumperless (sem jumper)
3.4.4. Plug-and-Play
3.4.4.1. Entendendo o arquivo de configura��o `isapnp.conf'
3.5. Conflitos de hardware
3.6. Barramento
3.7. Placas on-board / off-board
3.8. Hardwares espec�ficos ou "For Windows"
3.9. Dispositivos espec�ficos para GNU/Linux
3.10. Aterramento
3.11. Descargas est�ticas
3.12. Melhoria de performance
3.12.1. Particionamento
3.12.2. Spindles
3.12.3. Fazendo ajustes finos de performance do disco
3.12.4. Data de acesso a arquivos/diret�rios
3.13. Perif�ricos SCSI
3.13.1. Configurando uma SCSI ID e termina��o

4. Rede
4.1. O que � uma rede
4.2. Protocolo de Rede
4.3. Endere�o IP
4.3.1. Classes de Rede IP
4.3.2. Refer�ncia r�pida de m�scara de redes
4.3.3. Para instalar uma m�quina usando o Linux em uma rede
existente
4.3.4. Endere�os reservados para uso em uma rede Privada
4.4. Interface de rede
4.4.1. A interface loopback
4.4.2. Atribuindo um endere�o de rede a uma interface
(ifconfig)
4.5. Roteamento
4.5.1. Configurando uma rota no Linux
4.6. Resolvedor de nomes (DNS)
4.6.1. O que � um nome?
4.6.2. Arquivos de configura��o usados na resolu��o de nomes
4.6.2.1. /etc/resolv.conf
4.6.2.2. /etc/host.conf
4.6.2.3. /etc/hosts
4.6.2.4. /etc/networks
4.6.3. Executando um servidor de nomes
4.7. Servi�os de Rede
4.7.1. Servi�os iniciados como Daemons de rede
4.7.2. Servi�os iniciados atrav�s do inetd
4.7.2.1. /etc/inetd.conf
4.8. Seguran�a da Rede e controle de Acesso
4.8.1. /etc/ftpusers
4.8.2. /etc/securetty
4.8.3. O mecanismo de controle de acessos tcpd
4.8.3.1. /etc/hosts.allow
4.8.3.2. /etc/hosts.deny
4.8.3.3. /etc/hosts.equiv e /etc/shosts.equiv
4.8.3.4. Verificando a seguran�a do TCPD e a sintaxe dos
arquivos
4.8.4. Firewall
4.9. Outros arquivos de configura��o relacionados com a rede
4.9.1. /etc/services
4.9.2. /etc/protocols
4.10. Definindo diversos endere�os IP para a mesma interface de
rede

5. Arquivos e daemons de Log


5.1. Formato do arquivo de log
5.2. Daemons de log do sistema
5.2.1. syslogd
5.2.1.1. Arquivo de configura��o `syslog.conf'
5.2.2. klogd
5.3. logger
5.4. Programas �teis para monitora��o e gerenciamento de arquivos
de logs
5.4.1. logcheck
5.4.2. logrotate
5.5. Configurando um servidor de logs

6. A distribui��o Debian GNU/Linux


6.1. Como obter a Debian
6.2. Programas de configura��o
6.3. Arquivos de inicializa��o
6.4. N�veis de Execu��o
6.4.1. Entendendo o funcionamento dos n�veis de execu��o do
sistema (runlevels)
6.5. Bug tracking system
6.6. Onde encontrar a Debian para Download?

7. Personaliza��o do Sistema
7.1. Vari�veis de Ambientes
7.2. Modificando o Idioma usado em seu sistema
7.3. alias
7.4. Arquivo `/etc/profile'
7.5. Arquivo `.bash_profile'
7.6. Arquivo `.bashrc'
7.7. Arquivo `.hushlogin'
7.8. Arquivo `/etc/environment'
7.9. Diret�rio `/etc/skel'

8. Impress�o
8.1. Portas de impressora
8.2. Imprimindo diretamente para a porta de impressora
8.3. Imprimindo via spool
8.4. Impress�o em modo gr�fico
8.4.1. Ghost Script
8.5. Magic Filter
8.5.1. Instala��o e configura��o do Magic Filter
8.5.2. Outros detalhes t�cnicos sobre o Magic Filter
8.6. Impress�o remota
8.6.1. Dando permiss�o para impres�o remota via lpd/lprng
8.6.2. Impress�o via rlpr
8.6.3. Impress�o via printcap
8.6.4. Gerenciando impress�o de m�quinas Windows
9. Firewall iptables
9.1. Introdu��o
9.1.1. Vers�o
9.1.2. Um resumo da hist�ria do iptables
9.1.3. Caracter�sticas do firewall iptables
9.1.4. Ficha t�cnica
9.1.5. Requerimentos
9.1.6. Arquivos de logs criados pelo iptables
9.1.7. Instala��o
9.1.8. Enviando Corre��es/Contribuindo com o projeto
9.1.9. O que aconteceu com o `ipchains' e `ipfwadm'?
9.1.10. Tipos de firewalls
9.1.11. O que proteger?
9.1.12. O que s�o regras?
9.1.13. O que s�o chains?
9.1.14. O que s�o tabelas?
9.1.15. Habilitando o suporte ao iptables no kernel
9.1.16. Ligando sua rede interna a Internet
9.2. Manipulando chains
9.2.1. Adicionando regras - A
9.2.2. Listando regras - L
9.2.3. Apagando uma regra - D
9.2.4. Inserindo uma regra - I
9.2.5. Substituindo uma regra - R
9.2.6. Criando um novo chain - N
9.2.7. Listando os nomes de todos os chains atuais
9.2.8. Limpando as regras de um chain - F
9.2.9. Apagando um chain criado pelo usu�rio - X
9.2.10. Zerando contador de bytes dos chains - Z
9.2.11. Especificando o policiamento padr�o de um chain - P
9.3. Outras op��es do iptables
9.3.1. Especificando um endere�o de origem/destino
9.3.2. Especificando a interface de origem/destino
9.3.3. Especificando um protocolo
9.3.3.1. Especificando portas de origem/destino
9.3.3.2. Especificando mensagens do protocolo ICMP
9.3.3.3. Especificando pacotes syn
9.3.4. Especificando fragmentos
9.3.5. Especificando uma exce��o
9.3.6. Especificando um alvo
9.3.6.1. Alvo REJECT
9.3.6.2. Especificando LOG como alvo
9.3.6.3. Especificando RETURN como alvo
9.4. A tabela nat (Network Address Translation) - fazendo nat
9.4.1. Criando um novo chain na tabela NAT
9.4.2. Fazendo IP masquerading (para os apressados)
9.4.3. Fazendo SNAT
9.4.3.1. Fazendo IP Masquerading
9.4.4. Fazendo DNAT
9.4.4.1. Redirecionamento de portas
9.4.5. Monitorando conex�es feitas na tabela nat
9.5. A tabela mangle
9.5.1. Especificando o tipo de servi�o
9.5.1.1. Especificando o TOS para tr�fego de sa�da
9.5.1.2. Especificando o TOS para o tr�fego de entrada
9.6. Outros m�dulos do iptables
9.6.1. Conferindo de acordo com o estado da conex�o
9.6.2. Limitando o n�mero de vezes que a regra confere
9.6.3. Prote��o contra ping da morte
9.6.4. Prote��o contra syn flood
9.6.5. Prote��o contra IP spoofing
9.6.6. Especificando m�ltiplas portas de origem/destino
9.6.7. Especificando o endere�o MAC da interface
9.6.8. Conferindo com quem criou o pacote
9.7. Caminho percorrido pelos pacotes nas tabelas e chains
9.7.1. Ping de 192.168.1.1 para 192.168.1.1
9.7.2. Conex�o FTP de 192.168.1.1 para 192.168.1.1
9.7.3. Conex�o FTP de 192.168.1.1 para 192.168.1.4
9.7.4. Conex�o FTP de 200.217.29.67 para a m�quina
ftp.debian.org.br
9.7.5. Ping de 192.168.1.4 para 192.168.1.1
9.7.6. Conex�o FTP de 192.168.1.4 para 192.168.1.1
9.7.7. Conex�o FTP de 192.168.1.4 para ftp.debian.org.br
9.7.8. Conex�o FTP de 200.198.129.162 para 200.217.29.167
9.7.9. Gr�fico geral da passagem dos pacotes
9.8. Exemplos de configura��es do iptables
9.8.1. Bloqueando conex�es de fora para sua m�quina
9.8.2. Monitorando tentativa de conex�o de trojans em sua
m�quina
9.8.3. Conectando sua rede interna a Internet
9.8.4. Um exemplo de firewall simples

10. Gerenciamento de contas e cuidados para a prote��o de senhas


10.1. Introdu��o
10.2. Cria��o, monitora��o e seguran�a de contas
10.2.1. Definindo valores padr�es de restri��o
10.2.2. Senhas f�ceis de adivinhar e escolha de boas senhas
10.2.3. Atualiza��o de senhas de m�ltiplas contas
10.2.4. A senha do usu�rio root
10.3. Tipos de ataques mais comuns para se conseguir uma senha.
10.3.1. Dedu��o
10.3.2. Engenharia Social
10.3.3. Ataques por dicion�rio
10.3.4. Brute Force
10.3.5. Monitora��o de toques do teclado
10.3.6. Login falso
10.4. Melhorando a seguran�a das senhas armazenadas em seu sistema
10.4.1. Shadow Passwords
10.4.2. Senhas MD5

11. Apache
11.1. Introdu��o
11.1.1. Vers�o
11.1.2. Um resumo da Hist�ria do Apache
11.1.3. Enviando Corre��es/Contribuindo com o projeto
11.1.4. Caracter�sticas do Apache
11.1.5. Ficha t�cnica
11.1.6. Requerimentos
11.1.7. Arquivos de log criados pelo Apache
11.1.8. Instala��o
11.1.9. Iniciando o servidor/reiniciando/recarregando a
configura��o
11.1.10. Op��es de linha de comando
11.2. Configurando a porta padr�o do Apache
11.3. Adicionando uma p�gina no Apache
11.4. Configurando as interfaces que o Apache atender�
11.5. Especificando endere�os/portas adicionais (a diretiva
_Listen_)
11.6. Especificando op��es/permiss�es para as p�ginas
11.7. Restri��es de Acesso
11.7.1. Autoriza��o
11.7.2. Autentica��o
11.7.2.1. Criando um arquivo de Senhas
11.7.2.2. Autentica��o atrav�s de usu�rios
11.7.2.3. Autentica��o usando grupos
11.7.3. Usando autoriza��o e autentica��o juntos
11.7.3.1. Acesso diferenciado em uma mesma diretiva
11.7.4. O arquivo `.htaccess'
11.7.5. Usando a diretiva SetEnvIf com Allow e Deny
11.7.6. A diretiva <Limit>
11.7.7. Diretiva <LimitExcept>
11.8. Definindo documentos de erro personalizados
11.9. M�dulos DSO
11.10. Sistema de Log do Apache
11.10.1. AgentLog
11.10.2. ErrorLog
11.10.3. CustomLog
11.10.4. RefererLog
11.10.5. RewriteLog
11.10.6. RewriteLogLevel
11.10.7. ScriptLog
11.10.8. ScriptLogBuffer
11.10.9. ScriptLogLength
11.10.10. TransferLog
11.10.11. LogFormat
11.10.12. LogLevel
11.10.13. Anonymous_LogEmail
11.10.14. CookieLog
11.10.15. Relat�rio gr�fico de acesso ao sistema
11.11. Configurando o Apache como servidor proxy
11.11.1. Controlando o acesso ao servidor proxy
11.11.2. Redirecionamento de conex�es no Apache
11.12. Virtual Hosts
11.12.1. Virtual hosts baseados em IP
11.12.2. Virtual hosts baseados em nome
11.12.3. Seguran�a no uso de IP's em Virtual Hosts
11.13. Uso de criptografia SSL
11.13.1. Servidor apache com suporte a ssl
11.13.2. Gerando um certificado digital
11.13.3. Exemplo de configura��o do m�dulo mod-ssl
11.13.4. Autorizando acesso somente a conex�es SSL
11.13.5. Iniciando o servidor Web com suporte a SSL
11.14. Exemplo comentado de um arquivo de configura��o do Apache
11.14.1. httpd.conf
11.14.2. srm.conf
11.14.3. access.conf
11.15. C�digos HTTP

12. Servidor ident


12.1. Introdu��o
12.1.1. Vers�o
12.1.2. Contribuindo
12.1.3. Caracter�sticas
12.1.4. Ficha t�cnica
12.1.5. Requerimentos de Hardware
12.1.6. Arquivos de log criados pelo Ident
12.1.7. Instala��o
12.1.8. Instala��o via Inetd
12.1.9. Usando tcpwrappers com oidentd
12.1.10. Iniciando o servidor/reiniciando/recarregando a
configura��o
12.1.11. Op��es de linha de comando
12.1.12. Exemplos

13. Servidor telnet


13.1. Introdu��o
13.1.1. Vers�o
13.1.2. Caracter�sticas
13.1.3. Ficha t�cnica
13.1.4. Requerimentos de Hardware
13.1.5. Arquivos de log criados pelo servidor telnet
13.1.6. Instala��o
13.1.7. Iniciando o servidor/reiniciando/recarregando a
configura��o
13.1.8. Op��es de linha de comando
13.2. Controle de acesso
13.3. Recomenda��es
13.4. Fazendo conex�es ao servidor telnet

14. Servidor ssh


14.1. Introdu��o
14.1.1. Vers�o
14.1.2. Hist�ria
14.1.3. Contribuindo
14.1.4. Caracter�sticas
14.1.5. Ficha t�cnica
14.1.6. Requerimentos de Hardware
14.1.7. Arquivos de log criados pelo servidor ssh
14.1.8. Instala��o do servidor openSSH
14.1.9. 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. Servidor pop3


15.1. Introdu��o
15.1.1. Vers�o
15.1.2. Contribuindo
15.1.3. Caracter�sticas
15.1.4. Ficha t�cnica
15.1.5. Requerimentos de Hardware
15.1.6. Arquivos de log criados pelo qpopper
15.1.7. Instala��o
15.1.8. Iniciando o servidor/reiniciando/recarregando a
configura��o
15.1.9. Testando o servidor pop3
15.1.10. Op��es de linha de comando
15.1.11. Enviando boletins de mensagens
15.1.12. Especificando quotas para as caixas de correio
15.1.13. Restringindo acesso ao servidor pop3

16. Restri��es de recursos/servi�os


16.1. Limitando recursos no `bash'
16.1.1. Uso do comando readonly para exportar vari�veis
16.1.2. Restri��es nos diret�rios de usu�rios e root
16.1.3. Restri��es b�sicas do shell bash com bash
-r/--restricted, rbash
16.1.4. Finalizando consoles inativos
16.1.5. Desabilitando o registro de comandos digitados
16.1.6. Desabilitando servi�os de shell para usu�rios
16.2. Limita��o de recursos usando PAM
16.2.1. Descobrindo se um determinado programa tem suporte a
PAM
16.2.2. Definindo um policiamento padr�o restritivo
16.2.3. Restringindo/Bloqueando o login
16.2.4. Restri��es de servi�os PAM baseados em dia/hora
16.2.5. Permitindo acesso a grupos extras
16.2.6. Limita��o de recursos do shell
16.3. Restri��es de acesso a programas/diret�rios/arquivos usando
grupos
16.4. Dando poderes de root para executar determinados programas
16.5. Restringindo o comando `su'
16.6. Restri��es baseadas em usu�rio/IP
16.7. Desabilitando servi�os n�o usados no Inetd
16.8. Evitando o uso de `hosts.equiv' e `.rhosts'
16.9. Restringindo o uso do shutdown
16.10. Restringindo o acesso ao sistema de arquivos /proc
16.11. Limitando o uso de espa�o em disco (quotas)
16.11.1. Instalando o sistema de quotas
16.11.2. Editando quotas de usu�rios/grupos
16.11.3. Verificando a quota dispon�vel ao usu�rio
16.11.4. Verificando a quota de todos os usu�rios/grupos do
sistema
16.11.5. Avisando usu�rios sobre o estouro de quota
16.12. Suporte a senhas ocultas
16.13. Suporte a senhas md5
16.14. Restri��es no hardware do sistema
16.14.1. BIOS do sistema
16.14.2. Retirada da unidade de disquetes
16.14.3. Placas de rede com eprom de boot
16.14.4. Protegendo o LILO
16.14.5. Disco r�gido

17. Introdu��o ao uso de criptografia para


transmiss�o/armazenamento de dados
17.1. Introdu��o
17.2. Sniffer
17.2.1. Detectando a presen�a de sniffers
17.3. Alternativas seguras a servi�os sem criptografia
17.3.1. http
17.3.2. Transmiss�o segura de e-mails
17.3.3. Servidor pop3
17.3.4. Transfer�ncia de arquivos
17.3.5. login remoto
17.3.6. Bate papo via IRC
17.3.7. Transmiss�o de mensagens via ICQ
17.4. Sistemas de arquivos criptogr�fico
17.5. Usando pgp (`gpg')para criptografia de arquivos
17.5.1. Instalando o PGP
17.5.2. Criando um par de chaves p�blica/privada
17.5.3. Encriptando dados
17.5.4. Descriptando dados com o gpg
17.5.5. Assinando arquivos
17.5.6. Checando assinaturas
17.5.7. Extraindo sua chave p�blica do chaveiro
17.5.8. Adicionando chaves p�blicas ao seu chaveiro pessoal
17.5.9. Listando chaves de seu chaveiro
17.5.10. Apagando chaves de seu chaveiro
17.5.11. Mudando sua FraseSenha
17.5.12. Assinando uma chave digital
17.5.13. Listando assinaturas digitais

18. Ap�ndice
18.1. Sobre este guia
18.2. Refer�ncias de aux�lio ao desenvolvimento do guia
18.3. Onde encontrar a vers�o mais nova do guia?
18.4. Colaboradores do Guia
18.5. Marcas Registradas
18.6. Futuras vers�es
18.7. 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 (<TMOUT>, <PS1>, <PS2>, <PS3>,


<PS4>, <HISTORY>, 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 <gleydson@cipsga.org.br>.

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 em `/var/log' e registram tudo o que


acontecem com o kernel, com os daemons e utilit�rios do sistema. Eles
s�o muito importantes tanto para monitorar o que acontece com o seu
sistema como para ajudar na 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. Usando o comando `ls *.txt' que pega todos os arquivos que


come�am com qualquer nome e terminam com `.txt'.
2. 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.
3. 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. Dispos.
Linux DOS IRQ DMA I/O

ttyS0 COM1 4 - 0x3F8


ttyS1 COM2 3 - 0x2F8
ttyS2 COM3 4 - 0x3E8
ttyS3 COM4 3 - 0x2E8
lp0 LPT1 7 3(ECP) 0x378
lp1 LPT2 5 3(ECP) 0x278
/dev/hda1 C: 14 - 0x1F0,0x3F6
/dev/hda2 D: * 14 - 0x1F0,0x3F6
/dev/hdb1 D: * 15 - 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 1 2 (9 10 11 12 13 14 15) 3 4 5 6 7 8
PRI 1 2 3 4 5 6 7 8 9 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 Barram. Uso


0 - Usada pelo circuito de refresh da mem�ria DRAM
1 8/16 bits Normalmente usado por placas de som (canal 8 bits),
porta paralela ECP, adaptadoras SCSI, placas de rede ou
controladora de scanner.
2 8/16 bits Normalmente usado pela controladora de disquetes ou
controladoras de tapes.
3 8/6 bits Usado pela porta paralela ECP, placa de som,
controladoras de tapes, controladoras SCSI ou
controladora de scanner antiga.
4 - Usada como ponte para a outra controladora de DMA (0-3)
5 16 bits Normalmente usada pela placa de som (canal 16 bits),
placas controladoras SCSI, placas de rede ou
controladora de scanner.
6 16 bits Placa de som (canal 16 bits), controladora de scanner
ou placa de rede.
7 16 bits 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
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.
AMR
`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 na


placa m�e � a _placa controladora de perif�ricos_. Esta placa � usada
para se conectar unidades de disquete, discos r�gidos, CD-ROM, portas
seriais, paralelas, joystick ao computador. Os HDs conectados 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 de PC's,


agora voc� entender� porque � recomend�vel sempre tocar em partes
met�licas do computador antes de mexer em qualquer placa e porque
aquele seu amigo disse que a placa dele queimou depois que resolveu
limpar seus contatos.

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 - /boot
R - Ra�z /
S - Swap
U - /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 = 0 (off)
I/O support = 0 (16-bit)
unmaskirq = 0 (off)
using_dma = 1 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (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 192.168.110.23
M�scara da Rede 255.255.255.0
Por��o da Rede 192.168.110.
Por��o do Host .23
----------------- ---------------
Endere�o da Rede 192.168.110.0
Endere�o Broadcast 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 M�scara N�mero


(Forma (Forma M�ximo de
octal) 32 bits) M�quinas

Classe A:
/8 /255.0.0.0 16,777,215

Classe B:
/16 /255.255.0.0 65,535
/17 /255.255.128.0 32,767
/18 /255.255.192.0 16,383
/19 /255.255.224.0 8,191
/20 /255.255.240.0 4,095
/21 /255.255.248.0 2,047
/22 /255.255.252.0 1,023
/23 /255.255.254.0 511

Classe C
/24 /255.255.255.0 255
/25 /255.255.255.128 127
/26 /255.255.255.192 63
/27 /255.255.255.224 31
/28 /255.255.255.240 15
/29 /255.255.255.248 7
/30 /255.255.255.252 3
/32 /255.255.255.255 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_. O comando usado para fazer isso � o `ifconfig'
(interface configure).

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 localhost loopback
192.168.0.1 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 127.0.0.0
localnet 192.168.1.0
amprnet 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 "#<off>#" 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> <tipo_soquete> <proto> <op��es> <usu�rio> <caminho_servidor>
<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 dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
time stream tcp nowait root internal
#time dgram udp wait root internal

#:PADR�ES: Estes s�o servi�os padr�es.

#:BSD: Shell, login, exec e talk s�o protocolos BSD.


#shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd
#login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd
talk dgram udp wait nobody.tty /usr/sbin/tcpd /usr/sbin/in.talkd
ntalk dgram udp wait nobody.tty /usr/sbin/tcpd
/usr/sbin/in.ntalkd

#: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 Usu�rio


- maquina2.dominio.com.br usuario2
- maquina4.dominio.com.br usuario2
+ maquina1.dominio.com.br +@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: address 127.0.0.1


server: process in.fingerd
matched: /etc/hosts.allow line 1
access: 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: address 192.168.1.29


server: process in.fingerd
matched: /etc/hosts.allow line 3
access: granted

O acesso foi permitido atrav�s da linha 3 do `hosts.allow'. Agora


"tcpdmatch in.fingerd 192.168.1.29":
client: address 192.168.1.30
server: process in.fingerd
matched: /etc/hosts.deny line 1
access: 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: address www.debian.org


server: process in.talkd
matched: /etc/hosts.allow line 2
access: 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.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* /var/log/mail.log
user.* -/var/log/user.log
uucp.* -/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
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.
-s
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'. Agora
confira a mudan�a digitando: `runlevel'. Voc� dever� ver este
resultado:

2 3
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:


<submit@bugs.debian.org>, 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
<debian-user-portuguese@lists.debian.org>

-------------------------------------------------------------------------------

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 arquivos `.bash_profile' e


`.bashrc' que ser�o copiados para o diret�rio pessoal dos usu�rios no
momento que for criada uma conta no sistema. Desta forma voc� n�o
precisar� configurar estes arquivos 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 <trabalho.txt >/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 <trabalho.txt |lpr'. Faz a mesma coisa que o acima.
* `cat -n trabalho.txt |lpr' - Numera as linhas durante a
impress�o.
* `head -n 30 trabalho.txt |lpr' - Imprime as 30 linhas iniciais do
arquivo.
A fila de impress�o pode ser controlada com os comandos:
* `lpq' - Mostra os trabalhos de impress�o atuais
* `lprm' - Remove um trabalho de impress�o
Ou usado o programa de administra��o `lpc' para gerenciar a fila de
impress�o (veja a p�gina de manual do `lpc' ou digite `?' ao iniciar
o programa para detalhes).

OBS1: Se a impressora n�o imprimir ou n�o for poss�vel compartilhar a


porta de impressora paralela com outros dispositivos (tal como o
_plip_), verifique se o m�dulo _parport_pc_ foi carregado e com os
valores de irq e I/O corretos (por exemplo, `modprobe parport_pc
io=0x378 irq=7'). Muitas vezes sua porta paralela pode funcionar sem
problemas durante a impress�o, mas se ao utilizar plip ocorrerem
erros, a causa pode ser essa. Na distribui��o `Debian', use o
programa `modconf' para configurar os valores permanentemente para o
m�dulo parport_pc.

OBS2: Se tiver mais de uma impressora instalada na m�quina, ser�


necess�rio especificar a op��o "-P impressora" para especificar qual
impressora deseja imprimir/controlar.

8.4. Impress�o em modo gr�fico


------------------------------

A impress�o em modo gr�fico requer que conhe�a a marca e modelo de sua


impressora e os m�todos usados para imprimir seus documentos. Este
guia abordar� somente a segunda recomenda��o :-)

8.4.1. Ghost Script


-------------------

O m�todo mais usados pelos aplicativos do `GNU/Linux' para a impress�o


de gr�ficos do _Ghost Script_. O Ghost Script (chamado de _gs_) � um
interpretador do formato _Pos Script_ (arquivos `.ps') e pode enviar o
resultado de processamento tanto para a tela como impressora. Ele
est� dispon�vel para diversas plataformas e sistema operacionais al�m
do `GNU/Linux', inclusive o `DOS', `Windows', `OS/2', etc.

O formato `.ps' esta se tornando uma padroniza��o para a impress�o de


gr�ficos em `GNU/Linux' devido a boa qualidade da impress�o, liberdade
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.
* `-r<ResH>x<ResV>' - 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 -Y 72 -R -q -f

# compress'd data
0 \037\235 pipe /bin/gzip -cdq

# packed, gzipped, frozen and SCO LZH data


0 \037\036 pipe /bin/gzip -cdq
0 \037\213 pipe /bin/gzip -cdq
0 \037\236 pipe /bin/gzip -cdq
0 \037\240 pipe /bin/gzip -cdq

0 BZh pipe /usr/bin/bzip2 -cdq

# troff documents
0 .\?\?\040 fpipe `/usr/bin/grog -Tps $FILE`
0 .\\\" fpipe `/usr/bin/grog -Tps $FILE`
0 '\\\" fpipe `/usr/bin/grog -Tps $FILE`
0 '.\\\" fpipe `/usr/bin/grog -Tps $FILE`
0 \\\" fpipe `/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 destination
DROP all -- anywhere 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 destination
DROP all -- 0.0.0.0/0 127.0.0.1

#iptables -L INPUT -n --line-numbers

Chain INPUT (policy ACCEPT)


num target prot opt source destination
1 DROP all -- 0.0.0.0/0 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 destination
2 194 DROP icmp -- * * 0.0.0.0/0 127.0.0.1

Os campos assim possuem o seguinte significado:


Chain INPUT
Nome do chain listado
(policy ACCEPT 78 packets, 5820 bytes)
Policiamento padr�o do chain (veja Se��o 9.2.11, `Especificando o
policiamento padr�o de um chain - P').
pkts
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' `internet'
---------------------------- -----------------------------
| Regra1: -s 192.168.1.15 | | Regra1: -s 200.200.200.200|
|--------------------------| |---------------------------|
| Regra2: -s 192.168.1.1 | | Regra2: -d 192.168.1.1 |
|--------------------------| -----------------------------
| Regra3: -j DROP |
----------------------------

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 destination
DROP icmp -- anywhere 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:

+---------------------+--------------------------------+
TABELA | CHAIN | INTERFACE |
| +----------------+---------------+
| | ENTRADA (-i) | SA�DA (-o) |
+---------+---------------------+----------------+---------------+
| | INPUT | SIM | N�O |
| 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-) iptables -t filter -A INPUT -i ppp0 -j internet


2-) iptables -t filter -j ACCEPT
3-) iptables -t filter -N internet
4-) iptables -t filter -A internet -s www.debian.org -p tcp --dport 80 -j RETURN
5-) iptables -t filter -A internet -p tcp --dport 21 -j DROP
6-) iptables -t filter -A internet -p tcp --dport 23 -j DROP
7-) iptables -t filter -A internet -p tcp --dport 25 -j DROP
8-) iptables -t filter -A internet -p tcp --dport 80 -j 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 de todas as m�quinas da rede


192.168.1.0/24 que tem o destino a interface eth0 para 200.241.200.40
a 200.241.200.50. O endere�o IP selecionado � escolhido de acordo com
o �ltimo IP alocado. # iptables -t nat -A POSTROUTING -s
192.168.1.0/24 -o eth1 \ -j SNAT --to 1.2.3.0-1.2.3.4 --to
1.2.3.6-1.2.3.254

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


200.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 <TROJAN_PORTS> 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 <TROJAN_PORTS> 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 Policiamento #####


# Tabela filter
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD DROP
# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING DROP
# Tabela mangle
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -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 com senhas ocultas ativadas (veja Se��o 10.4.1,


`Shadow Passwords') as restri��es acima ser�o especificadas no arquivo
`/etc/shadow', isto garante que s� o usu�rio `root' tenha acesso aos
detalhes fornecidos 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 � muito comum em sistemas DOS e Windows, um programa �


instalado sem o conhecimento do usu�rio que grava todos os toques do
teclado em um arquivo escondido pelo cracker. Ap�s certo tempo o
cracker obt�m 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
<apache-announce@apache.org> 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 <IfDefine


nome>.
* `-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


<Directory>, <Location> ou <Files> 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 <tags> e devem ser fechadas
com </tag> (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:

<Directory /var/www>
Order deny,allow
deny from all
allow from 10.1.0.1
<Directory>

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 <Directory> mas trabalha com express�es
regulares como argumento. Por exemplo:

<DirectoryMatch "^/www/.*">
Order deny,allow
deny from all
<DirectoryMatch>

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:

<Files *.txt>
Order deny,allow
deny from all
</Files>

Bloqueia o acesso a todos os arquivos com a extens�o `.txt'

<Files ~ "\.(gif|jpe?g|bmp|png)$">
Order deny,allow
</Files>

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 <Files ~ "express�o">). Por exemplo:

<FilesMatch "\.(gif|jpe?g|bmp|png)$">
Order deny,allow
</FilesMatch>

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:

<Location /security>
Order allow,deny
</Location>

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 <Location> mas trabalha com express�es
regulares. Por exemplo:

<LocationMatch "/(extra|special)/data">
Order deny,allow
deny from all
</LocationMatch>

Bloquear� URLs que cont�m a substring "/extra/data" ou


"/special/data".

O uso das diretivas <Directory> e <Files> � 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 <Directory>), o
uso da diretiva <Location> � 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 <Directory> (com exce��o de <DirectoryMatch>) e os
arquivos `.htaccess' s�o processados simultaneamente. As
defini��es dos arquivos `.htaccess' substituem as de <Directory>)
2. Express�es regulares de <DirectoryMatch>, <Directory>.
3. <Files> e <FilesMatch> s�o processados simultaneamente.
4. <Location> e <LocationMatch> 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 <Location>, <LocationMatch> e <DirectoryMatch>.
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
<DirectoryIndex> 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 <Location>,
<LocationMatch> e <DirectoryMatch>.
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:

<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>

Ao acessar o diret�rio `/var/www/focalinux', as permiss�es usadas


ser�o de `/var/www', ao menos que uma diretiva <Directory> ou
<Location> seja especificada:

<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>

<Directory /var/www/focalinux>
Options Includes
</Directory>

As op��es e restri��es de acesso de `/var/www/focalinux' ser�o


EXATAMENTE as especificadas no bloco da diretiva <Directory
/var/www/focalinux> 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:

<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>

<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>

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 <Directory> e <Files>:

<Directory /var/www>
Order allow,deny
allow from all

<Files LEIAME-DONO.txt>
Order deny,allow
deny from all
</Files>

</Directory>

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 <Files> for usada fora de uma estrutura <Directory>, 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:

<Directory /var/www>
Options Indexes FollowSymLinks
<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>

</Directory>

O correto �:

<Directory /var/www>
Options Indexes FollowSymLinks
</Directory>

<Directory /var/www/focalinux>
Options +Includes -Indexes
</Directory>

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 "<Directory />" 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':
<Location /teste>
Option Indexes
Order allow,deny
allow from all
deny from .spammers.com.br
</Location>

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:

<Directory /var/www>
Options SymLinksIfOwnerMatch Indexes MultiViews
Order allow,deny
allow from all
</Directory>

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

<Directory /var/www>
Options SymLinksIfOwnerMatch Indexes MultiViews
</Directory>
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.

<Directory /var/www>
Options Indexes
Order deny,allow
deny from all
</Directory>

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

<Location /focalinux>
Options All
Order allow,deny
allow from all
</Location>

A regra acima permite o acesso a URL


`http://www.servidor.org/focalinux' de qualquer host na Internet

<Files .htaccess>
Order deny,allow
deny from all
</Files>

Bloqueia o acesso a qualquer arquivo `.htaccess' do sistema

<Files ~ "leiame-(arm|alpha|m68k|sparc|powerpc)\.txt">
Order deny,allow
deny from all
</Files>

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.

<Directory /var/www>
Options Indexes
Order mutual-failure
allow from .dominio.com.br
deny from lammer.dominio.com.br
</Directory>

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

<Directory /var/www>
Options Indexes MultiViews
Order allow,deny
deny from .com .com.br
allow from all
</Directory>

Bloqueia o acesso ao diret�rio `/var/www' de computadores pertencentes


aos dom�nios _.com_ e _.com.br_.

<Directory /var/www>
Options None
Order deny,allow
allow from 192.168.1. .metainfo.org .debian.org
deny from 200.200.123.
</Directory>

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.

<Directory /var/www>
Options None
Order allow,deny
allow from 192.168.1. .metainfo.org .debian.org
deny from 200.200.123.
</Directory>

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 <convidado>, � usada a
seguinte sintaxe:

`htpasswd -c -m senhas convidado'

Voc� ser� perguntado por uma senha para o usu�rio <convidado> 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':
<Location /teste>
AuthName "Acesso a p�gina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
# AuthGroupFile /home/users/SenhaGrupo
Require valid-user
</Location>

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:

<Location /teste>
AuthName "Acesso a p�gina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson
</Location>

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

<Location /teste>
AuthName "Acesso a p�gina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson usuario1 usuario2
</Location>

<Location /teste>
AuthName "Acesso a p�gina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
Require user gleydson
Require user usuario1
Require user usuario2
</Location>

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 onde existem usu�rios de um arquivo de senhas que devem ter


acesso a um diret�rio e outros n�o, neste caso a diretiva _valid-user_
n�o pode ser especificada (porque permitiria o acesso de todos os
usu�rios do arquivo de senha ao diret�rio) e uma grande lista de
usu�rios ficaria bastante complicada de ser gerenciada com v�rios
usu�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:

<Location /teste>
AuthName "Acesso a p�gina do Foca Linux"
AuthType basic
AuthUserFile /home/gleydson/SenhaUsuario
AuthGroupFile /home/gleydson/SenhaGrupo
Require group admins
</Location>

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


<Files> 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
<Files ~ "\.ht">. 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:

<Directory /var/www>
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
</Directory>

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.

<Directory /var/www>
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
</Directory>

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:

<Directory /var/www>
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
</Directory>

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:

<Directory /var/www>
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
</Directory>

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


<Location>, 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
<Directory> 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:

<Directory />
AllowOverride none
</Directory>

<Directory /var/www>
AllowOverride limit authconfig indexes
</Directory>

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


<Directory /var/www>
Order deny,allow
allow from all
deny from env=EXPLODER
</Directory>

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 <Limit>


--------------------------

Esta diretiva � semelhante a <Directory> mas trabalha com m�todos HTTP


(como GET, PUT, POST, etc) ao inv�s de diret�rios. A diretiva <Limit>
pode ser usada dentro da diretiva de acesso <Directory>, <Location>,
mas nenhuma diretiva de controle de acesso pode ser colocada dentro de
<Limit>.

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:

<Directory /var/www>
Option Indexes
<Limit POST PUT DELETE>
Order deny,allow
allow from 192.168.1.0/24
deny from all
</Limit>
</Directory>

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 <Limit> somente ter� efeito na diretiva


<Location> se for especificada no arquivo de configura��o do servidor
web. A diretiva <Location> 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':

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>

11.7.7. Diretiva <LimitExcept>


------------------------------

Esta diretiva � semelhante a <Limit>, 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 <Directory>, <Location> ou <VirtualHost>
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_:

<IfModule mod_userdir.c>
UserDir disabled root
UserDir public_html
</IfModule>

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 "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v"


full
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T"
debug
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{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
#
<IfModule mod_proxy.c>
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
#</IfModule>

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 <IfModule libproxy.c> 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


<Directory proxy:*>
Order deny,allow
Deny from all
Allow from .seudominio.com.br
</Directory>

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

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 webmaster@site.com.br

<VirtualHost www.site1.com.br>
ServerName www.site1.com.br
ServerAdmin site1@site1.com.br
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
</VirtualHost>

<VirtualHost www.site2.com.br>
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
</VirtualHost>
Qualquer diretiva dentro de <VirtualHost> controlar�o ter�o efeito no
site virtual especificado. Quando uma diretiva n�o for especificada
dentro de <VirtualHost>, ser�o usados os valores padr�es especificados
no arquivo de configura��o do `Apache' (como a diretiva _ServerAdmin
webmaster@site.com.br_ 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

<VirtualHost 200.200.200.10>
ServerName www.site1.com.br
ServerAdmin admin1@site1.com.br
DocumentRoot /var/www/www_site1_com_br
TransferLog /var/log/apache/site1/access.log
ErrorLog /var/log/apache/site1/error.log
</VirtualHost>

<VirtualHost 200.200.200.10>
ServerName www.site2.com.br
ServerAdmin admin2@site2.com.br
DocumentRoot /var/www/www_site2_com_br
TransferLog /var/log/apache/site2/access.log
ErrorLog /var/log/apache/site2/error.log
</VirtualHost>

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 <VirtualHost > 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

<VirtualHost 200.200.200.10>
VirtualDocumentRoot /var/www/%0
VirtualScriptAlias /var/www/%0/cgi-bin
TransferLog log/apache/site1/access.log
ErrorLog log/apache/site1/error.log
</VirtualHost>

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:

<VirtualHost www.gms.com.br>
ServerName www.gms.com.br
ServerAdmin gleydson@cipsga.org.br
DocumentRoot /var/www/www_gms_com_br
</VirtualHost>
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:

<VirtualHost 192.168.1.1>
ServerName www.gms.com.br
ServerAdmin gleydson@cipsga.org.br
DocumentRoot /var/www/www_gms_com_br
</VirtualHost>

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 <VirtualHost> 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 <VirtualHost>.
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
<VirtualHost>, isto evita o retorno incorreto de nomes (que pode
evitar/revelar fraudes).
7. Quando utilizar virtual hosts, crie uma diretiva <VirtualHost
_default_L:*> 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
<IfModule mod_ssl.c>
# � 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
<VirtualHost _default_:443>

# 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

</VirtualHost>

</IfModule>

#################################################################################
# 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:

<Directory /var/www/secure/clientes>
Options Indexes
Order deny,allow
Deny from evil.cracker.com
SSLRequireSSL
</Directory>

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 <gleydson@cipsga.org.br>
#
# 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 <http://www.apache.org/docs/> 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 gleydson@cipsga.org.br

#
# 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 <http://www.apache.org/docs/mod/core.html#lockfile>);
# 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 <VirtualHost>,
# as mensagens de erros relativas aos hosts virtuais ser�o registradas neste
# arquivo. Se definir um arquivo de log de erros para <VirtualHost>, 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 "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v"


full
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T"
debug
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{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
# <VirtualHost>, elas ser�o registradas aqui. Se for definida dentro
# de <VirtualHost> 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.

#<VirtualHost host.some_domain.com>
#ServerAdmin webmaster@host.some_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>

# 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 <http://www.apache.org/docs/vhosts/>
# 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.
#
#<VirtualHost ip.address.of.host.some_domain.com>
# ServerAdmin webmaster@host.some_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
#</VirtualHost>

#<VirtualHost _default_:*>
#</VirtualHost>

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.
#
<IfModule mod_userdir.c>
# Linha abaixo por recomenda��o de seguran�a do manual do Apache
UserDir disabled root
UserDir public_html
</IfModule>

#
# 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.
#
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.cgi
</IfModule>

#
# Diretivas que controlam a exibi��o de listagem de diret�rios geradas pelo
servidor.
#

<IfModule mod_autoindex.c>

#
# 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 (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe


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

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /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

</IfModule>

# 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.
#
<IfModule mod_mime.c>

# 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.
#
<IfModule mod_negotiation.c>
LanguagePriority pt-br pt es en da nl et fr de el it ja pl ltz ca sv
</IfModule>

#
# 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 application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
#
# E para arquivos PHP 4.x use:
#
#AddType application/x-httpd-php .php
#AddType 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

</IfModule>
# 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 /icons/ /usr/share/apache/icons/


Alias /doc/ /usr/doc/
Alias /focalinux /var/www/focalinux
Alias /debian-br /var/www/debian-br/htdocs
Alias /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
# <IfModule>. Isto significa que a diretiva MIMEMagicFile somente ser� processada
# caso o m�dulo estiver ativo no servidor.
#
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>

<IfModule mod_setenvif.c>
#
# 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
</IfModule>

# Se o m�dulo Perl est� instalado, isto ser� ativado.


<IfModule mod_perl.c>
Alias /perl/ /var/www/perl/
<Location /perl>
Options +ExecCGI
SetHandler perl-script
PerlHandler Apache::Registry
</Location>
</IfModule>

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
<Directory />
Options SymLinksIfOwnerMatch
AllowOverride None
# Order deny,allow
# Deny from all
</Directory>

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

<Directory /var/www>

# 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

</Directory>

#
# 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.
#
<Directory /usr/lib/cgi-bin/>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
#
# 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
#
#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .meudominio.org
#</Location>

#
# 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
#
#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .meudominio.org
#</Location>

# Visualiza��o do diret�rio de �cones


<Directory /usr/share/apache/icons>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

# O Debian Policy assume que /usr/doc � "/doc/" e linkado com /usr/share/doc,


# pelo menos para localhost.

<Directory /usr/doc>
Options Indexes FollowSymLinks
order deny,allow
deny from all
allow from 192.168.1.10/24
</Directory>

# Esta define a localiza��o visualiz�vel do monitor de status mod_throttle


#
<location /throttle-info>
SetHandler throttle-info
</location>

#
# 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.
#
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

#
# 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
#
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>

#
# 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.
#
#<Location /cgi-bin/phf*>
# Deny from all
# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#</Location>

# Acesso aos servi�os proxy do apache


#<Directory proxy:*>
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#</Directory>

# 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
<Directory /var/www/focalinux>
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 ;-)
</Directory>

# 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
<Location /focalinux/humor/h-supor-fonte.txt>
AuthName "Piada de fonte de alimenta��o"
AuthType basic
AuthUserFile /home/gleydson/public_html/passwd1
Require valid-user
# Satisfy all
</Location>

# Libera o acesso a localiza��o /debian (acessada atrav�s de /pub/mirror/debian,


# definida no Alias acima)
<Location /debian>
Options Indexes
Order deny,allow
allow from all
deny from all
</Location>

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
<odin@numb.org>.

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
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').
2. Interrompa a execu��o do daemon do `oidentd' atual dando um
`./etc/init.d/oidentd stop'.
3. 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'.
4. 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: john@192.168.1.
#
# O servi�o telnet est� permitido somente para john conectando de 192.168.1.1
in.telnetd: john@192.168.1.1
# 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 evil@cracker.com.

# 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 admin@192.168.1.
# 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'. Veja Se��o


4.8.3, `O mecanismo de controle de acessos tcpd'.

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. Op��es


espec�ficas do protocolo 1 ou 2 do ssh ser�o destacadas.

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 <openssh-unix-dev@mindrot.org> (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. A sintaxe


usada por este comando � a seguinte:

`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: `gleydson@ftp.debian.org:~/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 gleydson@ftp.sshserver.org:~/

# Para fazer a opera��o inversa a acima (copiando do servidor remoto para o local)
# � s� inverter os par�metros origem/destino:
scp -C gleydson@ftp.sshserver.org:~/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 gleydson@ftp.sshserver.org:~/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 gleydson@server1.ssh.org:~/teste.sh gleydson@server2.ssh.org:~/

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 gleydson@www.sshserver.org
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. Este cap�tulo � baseado no
servidor qpopper da Qualcomm.

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
<qpopper-announce@rohan.qualcomm.com> (inscreva-se enviando uma
mensagem com o assunto "subscribe" para o nome da lista acrescentando
"-request"). A lista de suporte aos usu�rios �
<qpopper@lists.pensive.org> (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 root /usr/sbin/tcpd


/usr/sbin/in.qpopper -s

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. <2122.11132222@server.org>

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
Desativa a resolu��o reversa de endere�os IP de clientes.
-s
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'. Siga os passos a seguir para
configurar este sistema:

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 <root@localhost>
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 <TESTE> 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 <PPID>)

_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: <DIR_MODE=0750> 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>, <PATH>,
<ENV>, <BASH_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 <TMOUT> 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:
* <HISTFILE> - 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.
* <HISTSIZE> - Define o n�mero de comandos que o arquivo de
hist�rico poder� armazenar, o padr�o � 500.
* <HISTFILESIZE> - 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 <DSHELL=/usr/bin/falselogin> 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 required /usr/lib/security/pam_warn.so


auth required /usr/lib/security/pam_deny.so
account required /usr/lib/security/pam_deny.so
password required /usr/lib/security/pam_warn.so
password required /usr/lib/security/pam_deny.so
session required /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':

* soft core 0
* hard rss 10000
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 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 neste


guia. Recomendo dar uma lida na p�gina de manual para entender como
as vari�veis do arquivo de configura��o funcionam. Mesmo assim aqui
vai um exemplo simples deste arquivo para iniciar rapidamente o uso do
`sudo':

# 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: gleydson@192.168.1.1

# Permite o acesso ao servi�o ftp somente ao usu�rio gleydson conectando de


# qualquer m�quina da rede 192.168.1.*
in.ftpd: gleydson@192.168.1.

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 "#<off>#" 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.> <Ponto Mont.> <tipo> <op��es> <dump> <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 tcp nowait.40 nobody.adm /usr/sbin/oidentd oidend -q
-i -t 40

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
>/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'.
5. 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.
6. 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.
7. 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:
# Ativa o suporte a quota em /pub (somente grupos de usu�rios no momento).
quotaon -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 inodes soft
hard
/dev/hda5 504944 500100 600000 10868
15000
20000

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.
* `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 <QUOTAUSER=numero> 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 files quota limit grace
/dev/hda5 504944* 500100 600000 00:05 10868 0 0

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: gleydson@debian.gms.com.br
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:

Block limits File limits


Filesystem used soft hard grace used soft hard grace
/dev/hda5 +- 504944 500100 600000 none 10868 0 0

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 confiar nas restri��es de senha da BIOS (qualquer um


com conhecimentos de hardware e acesso f�sico a m�quina pode abrir o
gabinete e dar um curto na bateria que mant�m os dados na CMOS ou
aterrar o pino de sinal da CMOS), a retirada da unidade de disquetes �
recomendada, isso 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
"minhasenha@segura.com.br"
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. O
gerenciamento do sistema loop encriptado � feito atrav�s do
m�dulo `loop_gen'.

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�
perguntado se deseja realmente assinar a chave do usu�rio e ent�o
pedida a "FraseSenha" de sua chave privada.
5. 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 <gleydson@cipsga.org.br> 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 <djalma@cipsga.org.br>' - Pela recente hospedagem


do Foca GNU/Linux e do site MetaInfo do amigo Ma�an. Estou muito
feliz vendo o Foca GNU/Linux fazendo parte de um projeto t�o
positivo como o CIPSGA � para o crescimento e desenvolvimento do
software livre nacional.

* `Bakurih <bakurih@yahoo.com>' - Revis�o inicial do documento.

* `Eduardo Marcel Ma�an <thecore@thecore.com.br>' - Pelo apoio dado


atrav�s da hospedagem da p�gina do guia no Meta<i>fo
(http://www.metainfo.org) nos livrando dos banners da
Geocities...

* `Michelle Ribeiro <michelle@focalinux.org>' - 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 <brain@matrix.com.br>' - Descri��o sobre a


distribui��o `Suse' .

* `Paulo Henrique Baptista de Oliveira


<baptista@linuxsolutions.com.br>' - Pelo apoio moral oferecido
durante os freq�entes lan�amentos do guia, acompanhamento e
divulga��o.

* `Diego Abadan <diego@hipernet.ufsc.br>' - Envio de corre��es


significativas, novos endere�os de listas de discuss�o.

* `Alexandre Costa <alebyte@bol.com.br>' - 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 <ciccio@prestonet.com.br>' - 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 <dockov@zaz.com.br>' - 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 <gleydson@cipsga.org.br>.

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 <gleydson@cipsga.org.br>

Vers�o 6.05 - segunda, 18 de mar�o de 2002

Você também pode gostar