Buscar

IP Security

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Tutorial - Gerência de Redes Segurança em TCP/IP 
por Suzana Strauch - dez/96 
 
1. Segurança na Internet - Unix 
 
 Sintomas Suspeitos 
 Sempre Melhorar os Mecanismos de Proteção 
 O que vale a pena proteger 
 
2. Situação Atual 
 Autenticação Fraca 
 IP Spoofing 
 Vulnerabilidade dos Serviços 
Telnet 
Rlogin 
Finger 
FTP 
Mail 
 Protocolos sem proteção contra monitoração 
 Vírus, Vermes, Cavalos de Tróia 
 
3. Mecanismo de Defesa 
 Auditoria e Autenticação 
 Registro 
 Criptografia 
 
4. Formas de Proteção 
 Firewalls e Proxies 
 Wrappers 
 Protocolos SSL, PGP 
 
5. Ferramentas para Verificação de Segurança no Unix 
 COPS 
 TRIPWIRE 
 SATAN 
 TIGER 
 ISS 
6. Bibliografia 
7. Links Interessantes 
1. Segurança na Internet – Unix 
Quando falamos em segurança na Internet, nos referimos principalmente ao sistema operacional 
Unix, por diversos motivos, entre eles foi o Unix o 
ambiente em que a Internet se originou e ainda hoje é 
o sistema operacional mais utilizado na rede. O Unix 
por ter sido desenvolvido em universidade com o 
objetivos acadêmicos e para ligar máquinas dentro 
de um mesmo campus, não se preocupou com todos 
os pontos de segurança. 
 
Sintomas Suspeitos 
Entre os sintomas mais frequentes de intrusos no sistema estão: 
 Novas contas de usuários 
 A volta da utilização de contas com pouco uso ou há muito tempo sem uso 
 Mudanças de tamanho e data em alguns arquivos (principalmente nos arquivos de log) 
 Número muito grande de logins sem sucesso 
 Baixa de desempenho inexplicada do sistema, etc. 
Melhorias nos Mecanismos de Proteção 
Os mecanismos de proteção que são apresentados neste trabalho, solucionam alguns dos problemas 
de segurança atuais, mas não podem prever os ataques que ainda poderão surgir. Por este motivo o 
administrador da rede tem que estar constantemente avaliando os seus mecanismos de segurança, 
verificando a sua eficiência e atualizando-se sempre com os novos ataques que surgem. 
A segurança de um sistema esta intimamente ligada a seu administrador, pois muitos dos furos que 
serão abordados se devem a má configuração do sistema ou não atualização de um software que 
tinha um bug e deveria ter sido substituído. 
O que vale a pena proteger 
Antes da configuração das regras que determinarão a segurança do sistema ligado a Internet é 
necessária que seja feito um planejamento, avaliando os seguintes pontos: 
 Determinar o que deve ser protegido 
 Determinar que nível de segurança é necessário 
 Avaliar a questão custo x benefícios 
Por exemplo, uma agência de publicidade que esteja ligada a Internet, tem que proteger muito o 
seus trabalhos, pois uma propaganda que irá veicular na mídia na semana seguinte, não pode de 
maneira alguma chegar nas mãos da concorrência. 
Já em uma universidade, não é necessária tanta segurança, pois seus trabalhos geralmente são 
colocados à disposição de outras universidades. 
Autenticação Fraca 
O Unix guarda as informações de todos os usuários do sistema no arquivo /etc/passwd. Este arquivo 
contém o username, o nome real, informação para a identificação e informações básicas sobre a 
conta de cada usuário no sistema. O arquivo é organizado da seguinte forma: cada linha do arquivo 
contém o registro de um usuário, e os registros são divididos em campos separados pelo caracter (:). 
Por exemplo: 
root:fi3sED95ibqR6:0:1:System Operator:/:/bin/csh 
daemon:*:1:1::/tmp: 
uucp:OORoMN9FyZfNE:4:4::/usr/spool/uucppublic:/usr/lib/uucp/uucico 
jsilva:eH5/.mj7NB3dx:181:100:José Silva:/u/jsilva:/bin/csh 
As três primeiras contas, root, daemon e uucp, são contas do sistema e a última é conta de usuário. 
Os campos de cada linha tem o seguinte significado: 
jsilva Username 
eH5/.mj7NB3dx senha do usuário cifrada 
181 número identificador do usuário (UID) 
100 número identificador do grupo ao qual usuário pertence (GID) 
José Silva nome real do usuário 
/u/jsilva/ diretório home do usuário 
/bin/csh shell do usuário 
O objetivo da senha é de autenticar o usuário. Em muitas versões do Unix caso um usuário tente 
acessar um sistema e entre com a senha errada diversas vezes consecutivamente, a conta deste 
usuário é bloqueada. Isto evita com que uma pessoa fique tentando acertar a senha de outro, e, caso 
isto aconteça, deve-se avisar ao administrador que alguém está tentando quebrar uma conta. 
A senha é cifrada com uma função one-way a qual cifra a senha com blocos de zero. O resultado da 
função crypt( ) é armazenado no arquivo /etc/passwd. Quando tentamos entrar no sistema o 
programa /bin/login cifra a senha digitada pelo usuário com a mesma função, e compara o resultado 
com o que temos armazenados no arquivo /etc/passwd, se forem iguais permite a entrada do usuário 
no sistema. 
O algoritmo do crypt( ) usado é baseado no DES (Data Encryption Standard). 
O ataque mais usado na rede é chamado de Ataque do Dicionário que foi criado por Robert Morris 
(coincidência ou não, filho de Robert Morris da NSA que foi um dos pesquisadores que 
desenvolveu crypt( ) ). O ataque consiste na cifragem das palavras de um dicionário através da 
função crypt( ), e comparações com os arquivos de senhas de usuários. Desta forma, quando uma 
palavra do dicionário cifrada coincidisse com a senha cifrada de um usuário, o atacante teria obtido 
uma senha. 
Para dificultar este ataque foi criado o chamado salt, que é um número randômico gerado na hora 
em que o usuário esta inserindo ou alterando a sua senha. O número gerado pode estar entre 0 e 
4095 e é cifrado juntamente com a senha, o que impede a utilização de um dicionário genérico para 
todos os usuários. O atacante agora, tem que cifrar cada palavra do dicionário com o salt de cada 
usuário. 
Embora cada usuário tenha seu username, o Unix internamente representa cada usuário por um 
número, o UID (User Identifier). Os UIDs são números de 16 bits e geralmente os UIDs entre 0 e 9 
são usados para funções do sistema. Os UIDs para os usuários começam geralmente em 20 ou 100. 
O Unix guarda a relação entre username e UID no arquivo /etc/passwd, após a senha cifrada temos 
o UID do usuário. 
O UID [GAR94] é o identificador real do usuário para o sistema operacional, o username é 
utilizado apenas por ser mais conveniente para os usuários. Se dois usuários possuírem o mesmo 
UID, o Unix os veria como um mesmo usuário, mesmo eles tendo username e senhas diferentes. 
Todo o usuário do Unix pertence a um ou mais grupos, e estes grupos, como os identificadores de 
usuário, também possuem identificador de grupo, o GID (Group Identifier). O administrador do 
sistema cria os grupos e especifica quais arquivos, diretórios ou dispositivos os usuários deste grupo 
vão ter acesso. No /etc/passwdé armazenado o GID do grupo primário do usuário. Os dados do 
grupo são armazenados no arquivo /etc/group. 
IP Spoofing 
O IP spoofing consiste na troca do IP original por outro, podendo assim se passar por outro host. 
Através de IP Spoofing um intruso pode se aproveitar de hosts confiáveis armazenados no 
arquivo .rhosts, e entrar em máquinas via rlogin, por exemplo, onde não é exigido senha. 
O famoso ataque de Kevin Mitnick à rede particular de Tsutomo Shimomura, um especialista em 
segurança de sistemas, em dezembro de 1994, foi baseado no ataque descrito acima. Mitnick, além 
da rede de Shimomura, através de um modem e celular, invadiu diversos outros sistemas, como 
universidades, empresas e órgãos públicos. 
Existe também o chamado Host Name Spoofing, mais fácil de programar que o IP Spoofing, que é 
quando um DNS retorna um nome falso para um dado IP. Pode ser utilizado para atacar alguns 
sistemas que possuem serviços baseados em autenticação pelo nome do host. 
Vulnerabilidade dos Serviços da Internet 
Esta parte analisa a vulnerabilidade dos serviços da Internet, avaliando seus pontos fracos e 
soluções encontradas. 
 
TELNET 
Os programas telnet e telnetd provêm serviço de terminal virtual 
remoto, ou seja através deste serviçoo usuário entra em uma máquina 
remota, através da rede, e trabalha nela como se estivesse sentado num 
terminal, diretamente conectado a ela. 
O grande problema deste serviço é que para a identificação do usuário 
na máquina remota, trafegam pela rede o username e a senha em claro, 
sem qualquer método de criptografia. 
 
RLOGIN 
O rlogin e o rlogind provêm um serviço de terminal remoto, muito semelhante ao telnet. Existem 
duas diferenças básicas entre o telnet e o rlogin: 
 no rlogin o username é automaticamente transmitido no início da conexão, não sendo 
necessário ao usuário digitar o seu username. 
 o rlogin não exige senha caso a conexão venha de um host confiável ou de um username 
confiável 
Host Confiáveis (Trusted Hosts) 
Se um host confia em um outro, então os usuários que tenham o mesmo username em ambos os 
hosts podem se logar de um host em outro sem ter que digitar a senha. 
Usuários Confiáveis (Trusted Users) 
Usuários confiáveis são como os hosts confiáveis só que se referem a usuários. Se for designado a 
um usuário em outro computador como um usuário confiável para a sua conta, então ele pode logar-
se na sua conta sem ter que digitar a senha. 
Hosts e usuários confiáveis tem vantagens, principalmente em ambientes fechados, pois fica muito 
mais rápido passar de uma máquina para a outra. Praticamente, os hosts confiáveis fazem com que 
uma vez o usuário identificado frente a uma máquina, está identificado frente a toda a rede, 
passando de uma máquina a outra sem ter que digitar a senha novamente. O rlogin varre o 
arquivo /etc/hosts.equiv e depois o arquivo ~/.rhosts. 
/etc/hosts.equiv 
Este arquivo contém a lista de hosts confiáveis para o seu computador. Cada linha do arquivo 
contém um host confiável. 
Exemplo: ouro.inf.ufrgs.br prata.inf.ufrgs.br platina.inf.ufrgs.br ~/.rhosts 
Este arquivo no diretório home do usuário contém a lista de hosts em que o usuário confia. Por 
exemplo, o arquivo ~raquel/.rhosts na máquina sirius.inf.ufrgs.br contém as seguintes linhas: 
canopus.inf.ufrgs.br auriga.inf.ufrgs.br 
Com este arquivo .rhosts a usuária rachel na máquina canopus ou auriga pode se logar na máquina 
sirius na conta rachel sem ter que digitar novamente a sua senha. 
O arquivo .rhost também pode ter o par [máquina, username], estendendo a confiança para outros 
usernames. 
canopus.inf.ufrgs.br cohen Neste caso, o usuário conhecido da máquina canopus pode se logar na 
conta da rachel sem a sua senha. 
Hosts e usuários confiáveis tem sido responsáveis por diversos problemas de segurança, uma vez 
que uma máquina for invadida por um intruso, todas as que confiam naquela também estão 
comprometidas. 
Além disso, os arquivos .rhosts estão sendo utilizados pelos intrusos, que adicionam o seu username 
no arquivo para facilitar a sua entrada no sistema no futuro. 
 
FINGER 
O finger quando executado sem parâmetros retorna as informações armazenadas no 
arquivo /etc/passwd de todos os usuários logados no sistema no momento, como por exemplo o 
nome completo, o username, o horário de login, etc. 
Quando executado com argumentos, o programa procura no /etc/passwd e retorna informação 
detalhada de cada usuário que tiver o primeiro, último nome ou username especificado pelo usuário. 
Através do finger podemos saber quem esta logado em uma determinada máquina, como por 
exemplo: finger @chui.inf.ufrgs.br. 
O finger roda na máquina local, e o fingerd é o responsável por implementar que o serviço fique 
disponível para toda a rede. 
O finger facilita aos intrusos obter uma lista de usuários do sistema, aumentando com isto a chance 
de quebra do sistema. Por esta razão muitos sistemas desabilitaram a utilização do finger. 
O finger foi uma das maneiras que o verme da Internet de Robert Morris utilizou para invadir os 
sistemas. O programa original do fingerd continha as seguintes linhas de código [GAR91]: 
char line[512]; 
line[0] = ‘\0’; gets(line); 
Como a função gets( ) não verifica o tamanho da linha era permitido a um programa mal 
intencionado ultrapassar os 512 bytes e causar um overflow, interrompendo a execução do fingerd e 
com isso abrindo um shell e dando o programa acesso irrestrito ao servidor. 
O verme da Internet atacou diversas máquinas em 2 de novembro de 1988. 
O problema foi facilmente resolvido trocando-se a função gets( ) por fgets( ), pois esta última não 
permite que o buffer de entrada cause um overflow. 
fgets (line, sizeof(line), stdin); 
 
FTP (File Transfer Protocol) 
O serviço FTP permite que usuários transfiram arquivos facilmente de um sistema para outro, 
através da rede. 
O FTP apresenta o mesmo problema de segurança do telnet, trafegar username e senha pela rede 
sem nenhuma proteção. 
O FTP pode ser configurado para trabalhar também com acesso anônimo, ou seja, qualquer pessoa, 
mesmo que não tenha conta naquela máquina pode depositar e copiar arquivos dela. O FTP 
anônimo é muito utilizado para a distribuição de documentos e softwares através da rede. Deve ser 
tomado muito cuidado na configuração de um servidor de FTP anônimo para que o acesso seja 
restrito aos arquivos determinados incluindo restrições de acesso. Outra atenção é que o servidor de 
FTP não fique sendo depósito de documentos indesejados como arquivos de intrusos, etc, por este 
motivo é aconselhável criar um diretório separado para a colocação de arquivos com espaço 
limitado. 
Através do arquivo /etc/ftpusers eu posso impedir que os usuários especificados utilizem o serviço 
FTP. 
 
MAIL 
Através do protocolo SMTP (Simple Mail Transfer Protocol) qualquer usuário envia uma 
mensagem de uma máquina para outra através da rede. O mail é o serviço mais difundida da 
Internet. 
O sendmail, uma das implementações mais difundidas do SMTP, atua tanto como servidor como 
cliente. 
O sendmail já é conhecido como fonte de problemas de segurança. Uma das vulnerabilidades do 
sendmail [GAL96] envolve em fazer o servidor executar o corpo de uma mensagem como uma 
shell script. O script pode fazer qualquer coisa que um usuário comum do sistema possa fazer, 
incluindo enviar o arquivo de senhas do sistema para o atacante. O sendmail praticamente não 
possui validação dos dados e permite também que seja enviado um mail par um arquivo. 
O sendmail possui algumas contas que devem ser desabilitadas pelo administrador do sistema 
como, por exemplo, as contas “wizard”, “kill”, “debug”. A configuração do sendmail fica no 
arquivo /usr/lib/sendmail.cf. 
O verme da Internet de 1988 utilizou-se do modo de depuração do sendmail para obter acesso 
irrestrito ao sistema invadido. O sendmail possui este modo de depuração, o que faz com que depois 
de instalado o sendmail deve ser recompilado com o modo de depuração desligado. 
Como visto, o sendmail é o serviço mais fraco no nível de segurança e um dos mais utilizados. 
Protocolos sem proteção contra monitoração 
Em muitas redes, como por exemplo, as redes Ethernet, os pacotes são transmitidos para todos os 
computadores conectados ao mesmo meio físico. Geralmente os computadores são programados 
para ouvir somente os pacotes endereçados a eles. Mas, é possível reprogramar o computador 
forçando ele a ouvir todos os pacotes transmitidos e gravá-los. 
Em serviços como ftp e telnet em que o username e a senha trafegam em claro (ou seja nenhum 
método de critografia é utilizado) fica muito fácil obter estes dados. 
Existem também programas especiais, os sniffers, para capturar os primeiros 100 caracteres 
enviados em ambas as direções durante uma conexão, o que é suficiente para capturar o username e 
senha. 
Vírus, Vermes e Cavalos de Tróia 
 
Vírus 
São programas que se inserem dentro de outros programas, fazendo com que quando estes 
programas sejam executados, o vírus também seja executado. Os vírus quando executados tentam 
fazer novas cópias de seu código. A maioria dos vírus que conhecemos foram desenvolvidos para 
máquinas com sistemas operacionais fracos em termos de segurança como o MS-DOS. 
 
VermesOs vermes são programas que podem rodar independentemente e trafegam de máquina a máquina 
através das conexões da rede. Os vermes podem ter partes rodando em diferentes máquinas. Os 
vermes não modificam os outros programas embora possam carregar com eles o código de um 
vírus, por exemplo. 
Para o desenvolvimento de um verme são requeridos um ambiente de rede e um autor que tenha 
familiariedade com os serviços da rede e com o sistema operacional, isto foi o que aconteceu com o 
verme da Internet de 1988, desenvolvido por Robert Morris. A proteção contra um verme é a 
mesma para o acesso não autorizado, se temos um ambiente já protegido consequentemente o 
verme também não irá conseguir entrar. 
 
Cavalos de Tróia 
Os cavalos de Tróia parecem com programas que o usuário quer rodar - um jogo, editor, etc. 
Enquanto os programas parecem estar executando normalmente, ele esta fazendo outra, como 
deletando seus arquivos, formatando o disco, etc. 
3. Mecanismo de Defesa 
 Auditoria e Autenticação 
 Registro 
 Criptografia 
Auditoria e Autenticação 
Auditoria 
Auditoria de segurança visa inspecionar e testar a adequação dos sistemas de controle. Verifica se 
as regras de segurança determinadas para o sistema estão sendo cumpridas e aconselha mudanças 
no controle. 
 
Autenticação 
Quando dois usuários de uma rede (Alice e Bob) precisam se comunicar de forma segura, ambos 
precisam ter certeza de que estão se comunicando com a pessoa certa. Para isto os usuários 
precisam estar autenticados, provando serem eles mesmos e não uma terceira pessoa (Eve) tentando 
se passar por Alice ou por Bob. 
Para esta autenticação existem os KDCs (Key Distribuction Center) centrais de distribuição de 
chaves, os quais possuem chaves compartilhadas com Alice e com Bob para assim poder autenticá-
los. 
Assim quando Alice requisita uma comunicação segura com Bob, o Trent (como é chamado o 
KDC) autentica os usuários e gera uma chave para a comunicação entre eles. Por este motivo, é 
imprescindível que o Trent seja um servidor confiável. 
Esta notação de nomes: Alice, Bob, Eve, Trent, etc é usual para explicar protocolos criptográficos. 
Kerberos 
O Kerberos é uma implementação de um KDC, desenvolvida no MIT (Massachusetts Institute of 
Technology) utilizando o conceito de algoritmo de chave pública. 
O Kerberos é um protocolo de autenticação projetado para Unix e redes TCP/IP. Um serviço 
Kerberos situado na rede atua com um árbitro. Kerberos provê autenticação segura na rede 
permitindo com que uma pessoa acesse diferentes máquinas na rede. O Kerberos é baseado em 
criptografia de chave única (foi implementado com o DES, mas outros algoritmos também podem 
ser usados). 
No modelo Kerberos temos duas entidades na rede: o cliente e o servidor. Os clientes podem ser 
usuários ou software independente que precisam fazer download em arquivos, enviar mensagens, 
acessar bancos de dados, etc. 
O Kerberos mantém uma base de dados com as chaves de seus clientes. No caso dos clientes serem 
usuários a chave secreta pode ser uma senha cifrada. Serviços de rede que requerem autenticação, 
bem como os clientes que usem estes serviços registram suas chaves secretas com o Kerberos. 
Sabendo a chave secreta de todos, o Kerberos pode criar mensagens que convençam uma entidade 
da identidade de outra. 
Como o Kerberos trabalha: 
Um cliente requisita um ticket para um Ticket-Granting Service (ticket TGS) para o serviço 
Kerberos. Este ticket é enviado para o cliente cifrado com a chave secreta deste cliente. Para usar 
um serviço particular, o cliente requisita um ticket para aquele serviço para o Ticket-Granting 
Server (TGS). Assumindo que tudo está em ordem, o TGS envia o ticket de volta ao cliente. O 
cliente apresenta o ticket para o servidor como um autenticador. Novamente, se não há nada errado 
com as credenciais do cliente, o servidor deixa o cliente ter acesso ao serviço. 
Dados Biométricos 
Os dados biométricos estão sendo trabalhados como uma maneira confiável de autenticação, 
reconhecer a identidade de uma pessoa através de características fisiológicas como impressão 
digital ou padrão da Íris, ou em base em alguma coisa do seu comportamento como o padrão dos 
toques de digitação ou escrita manual. 
Registro 
Consiste em registrar os dados para que, no caso de uma invasão, possam ser recuperados os 
registros e descobrir a identidade do intruso. O Unix possui alguns registros de log, mas não possui 
um mecanismo para facilitar a busca de dados nestes arquivos de log. 
Arquivos de Log do Unix 
/usr/adm/lastlog 
Neste arquivo o Unix guarda o último login de cada usuário. A data e horário do último login é 
mostrada quando o usuário se loga. Este arquivo é consultado quando um comando finger é 
requisitado. 
/etc/utmp usr/adm/wtmp 
O arquivo /etc/utmp guarda os dados de quem está logado no sistema no momento. O 
arquivo /usr/adm/wtmp mantém tanto o login como o logout. O que cada um deste arquivos contém 
varia de acordo com o Unix que está sendo usado, geralmente são informações como: o nome do 
terminal, username, o nome do host de onde a conexão foi originada, o horário que o usuário se 
logou, o ID do processo, etc. 
Os comandos who( ), users( ) e finger( ) utilizam as informações do arquivo /etc/utmp, enquanto o 
comando last( ), o qual mostra o tempo em que o usuário esteve logado, utiliza o 
arquivo usr/adm/wtmp. 
/usr/adm/acct 
Neste arquivo o Unix pode armazenar todos os comandos de cada usuário. Este arquivo pode ser 
utilizado quando se desconfia de que estejam ocorrendo problemas de segurança, para uma 
auditoria nos comandos executados pelos usuários suspeitos. 
Criptografia 
Os algoritmos criptográficos podem ser classificados em dois tipos: os de chave única e os de chave 
pública e privada. 
Os algoritmos de chave única, também chamados de algoritmos de chave simétrica, caracterizam-se 
por utilizar a mesma chave tanto para a cifragem como para a decifragem dos dados. 
Os algoritmos de chave pública e privada, também chamados de algoritmos de chave assimétrica, 
utilizam-se de duas chaves: uma secreta só conhecida por pessoas autorizadas e outra pública que 
pode ser divulgada. 
Por exemplo, em uma rede, a chave pública de cada host é divulgada a todos os hosts que tenham 
acesso à rede. Para cifrar uma informação, utiliza-se a chave pública do destinatário. Quando este 
recebe a mensagem cifrada, ele utiliza a sua chave secreta para decifrar e obter a mensagem 
original. 
O algoritmo mais conhecido de chave única é o DES e o de chave pública e privada é o RSA. 
4. Formas de Proteção 
 Firewalls e Proxies 
 Wrappers 
 Protocolos SSL, PGP 
Firewalls 
Os firewalls previnem a rede local contra os perigos da rede externa. 
Um firewall frequentemente é instalado no ponto que a rede local é conectada a Internet. Todo o 
tráfego que entra ou sai para Internet passa pelo firewall. 
Graças a isso ,o firewall controla todo o fluxo entre a rede local e a Internet e assim pode conferir se 
o tráfego é aceitável. 
Quanto a um tráfego ser aceitável ou não isto depende da segurança configurada para esta rede. 
Logicamente um firewall é um separador, um analizador. A implementação física de um firewall 
varia muito. O mais comum é um firewall ser constituído por um conjunto de componentes de 
hardware - um roteador, um computador ou a uma combinação de roteadores, computadores e redes 
com softwares apropriados. Existem diversas maneiras de configurar estes equipamentos, esta 
configuração depende da segurança que quer ser dada para a rede. 
Vantagens 
Por ser um concentrador de todo o tráfego da rede local para a Internet é nele que estão colocadas 
todas as medidas de segurança. É mais eficiente e econômico colocar todas as medidas de segurança 
e tecnologias em apenas um local da rede do que tê-las espalhadas pela rede. 
Muitos dos serviços que a Internet oferece são inerentemente inseguros. O firewall obriga a 
segurança no site, permitindo somente serviços aprovadospassar através dele, os serviços que 
tinham suas regras setadas. 
O firewall provê um excelente local para se coletar informações a respeito da utilização do sistema 
e da rede. 
 
Desvantagens 
Firewalls oferecem uma excelente proteção contra os perigos da rede, mas não é uma solução 
completa para segurança. Certos perigos estão fora do controle do firewall. 
Um firewall não pode proteger a sua rede interna de usuários internos ao sistema, nem proteger 
contra conexões que não são feitas através dele. 
Este assunto foi abordado no Tutorial sobre Firewalls por Marco Aurélio Spohn. 
Material relacionado: Firewalls - Ferramentas e os produtos comercias Bellcore, CheckPoint 
Software Tecnologies Ltd. (Firewalls), Firewall Security Corporation . 
 
Proxy 
Outro mecanismo que geralmente são utilizados juntamente com os firewalls são os proxies. Os 
proxies fazem a interface entre a rede interna e externa, fazendo o mapeamento dos números Ips 
internos para acessar a rede externa. Este assunto é mais bem abordado no Tutorial sobre Proxy por 
Ulisses Giorgi. 
1 Introdução 
Os proxies são principalmente usados para permitir acesso à Web através de um firewall (fig. 1). 
Um proxy é um servidor HTTP especial que tipicamente roda em uma máquina firewall. O proxy 
espera por uma requisição de dentro do firewall, a repassa para o servidor remoto do outro lado do 
firewall, lê a resposta e envia de volta ao cliente. 
 
Figura 1: Visão geral de um Proxy 
O Proxy está rodando ou em um servidor firewall ou qualquer outro servidor interno que tenha 
acesso total a internet - ou em uma máquina dentro do firewall fazendo conexões com o mundo 
exterior através de SOCKS ou qualquer outro software firewall. 
Normalmente, o mesmo Proxy é usado por todos os clientes em uma subrede. Isto torna possível 
para ele fazer caching eficiente de todos os documentos requisitados. 
A habilidade que o Proxy tem no uso do cache, o torna atrativo para aqueles que não estão dentro 
do firewall. Configurar um servidor Proxy é fácil e os mais populares programas clientes Web já 
tem suporte a essa ferramenta. Sendo assim, torna-se simples a tarefa de configurar um grupo de 
trabalho inteiro para usar o serviço de cache do Proxy. Isto reduz os custos com tráfego de rede 
porque muitos documentos que são requisitados são lidos do cache local. 
A metodologia atual é baseada em um código de gateway escrito por Tim Berners-Lee como parte 
do libwww ( WWW commom Library). Kevin Altis, Ari Luotonen e Lou Montulli foram os 
principais contribuidores para a padronização do Proxy. 
Lou Montulli, autor de Lynx, fez as primeiras mudanças no libwww em colaboração com Kevin 
Altis. Ari Luotonen mantém o CERN httpd. 
Obs.: se você está usando uma tela com configuração VGA, pode-se , já que a figura não caberá na 
tela, clicá-la para que apareça em uma janela separada. 
1.1 Porque um nível de aplicação proxy? 
Um nível de aplicação proxy faz um firewall seguramente permeável para os usuários na 
organização sem criar um furo na segurança onde hackers poderiam entrar na rede da organização. 
Para clientes Web, as modificações necessárias para suportar um nível de aplicação proxy são 
menores (leva-se apenas 5 minutos para adicionar suporte proxy para o Emacs Web Browser). 
Não há necessidade de compilar versões especiais de clientes Web com bibliotecas firewall, o 
cliente "out-of-the-box" pode ser configurado para ser um cliente proxy. Em outras palavras, 
quando se usa proxy não necessitamos customizar cada cliente para suportar um tipo ou método 
especial de firewall: o proxy, em si, é um método padrão para acessar firewalls. 
Usuários não têm que ter clientes FTP, Gopher e WAIS separados (muito menos modificados) para 
acessar um firewall - um simples cliente Web com um servidor proxy trata todos esse casos. O 
proxy também padroniza a aparência de clientes Gopher e FTP. 
O proxy permite que os programadores esqueçam as dezenas de milhares de linhas de código 
necessárias para suportar cada protocolo e se concentrem em coisas mais importantes - é possível 
ter clientes "peso-leve" que somente compreendam HTTP (nenhum suporte nativo aos protocolos 
FTP, Gopher, etc) - outros protocolos são manuseados transparentemente pelo proxy. Usando 
HTTP entre o cliente e o proxy, nenhuma funcionalidade é perdida, pois FTP, Gopher e outros 
protocolos Web são bem mapeados para o HTTP. 
1.1 Porque um nível de aplicação proxy? (cont.) 
Clientes sem DNS (Domain Name Service) também podem usar a Web. O endereço IP do proxy é a 
única informação realmente necessária. Organizações usando endereços, por exemplo, classe A 
(como 10.*.*.*), em suas redes particulares podem ainda acessar a internet contanto que o proxy 
seja visível tanto para a rede particular como para a Internet. 
Proxy permite um alto nível de log das transações de clientes, incluindo endereço IP, data e 
hora, URL, contagem de bytes e código de sucesso. Qualquer campo (seja de meta-informação ou 
seja comum) em uma transação HTTP é um candidato para log. Isto não é possível com log no nível 
IP ou TCP. 
Também é possível fazer a filtragem de transações de clientes no nível do protocolo de aplicação. O 
proxy pode controlar o acesso a serviços por métodos individuais, servidores e domínios, etc. 
Outra feature interessante do proxy é a cache. O uso de cache é mais efetivo no servidor proxy do 
que em cada cliente. Isto salva espaço em disco, desde que somente uma cópia é guardada, como 
também permite um uso de "cache inteligente", onde os documentos freqüentemente referenciados 
por muitos clientes são guardados por um periodo mais longo de tempo pelo cache manager. 
O uso de cache também torna possível acessar algumas páginas mesmo que servidores estejam fora 
do ar. Essa facilidade torna o serviço melhor, visto que recursos remotos como um site FTP 
ocupados que são frequentemente inacessíveis remotamente podem ser agora acessíveis através do 
cache local. Pode-se citar uma infinidade de usos que podemos fazer com o cache: fazer uma 
demonstração de algum lugar com uma baixa velocidade de conexão, ler documentos com a 
máquina não conectada (obviamente após colocar todos os documentos no cache local), etc. 
Em geral, autores de clientes Web não tem razão para usar versões de firewalls em seus códigos. O 
Proxy é mais simples para configurar do que SOCKS e trabalha em todas as plataformas, não 
somente UNIX. 
2.0 Detalhes Técnicos 
Quando uma requisição HTTP normal é feita por um cliente, o servidor pega somente o path e a 
"porção chave" da URL requisitada (Fig. 2); outras partes, como o especificador de protocolo 
"http:" e o nome do servidor são obviamente claros para o servidor HTTP remoto. O path 
requisitado especifica um documento ou um script CGI no sistema de arquivos local do servidor; ou 
ainda algum outro recurso disponível daquele servidor. 
Quando um usuário entra: 
 
http://mycompany.com/information/ProxyDetails.html 
 
O browser converte para: 
 
GET /information/ProxyDetails.html 
 
 
Figura 2: Uma transação HTTP normal 
O cliente faz a requisição ao servidor HTTP especificando apenas o recurso relativo àquele servidor 
(nenhum protocolo ou nome de servidor é colocado na URL). 
2.0 Detalhes Técnicos (cont.) 
Quando um cliente envia uma mensagem para um servidor proxy a situação é um pouco diferente. 
O cliente sempre usa HTTP para transações com o proxy, mesmo quando acessa um recurso 
oferecido por um servidor remoto usando outro protocolo, como Gopher e FTP. 
Entretando, ao invés de especificar somente o pathname e possíveis palavras que complementariam 
a procura para o proxy (como ocorre em uma requisição normal), todo a URL é especificada (fig.3 e 
4). Desta forma o proxy tem todas as informações necessárias para fazer a requisição para o 
servidor remoto especificado na URL. 
Nada melhor que um exemplo para clarear as coisas: se o usuário digitasse a seguinte URL: 
 
http://mycompany.com/information/ProxyDetails.htmlO browser, sabendo da existência do proxy, converteria para a seguinte requisição: 
 
GET http://mycompany.com/information/ProxyDetails.html 
 
O browser conecta-se então ao servidor e o proxy providencia a conexão com a Internet. Nesse 
caso, o Proxy converteria a requisição para: 
 
GET /information/ProxyDetails.html 
 
 
Figura 3: Uma transação HTTP com Proxy. 
O cliente faz uma requisição ao Proxy usando HTTP, mas especificando toda a URL; o Proxy se 
conecta ao servidor remoto e pede o recurso relativo àquele servidor sem especificar protocolo ou o 
nome do servidor na URL. 
2.0 Detalhes Técnicos (cont.2) 
 
Figura 4: Transação FTP com Proxy. 
O cliente faz a requisição ao Proxy usando HTTP (embora o recurso seja um FTP). O Proxy analisa 
a URL recebida e percebe que deve abrir uma conexão FTP. O resultado (o arquivo, no caso) é 
enviado para o cliente usando HTTP. 
Deste ponto o Proxy age como um cliente para conseguir o documento: ele chama o mesmo 
protocolo libwww que um cliente deveria chamar para que o documento fosse obtido. Entretanto, a 
"apresentação" do documento no Proxy é através de HTTP, independente do protocolo que foi 
usado para consegui-lo. Um comando list, por exemplo, é retornado como um documento HTML. 
2.1 O Lado do Cliente 
A maioria dos clientes WWW é construída no topo de libwww, a WWW Common Library, que 
trabalha com os diferentes protocolos de comunicação usados na Web: HTTP, FTP, 
Gopher, News e WAIS. 
O suporte do proxy é feito automaticamente por clientes usando a libwww. Variáveis de ambiente 
são usadas para controlar a biblioteca. Existe uma variável de ambiente individual para cada 
protocolo de acesso; ex.: http_proxy, ftp_proxy, gopher_proxy e wais_proxy. Essas variáveis são 
configuradas para apontar para o proxy que deve servir as requisições desse protocolo, por 
exemplo: 
 ftp_proxy=http://www_proxy.domain:911/ 
 export ftp_proxy 
Normalmente um único servidor Proxy trata todos os protocolos, mas, como vimos, não tem que ser 
assim. 
Quando a variável de ambiente para certo protocolo é definida, o código libwww faz que a conexão 
sempre seja feita para o Proxy e não diretamente com o servidor remoto. 
A última versão de libwww (2.15 de abril de 1994) suporta as chamadas "lista de exceções" que são 
localizações que devem ser atingidas sem o auxílio do Proxy. Isso é extremamente útil quando o 
acesso trata-se de servidores locais, onde o acesso pode ser feito sem nenhum Proxy. 
Outra diferença no protocolo é que, como já exposto, a URL requisitada pelo cliente deve ser 
completa se for uma operação com o Proxy. Essas são as únicas diferenças entre uma transação 
HTTP normais e uma com Proxy. A simplicidade do suporte Proxy faz com que mesmo clientes 
não baseados em libwww possam facilmente suportá-lo. 
O suporte Proxy é implementado somente pata HTTP/1.0 no lado do servidor: todos os clientes 
devem usar esse protocolo. Isto não é um problema porque libwww faz isto automaticamente e a 
maioria dos clientes (se não todos) já tem sido atualizada para HTTP/1.0 
2.2 O Lado do Servidor 
O proxy deve ser capaz de agir tanto como um servidor como um cliente. Ele age como um servidor 
quando aceita requisições HTTP de clientes conectados a ele e age como cliente quando se conecta 
com servidores remotos para conseguir retornar (ou atualizar) os documentos para seus clientes. Os 
campos do cabeçalho passados para o proxy pelo cliente são usados sem modificações quando o 
proxy se conecta ao servidor remoto de forma que o cliente não perde qualquer funcionalidade 
quando existe um proxy como intermediário. 
Um proxy "completo" deveria falar todos os protocolos Web (os mais inportantes são HTTP, FTP, 
Gopher, WAIS e NTTP). Proxies que somente lidam com um único protocolo Internet, como o 
HTTP, também são uma possibilidade mas um cliente Web deveria então requerer acesso a outro 
proxy quando quisesse usar outro protocolo (para isso que existem as variáveis de ambiente 
explicadas em 2.1). 
2.2 CERN httpd: servidor HTTP 
CERN httpd, que é um dos sofwares servidores HTTP, tem uma única arquitetura sendo que ele é 
atualmente o único servidor HTTP que é construído no topo da WWW Commom Library. Diferente 
de outros servidores HTTP, CERN httpd é capaz de falar todos os protocolos Web - os clientes 
podem falar, desta forma, todos os protocolos implementados por libwww. 
CERN httpd é capaz de rodar como um protocolo gateway desde sua versão 2.00 de março de 1993, 
mas features adicionais foram adicionadas somente na versão 2.15, onde ele se tornou um proxy 
"completo" (full proxy). Nesta última versão ele aceita URLs completas. O mesmo servidor pode 
agora agir como um proxy para vários protocolos desde que os clientes passem para ele toda a URL, 
permitindo, dessa forma, que o proxy saiba qual protocolo usar quando interagir com o servidor 
destino. O CERN httpd pode também agir como um servidor HTTP normal devolvendo arquivos 
locais. 
O servidor foi bastante melhorado durante a primavera de 1994. A implementação original não 
passava a informação de autorização de acesso para o servidor remoto que é essencial para 
documentos protegidos. O corpo das mensagens que são apresentadas com os métodos POST e 
PUT não eram enviadas em versões anteriores a 2.15 que consertou essa falha. 
É também possível compilar uma versão especial do CERN httpds que usa SOCKs - isto significa 
que o proxy não tem que rodar em uma máquina firewall: pode falar com o mundo através de 
SOCKS. Note que isso significa usar SOCKS apenas no httpd e não nos programas clientes. 
No FTP o modo passivo (PASV) é suportado, no caso de algum administrador querer impedir 
conexões que cheguem na porta 1023. Entretando, nem todos os servidores FTP suportam PASV 
que causa uma volta ao modo normal. 
2.3 Cache 
A idéia básica no cache é simples: armazenar os documentos retornados em um arquivo local para 
uso posterior de forma que não seja necessário se conectar ao servidor remoto na próxima vez que o 
documento seja requisitado (figuras 5 e 6). 
 
Figura 5: Uso de Cache em Proxies 
O documento requisitado é buscado do servidor remoto e armazenado localmente para uso futuro 
 
 
Figura 6: Análise do cache 
Se uma versão atualizada do documento é achada no cache do proxy nenhuma conexão ao servidor 
remoto é necessária 
2.3 Cache (cont.) 
Existem muitos problemas que necessitam ser resolvidos quando o uso do cache é introduzido. 
Quanto tempo é possível manter um documento no cache e ainda estar seguro que ele está 
atualizado? Como decidir quais documentos valem a pena serem colocados no cache e por quanto 
tempo? 
Expiração de documentos foi prevista pelo protocolo HTTP que contém um objeto espicificando a 
data que o documento já não será válido. Entretanto, existem muito poucos servidores que 
atualmente dão essa informação. Até que ela seja comum (quando a maioria dos servidores Web 
retornarão a data de expiração) nós teremos que confiar em estimativas heurísticas, que nos dão tão 
somente uma estimativa grosseira do tempo de vida do objeto. 
Desde que muitos documentos Web são documentos "vivos", especificar um tempo de vida para 
eles é geralmente uma tarefa difícil. Um documento pode permanecer um bom período de tempo 
intacto e, repentinamente, ser completamente mudado. Esta mudança pode não ter sido prevista pelo 
autor do documento e não estar bem informada na data de expiração. 
2.4 Inclusões no protocolo 
Quando é essencial que o documento retornado esteja atualizado, é necessário contactar o servidor 
remoto para cada requisição GET. O protocolo HTTP já contém o método HEAD para retornar a 
informação do cabeçalho de um documento, mas não o documento em si. Isto é útil para checar se o 
documento foi modificado desde o último acesso. 
Entretanto, nos casos em que o documento foi alterado, seria muito ineficiente fazer uma segunda 
conexão para o servidor remoto para conseguir executar o comando GET do documento. O 
overhead de fazer a conexãoé freqüentemente considerável. 
O protocolo HTTP foi então modificado para conter uma requisição do tipo If-Modified-Since que 
torna possível fazer uma requisição GET condicional. Esta é essencialmente a mesma requisição 
GET exceto pelo cabeçalho que contém a data e hora que o objeto está armazenado no cliente (no 
nosso caso, no cache do proxy). 
Se o documento não foi modificado desde a data e a hora especificada ele não será retornado. O 
cliente receberá como resposta apenas informações relevantes como a nova data de expiração com 
um código de resultado especial. Se, caso contrário, o documento foi modificado, ele será retornado 
como se a requisição fosse um GET normal. 
O GET condicional faz que vários tipos de utilitários se tornem mais eficientes. Ele pode ser usado 
por software de mirroring que tem que fazer refresh de um grande número de arquivos em uma base 
regular. O proxy pode fazer refresh de seu cache durante períodos de inatividade e não apenas 
quando um documento explicitamente expira. 
Embora o GET condicional seja compatível com o antigo, isso de nada adianta. O protocolo HTTP 
é definido de forma que campos de cabeçalho desconhecidos sejam ignorados. Se o servidor HTTP 
remoto não suportar o GET condicional nenhum erro será retornado: ele simplesmente retornará 
todo o arquivo como se a requisição se tratasse de um GET comum. Felizmente todos os grandes 
servidores HTTP já suportam o GET condicional. 
O mecanismo de cache é baseado em disco, que significa que o boot do proxy ou da própria 
máquina nada lhe afetará. Devido a este detalhe, o cache abre novas possibilidades quando o proxy 
e um cliente Web estão na mesma máquina. O proxy pode ser configurado para usar somente o 
cache local, possibilitando a realização de demonstrativos sem uma conexão internet. Você pode até 
desplugar um notebook e levá-lo ao bar. 
Ligação entre Proxies 
O encadeamento de proxies deixa você usar um proxy como um cache local de um departamento de 
uma grande organização. Esses departamentos têm controle sobre o servidor e o cache. Esse 
servidor proxy departamental pode se conectar a um proxy firewall entre a Internet e a organização. 
Esse servidor proxy fala com a Internet como mostrado na figura 7. 
Qualquer restrição de acesso do proxy mais externo tem precedência sobre o mais interno 
(departamental). 
Por exemplo, imagine que o proxy departamental 1 está configurado para aceitar qualquer URL e o 
proxy da organização (organizacional) está configurado para impedir que URLs da França seja 
aceitas. Desta forma, uma requisição do proxy departamental 1 pode ser negado pelo proxy 
organizacional. 
 
 
Fig 7: Encadeamento de proxies 
3.0 O Futuro 
Como o entusiasmo pelos proxies foi somente agora despertado, há muitos detalhes que estão em 
estágios primários, embora a funcionalidade básica já esteja pronta. O cache é uma área muito 
extensa e complexa sendo uma coisa que necessita ser bastante melhorada. O proxy deveria ser 
melhorado para fazer lookahead, retornando todos os documentos que provavelmente serão 
acessados. Por exemplo, todos os documentos referenciados pelo último documento lido pelo 
cliente, juntamente com as figuras associadas, também deveriam ser lidos. 
O protocolo HTTP também deveria ser melhorado para permitir requisições e respostas multi-parte: 
isto permitiria que tanto softwares de cache como de mirroring fizessem refresh de uma grande 
quantidade de documentos em uma simples conexão ao invés de ter que re-conectar ao servidor 
para cada arquivo. Mensagens multi-parte são também necessárias por clientes Web para receber 
todas as imagens do documento com uma única requisição. 
Vários aspectos da arquitetura proxy necessitam ser padronizada. Um número de porta do servidor 
proxy deveria ser assinalado pela autoridade da Internet. No lado do cliente há uma necessidade 
para um mecanismo de "fallback" para proxies, onde o cliente poderia se conectar a um segundo ou 
terceiro servidor proxy se o primeiro falhasse (como DNS). Também um método de procura 
dinâmica para achar o proxy mais próximo é necessário: isto poderia ser feito usando-se um nome 
padrão DNS - www_proxy.my.domain, por exemplo. 
4.0 Conclusões 
Graças ao suporte do padrão proxy pelos clientes e a grande disponibilidade do servidor proxy 
cern_http, qualquer um atrás de um firewall pode agora ter pleno acesso à Internet com mínimos 
esforços e sem comprometer a segurança. Usuários corporativos não precisam mais evitar o acesso 
à Web. 
Considerando o extremo crescimento da Web e sua habilidade de trocar FTP o cache em proxies se 
torna essencial: ele possibilita um ganho de "banda virtual" desde que documentos freqüentemente 
serão retornados do cache local ao invés de um servidor distante. 
Wrappers 
Os wrappers são programas que tem como objetivo o aumento de segurança dos serviços da 
Internet, como finger, telnet, ftp, rlogin, rsh, talk, etc. 
O aumento de segurança proporcionado pelo wrapper varia desde uma maior capacidade de log, 
verificações se um dado host não esta pretendendo ser outro host através de falsificação de IP (IP 
Spoofing), falsificações de nomes de host (Host Name Spoofing), até aumento das restrições de cada 
um dos serviços. 
Como principal exemplo de wrapper temos o TCP_Wrapper, que funciona da seguinte forma: 
quando for solicitado alguma conexão, por exemplo, telnet, ao invés do Inetd executar diretamente 
o telnetd, ele irá executar o wrapper, que fará uma série de validações e armazenará no log o IP do 
host que quer o serviço, para só então executar o telnetd. Desta forma o wrapper fica como o 
guardião do serviço. 
O processo wrapper fica completamente transparente para os diversos serviços de rede, não interage 
com o server nem com o cliente. Desta forma o wrapper fica independente de aplicação, permitido 
que funcione com diversos tipos e versões de programas de rede. 
O fato de estar sendo executado apenas no momento inicial da conexão do server com o cliente, 
torna insignificante a carga por ele gerada no servidor. Finalmente, isto também o torna invisível 
para os usuários externos, que nem saberão que ele existe [DAN96]. 
Novos Protocolos 
Para alguns serviços da Internet foram desenvolvidas algumas soluções, como por exemplo os 
protocolos SSL e PGP. 
PGP 
O PGP (Pretty Good Privacy), destina-se a comunicação segura via e-mail, para isto utiliza-se de 
criptografia de chave pública. 
A mensagem enviada é criptografada com a chave pública do destinatário. Para que o usuário possa 
decifrar a mensagem ele decifra com a sua chave secreta a qual somente ele possui. Desta forma, 
qualquer pessoa que intercepte esta comunicação não conseguirá decifrar a mensagem. 
No PGP temos também a facilidade de poder assinar uma mensagem, assim a mensagem vai cifrada 
com a chave secreta do remetente e o destinatário decifra com a chave pública do remetente. Uma 
mensagem pode ir cifrada e assinada. 
Material relacionado: PGP - Faq e <="" a="">MIT Distribuction Site for Pretty Good Privacy . 
 
SSL 
O SSL (Secure Socket Layer) foi desenvolvido pela Netscape Communications com o objetivo de 
gerar segurança e privacidade entre duas aplicações. Com o SSL é possível que aplicações 
cliente/servidor se comuniquem de forma segura evitando influências externas, falsificação dos 
dados e “escuta” dos dados em claro. 
O protocolo SSL atua entre o nível de aplicação e transporte da arquitetura Internet. Possui duas 
camadas: “SSL Record Protocol”, que é responsável por encapsular outros protocolos de alto nível 
e a “SSL Handshake Protocol”, que recebe os dados a serem cifrados/decifrados. 
Esta segunda camada é responsável pela autenticação do cliente e/ou servidor, negociação do 
algoritmo criptográfico e suas chaves antes da aplicação receber ou enviar qualquer byte de dados. 
Este protocolo é utilizado pelo BradescoNet para permitir homebanking. 
5. Ferramentas para Verificação de Segurança no Unix 
Muitas das ferramentas aqui apresentadas,não necessitam de privilégios de root para rodar e desta 
forma qualquer usuário pode detectar as falhas do sistema. Assim, estas ferramentas são muito 
utilizadas por intrusos, para descobrir os furos do sistema alvo. 
Esta é a razão por estas ferramentas terem sido muito criticadas. 
 
COPS 
O COPS é uma ferramenta de segurança para ambientes Unix, ele faz uma série de verificações 
como determinar se arquivos importantes estão em modo inadequado, verificar as senhas fáceis, etc. 
Material relacionado: COPS 
 
TRIPWIRE 
Ao contrário das outras ferramentas, o objetivo do TRIPWIRE é detectar que já houve algum tipo 
de intrusão no sistema. Ele é um analizador de integridade de arquivos e diretórios, um utilitário que 
compara um conjunto de arquivos com informações previamente armazenadas numa base de dados. 
Qualquer diferença é detectada e armazenada num log, incluindo arquivos que foram deletados ou 
criados. Geralmente, ele é executado do cron de tempos em tempos, e permite que se conclua, com 
um bom grau de confiança, que os arquivos binários principais não foram alterados. 
 
SATAN 
Satan (Security Analysis Tool for Auditing Network) é o mais complexo sistema de auditoria para 
sistemas Unix disponível. Ele coleta a maior quantidade possível de informações sobre um host, 
examina os serviços de rede como o finger, o NFS, o NIS, o ftp e o tftp, rexd entre outros. 
As informações que são relatadas pelo SATAN incluem tanto os tipos de serviços disponibilizados 
pelo host, quanto furos potenciais nestes serviços. Estes furos geralmente são causados por erros de 
configuração ou bugs conhecidos dos diversos daemons. Além disto, ele pode não apenas analisar 
diversos hosts individualmente, mas também procurar furos baseados em Trusted Hosts, e este sim 
ter problemas de segurança [DAN96]. O SATAN pode também ser utilizado para verificar a 
topologia de uma rede, serviços oferecidos, tipos de hardware e software, etc. 
 
TIGER 
Muito parecido com o SATAN, o TIGER, é um conjunto de Bourne Shell (bash) scripts, programas 
em C e arquivos de dados que visam fazer uma auditoria de segurança num sistema Unix. 
Sua maior diferença em relação ao SATAN está no fato de que a ênfase do TIGER esta em erros de 
permissões de arquivos, e não na área de serviços de rede, que é o caso do SATAN. 
Basicamente, quando é executado, TIGER procura por um arquivo de configuração (geralmente 
.tigerrc) que irá limitar ou ampliar a quantidade de testes executados dependendo do desejo do 
usuário. Ele então irá executar uma série de scripts e retornará as falhas de segurança encontradas. 
O TIGER sempre tenta descobrir formas que a conta root pode ser comprometida. 
 
ISS 
O ISS (Internet Security Scanner ) é considerada uma versão mais leve do SATAN, e possui uma 
versão comercial, a qual possui algumas vantagens como interface gráfica e análise de segurança 
para servidores WEB.[DAN96] 
Bibliografia 
 [GAL96] GALLEN, Bob & SUTTERFIELD, Lee - Network Security Points of Failure - 
Unix Review. Pg. 47 a 53. Novembro 1996. 
 [GAR94] GARFINKEL, Simson & SPAFFORD, Gene - Practical Unix Security - 
O’Reilly & Associates, Inc. 482 p. Junho 1994. 
 [LIU94] LIU, Cricket et all. - Managing Internet Information Services - O’Reilly & 
Associates, Inc. 630 p. Dezembro 1994. 
 [DAN96] DANDREA, Marcelo M. - Ferramentas para Segurança na Internet - Trabalho 
Individual - CPGCC UFRGS. 1996. 
 [SHI96] SHIMOMURA, Tsutomu & Markoff, John - Contra-Ataque A história da 
captura do pirata cibernético mais procurado nos Estados Unidos - Companhia das 
Letras. 343 p. 1996. 
 [SIY95] SIYAN, Karanjit & HARE, Cris - Internet Firewalls and Network Security - 
New Riders Publishing - 410 p. - 1995. 
 [TAR96] TAROUCO, Liane M. R. - Segurança na Internet - 9 p. 
Links relacionados ao Tutorial 
 
Segurança na Internet 
 Internet Security 
 Network Security 
 CERT 
 Security FAQ 
 
Mecanismos de Defesa 
 General security Tools 
 Unix Network Monitoring Tools 
 Authentication Tools 
 
Firewalls 
 Firewalls - Ferramentas 
 Freestone Toolkit (Firewalls) 
 IP-Filter 
 Firewalls FAQ 
 
Wrappers 
 TCP Wrappers 
 
PGP e SSL 
 PGP Faq 
 <="" a="">MIT Distribuction Site for Pretty Good Privacy 
 SSL 
 
Ferramentas para Verificação de Segurança 
 FTP - SATAN/TCP wrappers/log daemon/rpcbind/portmap 
 SATAN Release Information 
 Auditoria: ISS 
 
Produtos Comerciais 
 Bellcore 
 CheckPoint Software Tecnologies Ltd. (Firewalls) 
 Firewall Security Corporation 
 
Listas 
Bugs de Segurança: 
 bugtraq@crimelab.com 
 ntsecurity@iss.com 
 best-of-security@suburbia.net 
Firewalls: 
 firewalls@greatcircle.com 
 fwtk-users@tis.com 
IP Security 
1. Motivação
 O IP (Internet Protocol), base do conjunto de protocolos TCP/IP, é caracterizado por sua 
simplicidade. Com o objetivo de melhorar a desempenho da rede, deixa de realizar tarefas como 
estabelecimento de conexões, detecção e correção de erros, confirmação de entrega etc. Além disso, 
não provê mecanismos que garantam a autenticidade, integridade e privacidade das comunicações 
realizadas através da rede. Detalhes sobre o funcionamento deste protocolo podem ser encontrados 
em [3]. 
 Esta falta de segurança da atual versão do protocolo (IPv4) dá margem a inúmeras formas de 
ataque, como: negação de serviço, IP spoofing, session hijacking e password sniffing. Para 
compreender bem as dimensões deste problema, é preciso conhecer alguns conceitos chave de 
Segurança da Informação: 
Autenticação 
 A garantia que certa entidade tem de que outra entidade é quem afirma ser. 
Confidencialidade 
 Garantia da privacidade da informação. O acesso a ela é limitado apenas a entidades autorizadas. 
Integridade 
 Garantia de que a informação não foi alterada (intencionalmente ou não). 
 A princípio, o IPv4 não provê nenhum desses serviços de segurança. Visando contornar essas e 
outras fraquezas, foi criado o IPv6 [3][7]. 
 Atualmente em estágio de implantação, seu principal objetivo é aumentar o espaço de endereços 
em relação ao IPv4, resolvendo um grave problema, que é o de escassez de endereços. Além disso, 
visa permitir comunicações mais seguras através de mecanismos baseados em criptografia. Estes 
são fornecidos por uma ferramenta chamada Internet Protocol Security(IPSec). 
 Mesmo sendo desenvolvido tendo como objetivo a implementação na versão 6 do IP, o IPSec foi 
criado de forma a ser possível sua utilização também com o IPv4. 
2. Conceito
 Ao invés de ser um protocolo único, o IPSec é um conjunto de protocolos que fornece uma 
solução completa de segurança para redes TCP/IP como a Internet. Considerado bastante complexo, 
é definido pelas RFCs 2403, 2404, 2405, 2407, 2408, 2411, 2412, 4301 [8], 4302 [9], 4303 [10] e 
4306 [2]. 
 Seus principais protocolos são: 
 Authentication Header, que garante a autenticidade e a integridade da comunicação; 
 Encapsulating Security Payload, que provê privacidade e autenticação; 
 Internet Key Exchange, um mecanismo de troca de chaves. 
 Uma comunicação segura entre dois dispositivos através de uma rede insegura envolve o 
estabelecimento de um caminho seguro. É neste conceito que se baseia o IPSec. Para que isto 
ocorra, é preciso que os comunicantes sigam os seguintes passos: 
 Entrar em acordo quanto aos algoritmos de criptografia e autenticação que serão utilizados; 
 Trocar as chaves secretas que alimentarão os algoritmos de autenticação e criptografia; 
 Enviar os dados através da rede utilizando os métodos acordados. 
 Estas operações envolvem diferentes protocolos do conjunto IPSec. O primeiro passo está ligado 
ao estabelecimento de SAs (Security Associations); o segundo, ao protocolo IKE (Internet Key 
Exchange); e o último, aos protocolos AH (Authentication Header) e ESP (Encapsulation Security 
Payload), que utilizarão as Security Associations criadas. 
Security Associations 
 Um fundamento importante do IPSec são asSecurity Associations. Uma Security 
Association (SA) é um conjunto de parâmetros que representa uma relação unidirecional entre um 
emissor e um receptor. Entre estes parâmetros, estão: algoritmo de criptografia, chave de 
criptografia, algoritmo de autenticação e chave de autenticação. As informações de uma SA são 
comuns ao receptor e ao emissor. Para uma relação bidirecional, são necessárias duas Security 
Associations. 
 Três parâmetros atuam como identificadores de uma SA: 
 Security Parameters Index, um identificador numérico único de 32 bits, presente nos 
cabeçalhos dos protocolos IPSec; 
 Endereço IP de destino; 
 Identificador de protocolo de segurança, que relaciona a SA ao AH ou ao ESP. 
 Com esses parâmetros, um receptor pode facilmente associar uma mensagem segura IPSec a uma 
SA em sua base de dados de SAs (ou a duas, caso sejam utilizados tanto o AH quanto o ESP). Ele 
poderá então desencriptar a mensagem e/ou verificar as informações de autenticação, de acordo 
com os demais parâmetros. 
 3. Implementação 
 Com o IPSec, a segurança é implementada na camada do IP. Isto faz com que ele seja 
transparente para as aplicações, que não precisam ter seu código-fonte alterado para garantir 
segurança. Além disso, pode ser facilmente utilizado em conjunto com o UDP, protocolo muito 
usado atualmente em comunicações multimídia. 
 Diferentemente, as soluções de segurança mais comumente adotadas (SSL, TLS, SSH etc.) 
operam nas camadas de transporte ou aplicação. Muitas vezes, estas são utilizadas devido à 
complexidade da arquitetura e dos protocolos do IPSec, que exigem que a pilha TCP/IP seja 
alterada ou estendida, de acordo com a opção de implementação. 
 O IPSec pode ser implementado de diversas maneiras, seja num terminal, em um roteador 
ou firewall (para criar umgateway de segurança) ou em um dispositivo de segurança independente. 
Na RFC 4301 [8], são definidas 3 alternativas de implementação para o IPSec: 
Integração no IP 
 Se baseia na integração dos protocolos do IPSec na implementação nativa do IP, o que é viável 
tanto para um terminal quanto para um gateway de segurança. Pode ser considerada a solução 
padrão, mais elegante. 
 Entretanto, é preciso alterar o código-fonte da implementação IP, o que foi feito no Microsoft 
Windows 2000 (sendo incluído nas versões posteriores) e no Linux Kernel 2.6. Um tutorial simples 
sobre a utilização da pilha IPSec nativa do Ubuntu pode ser encontrado 
em https://help.ubuntu.com/community/IPSecHowTo. 
Bump-in-the-stack (BITS) 
 Consiste em implementar os protocolos IPSec entre a implementação nativa IP e os drivers da 
rede local. Os pacotes passados adiante pela camada do IP são interceptados por uma camada extra 
IPSec, que provê segurança e, depois, encaminha para a interface de rede na camada seguinte. 
 
Figura 1: Ilustração da alternativa de implementação BITS. 
Os cabeçalhos do IPSec são acrescentados após o cabeçalho IP. 
Ilustração adaptada de [3]. 
 Para esta implementação, não é necessário o acesso ao código-fonte da pilha IP. Normalmente, 
quando adotada, esta estratégia é aplicada a terminais da Internet. 
Bump-in-the-wire (BITW) 
 Neste método, é utilizado um hardware adicional, que provê os serviços IPSec. 
Este hardware atua de maneira semelhante ao software BITS, interceptando pacotes IP, 
adicionando segurança e repassando-os na rede. 
 Quando utilizado em conjunto com um roteador ou firewall, pode-se criar um gateway de 
segurança, que permite que diversos computadores numa rede local estabeleçam conexões seguras 
com terminais fora da rede, sem implementarem o IPSec. Mais informações poderão ser obtidas na 
descrição do modo túnel, na seção Modos de Operação. 
 Assim como a opção de implementação BITS, o Bump-in-the-wire não requer o acesso ao código 
da implementação IP nativa. 
 Como será visto mais adiante, as três estratégias de implementação (integrada, BITS e BITW) se 
relacionam com os dois modos de operação do IPSec. 
4. Modos de Operação. 
 São definidos dois modos de operação para o IPSec: Modo Transporte e Modo Túnel. 
Modo Transporte 
 Este modo de operação, que pode ser considerado o mais simples, é utilizado principalmente para 
o estabelecimento de comunicações fim-a-fim seguras entre terminais da Internet. Pode ser visto 
como o envio de pacotes IP comuns, com os respectivos cabeçalhos de transporte e aplicação, 
porém seguros. Esta segurança pode envolver tanto autenticação quanto confidencialidade. 
 
Figura 2: No modo transporte, o cabeçalho do IPSec (AH e/ou ESP) 
é situado entre o cabeçalho IP e sua porção de dados. 
 O modo transporte se baseia no encapsulamento dos protocolos das camadas superiores. Os 
cabeçalhos referentes ao AH e/ou ESP (os dois protocolos responsáveis por fornecer autenticação e 
encriptação) são adicionados após o cabeçalho da Camada de Transporte (TCP/UDP). 
 Acrescido ao pacote após os cabeçalhos AH/ESP, o cabeçalho IP é mantido inalterado, 
possibilitando um roteamento na rede idêntico ao usual. Devido a este fato, apenas a porção de 
dados do pacote pode ser encriptada, provendo confidencialidade. 
 Caso o pacote seja interceptado por terceiros, ainda que os dados enviados estejam 
criptografados, as informações contidas no cabeçalho IP (entre elas endereço de origem e destino) 
poderão ser acessadas. Todavia, como poderá ser visto nas seções posteriores, mesmo que a 
confidencialidade se restrinja à porção de dados nesse modo de operação, a integridade pode ser 
garantida para o pacote como um todo. 
 Há outra constatação acerca deste tipo de operação: como, neste caso, os cabeçalhos AH e ESP 
precisam ser inseridos antes do IP durante o empacotamento da mensagem oriunda da Camada de 
Transporte, este modo está associado à opção de arquitetura integrada, descrita anteriormente. 
Modo Túnel 
 Muito utilizado atualmente para o estabelecimento de VPNs, o modo túnel encapsula 
completamente o pacote IP. Na frente do cabeçalho IP original, são adicionados os cabeçalhos 
IPSec e um novo cabeçalho IP, que permite a formação de um túnel. Desta forma, a segurança será 
sempre aplicada ao pacote original como um todo, e não apenas à porção de dados. 
 
Figura 3: No modo túnel, o pacote IP recebe 
um cabeçalho IPSec e um novo cabeçalho IP. 
 O novo cabeçalho IP é utilizado no roteamento do pacote através da Internet. Chegando a seu 
destino, ocorrerá primeiramente a verificação da autenticação e/ou a desencriptação do restante do 
pacote. No caso de as informações estarem corretas, os cabeçalhos AH e ESP são removidos e o 
pacote IP original é reconstituído. De acordo com o endereço de destino original, o pacote pode ser 
entregue à máquina local ou roteado novamente na rede. Se for roteado novamente, não estará mais 
sob a proteção do IPSec. 
 Tipicamente, o modo túnel é utilizado quando ao menos um dos pontos da comunicação está 
atrás de um gateway de segurança, que pode ser um roteador ou firewall que implemente o IPSec. 
Cria-se um túnel seguro através de uma rede pública não segura (como a Internet atual). É este o 
princípio das VPNs. 
 Como os cabeçalhos IPSec são acrescidos após o IP ter processado as mensagens das camadas 
superiores, este modo de operação está associado, em geral, às outras duas formas de 
implementação, BITS e BITW. 
 Alguns artigos defendem a existência de apenas um modo de operação, seja devido a questões de 
segurança, seja devido à complexidade do IPSec. Em [4], é sugerida a existência apenas do modo 
transporte, definindo um mecanismo alternativo para a criação de túneis, intitulado IIPtran. Já 
em [6], são analisadas diversas formas de simplificar o IPSec. Entre elas, está (em contraste com o 
outro artigo) a eliminação do modo transporte e do AH. As comunicações seriam realizadas apenas 
no modo túnel, utilizando o ESP para encriptação e autenticação. 
5. Authentication Header 
 O protocolo Authentication Header é utilizadopara garantir a autenticidade e a integridade de 
pacotes IP. Sozinho, não provê qualquer confidencialidade. Em alguns programas P2P para 
compartilhamento de arquivos, por exemplo, é realizada a autenticação dos usuários e o teste de 
integridade dos blocos de arquivos enviados. Entretanto, não há privacidade na troca de pacotes. 
 Como o nome sugere, o AH define um cabeçalho, que é acrescentado ao pacote IP. Nele, estarão 
os dados de autenticação que serão verificados pelo receptor da mensagem. Para computar e 
verificar os dados do AH, é usada uma função de hashcomo MD5 e SHA-1. 
 No envio da mensagem, é calculada uma sequência de bits (chamada hash) de acordo com uma 
chave secreta (estabelecida pela Security Association) e o conteúdo do pacote (excetuando campos 
variáveis do IP como TTL). Para isso, é usado um algoritmo de hash, também definido pela SA. Na 
recepção, o hash é recalculado e comparado com o presente no AH. Como apenas os comunicantes 
conhecem a chave utilizada, é possível verificar se o pacote foi alterado, seja devido a erros ou a 
atitudes maliciosas. 
 Adicionalmente, de acordo com a implementação, o AH pode prover serviços de não repúdio 
através do uso de assinaturas digitais. Para mais informações, ver [9]. 
 
Figura 4: Localização do cabeçalho AH no modo transporte. 
A autenticação se aplica a todo o pacote IP. 
 O cabeçalho estará localizado de acordo com o modo de operação. No modo transporte, é 
acrescentado entre o cabeçalho IP e o da Camada de Transporte. Já no modo túnel, ficam entre os 
dois cabeçalhos IP: o novo e o original. 
 
6. Encapsulating Security Payload
 Responsável pelos serviços de confidencialidade do IPSec, o Encapsulating Security Payload se 
baseia no acréscimo de um cabeçalho e uma cauda ao pacote. 
 Este protocolo define a encriptação do pacote como um todo (no modo túnel) ou da porção de 
dados do pacote (no modo transporte). No lado do emissor é realizada a encriptação e, no lado do 
receptor, a desencriptação. Durante o trânsito, as informações encriptadas não poderão ser 
examinadas por terceiros. 
 Tanto para a encriptação, feita pelo emissor, quanto para a desencriptação, feita pelo receptor, são 
utilizados o algoritmo de criptografia e a chave secreta definidos por uma mesma SA. Há várias 
opções de algoritmos, sendo os mais comuns 3DES,Blowfish e AES. 
 Além de prover serviços de confidencialidade, o ESP também provê serviços de autenticação e 
integridade, de maneira bastante similar ao AH. Todavia, estes não incluem o cabeçalho IP (no caso 
do modo túnel, não incluem o novo cabeçalho IP). 
 Disso conclui-se que, dependendo da implementação, o endereço de origem do pacote poderia ser 
alterado no caminho sem que o receptor note. Ainda assim, a autenticação do restante do pacote 
seria capaz de garantir que o pacote veio de uma pessoa que conhece a chave de autenticação. 
 
Figura 5: Ilustração de um pacote em modo túnel com encriptação 
e autenticação do ESP. O cabeçalho e a cauda ESP envolvem 
o pacote original. No fim, é acrescentado o campo de autenticação. 
 Assim como o AH, o cabeçalho ESP se situa entre os dois cabeçalhos IP no modo túnel e, no 
modo transporte, entre o cabeçalho IP e o da Camada de Transporte. A cauda ESP está sempre 
situada no fim do pacote. 
 7. Internet Key Exchange
Motivação 
 Os serviços de autenticação e encriptação (AH e ESP) dependem da utilização de chaves secretas 
(conhecidas apenas pelos comunicantes) para serem fornecidos pelo IPSec. 
 Caso uma entidade intercepte uma comunicação IPSec em modo transporte, por exemplo, esta 
será incapaz de alterar qualquer parte do pacote sem que seja notada (se estiver sendo utilizado o 
AH) ou ter acesso às informações nele contidas (caso seja utilizado o ESP). Todavia, isto é válido 
apenas se esta entidade não possui acesso ao segredo compartilhado pelos comunicantes. 
 Portanto, é preciso que o acordo quanto às chaves que serão usadas na comunicação seja feito de 
maneira segura. 
 A forma mais trivial de estabelecer uma chave secreta no IPSec é através de configuração 
manual. Os comunicantes escolhem as chaves que serão usadas e registram manualmente as SAs 
necessárias. 
 Esta é uma estratégia bastante prática para cenários pequenos, mas não é escalável, já que seria 
preciso configurar ao menos duas SAs (entrada e saída) para cada par de endereços IP. Para resolver 
este problema e permitir maior flexibilidade no compartilhamento de chaves, foi criado o IKE 
(Internet Key Exchange), um protocolo para gerenciamento automático de chaves que também faz 
parte do IPSec. 
Funcionamento 
 Este protocolo, que pode ser considerado o mais complexo do conjunto IPSec, usa o ISAKMP 
(Internet Security Association Key Management Protocol) como base para criar as SAs nos dois 
lados da comunicação, que serão utilizadas pelos protocolos AH e ESP. 
 O primeiro passa para o estabelecimento das SAs para os comunicantes é a criação de um canal 
seguro. Este é definido por uma SA bidirecional (ao contrário das demais) referente ao IKE. Nela, 
estão contidas informações como a chave secreta e os algoritmos de criptografia que serão usados 
nas negociações subsequentes (para as SAs do AH e do ESP). 
 Para a escolha da chave secreta, é realizada uma série de procedimentos baseada no algoritmo de 
troca de chaves Diffie-Hellman [11]. 
Diffie-Hellman 
 Proposto em 1976, este algoritmo permite o estabelecimento de uma chave secreta compartilhada 
através de um canal de comunicação inseguro. Esta chave poderá ser utilizada, por exemplo, em 
algoritmos de criptografia simétrica. 
 Numa troca de chaves entre duas entidades hipotéticas A e B, ocorre primeiro um acordo quanto a 
um número primo p e a uma raiz primitiva de p, r. 
 
 O número r será uma raiz primitiva de p se 
 
 Os números p e r não são secretos. 
 Em seguida, A e B escolhem um número secreto entre 1 e p-1 (inclusive) cada, XA e XB. 
 Então, A envia para B: 
 
 A chave secreta K, calculada por B, será: 
 
 Analogamente, A poderá calcular a mesma chave secreta a partir de YB, fazendo: 
 
 Desta forma, a partir da escolha de r e p e da troca (sem segurança) de YA e YB, o algoritmo de 
Diffie-Hellman permite o estabelecimento de uma chave secreta, conhecida apenas por A e B. 
 Este algoritmo não autentica os usuários que estão realizando a troca de chaves, o que o torna 
vulnerável a ataques. Devido a isso, o protocolo IKE inclui mecanismos adicionais para garantir a 
autenticação, baseados na troca de assinaturas digitais. Para mais detalhes, ver [2]. 
 Escolhida a chave secreta e criada a SA para o IKE, ocorre o estabelecimento das demais SAs 
através do canal seguro criado. 
 
 8. Conclusão
 É possível notar que o IPSec é um conjunto bastante complexo de protocolos, com várias opções 
de implementação e, principalmente, de configuração. São necessárias diversas escolhas: modo de 
operação, uso de AH e/ou ESP, algoritmos de encriptação e autenticação, mecanismo para troca de 
chaves etc. 
 Algumas publicações alertam contra os perigos de uma escolha ruim no IPSec. Em [5], são 
descritas diversas formas de ataque a comunicações IPSec que usem somente a encriptação do ESP, 
sem autenticação. Ainda que seja desencorajada na documentação, esta prática representa uma 
dentre várias configurações não seguras que são permitidas. Outro exemplo é a possibilidade de se 
utilizar algoritmos de criptografia considerados fracos atualmente, como o DES. 
 Percebe-se que estas escolhas demandam bastante cuidado e, portanto, devem ser tomadas de 
maneira sensata. É para facilitar a configuração, eliminando algumas opções inseguras, que surgem 
sugestões como as encontradas em [4] e [6]. Devido a estas fraquezas, espera-se que surjam novas 
iterações dos protocolos IPSec. 
 Apesar de possuir problemas e de ter sido desenvolvido para o IPv6, o IPSec é muito utilizadoatualmente para a implementação de Redes Privadas Virtuais (VPN) sobre o IPv4. De fato, é uma 
ótima alternativa para este fim. Para outras aplicações, a segurança do tráfico IP é em geral 
fornecida pelo protocolo SSL e seu sucessor, TLS. 
9. Perguntas e Respostas
Pergunta: 
O que significam os conceitos autenticação, confidencialidade e integridade? 
Resposta: 
Autenticação - garantia de que uma entidade é, de fato, quem afirma ser; 
Confidencialidade - garantia de que apenas as entidades autorizadas terão acesso à informação; 
Integridade - garantia de que a informação foi preservada. 
 
Pergunta: 
Por que o Authentication Header não provê assinatura quando uma chave secreta é utilizada? 
Resposta: 
Como a chave é conhecida por ao menos 2 pessoas, a mensagem pode ser forjada. Neste caso, o AH 
não garante o não repúdio. 
 
Pergunta: 
O serviço de autenticação do Encapsulating Security Payload não inclui o cabeçalho IP. O endereço 
de origem do pacote pode ser alterado? Como pode ser garantida a autenticação nesse caso? 
Resposta: 
Sim, o endereço de origem e outros campos do cabeçalho IP podem ser alterados. Ainda assim, a 
autenticação do restante do pacote garante que este veio de uma pessoa que conhece a chave de 
autenticação. 
 
Pergunta: 
Alguns autores defendem a existência apenas do modo túnel, com autenticação e encriptação do 
ESP. Como o modo transporte e o AH podem ser substituídos? 
 
 
Resposta: 
Um endereço de destino no novo cabeçalho IP igual ao original fará com que o pacote chegue ao 
destino da mesma forma. O pacote no modo transporte é menor. É possível realizar uma 
compressão nos campos do ESP para reduzir o uso de banda passante. No modo túnel, o ESP 
encripta e autentica todo o pacote original, reduzindo a necessidade do uso conjunto do AH neste 
caso. 
 
Pergunta: 
O Internet Key Exchange, protocolo do IPSec para gerenciamento automático de chaves, utiliza um 
algoritmo baseado na troca de chaves de Diffie-Hellman, mas inclui mecanismos adicionais para a 
autenticação. Por que isso é necessário? Qual o principal tipo de ataque ao qual o Diffie-Hellman é 
vulnerável? 
Resposta: 
Por não prover a autenticação dos comunicantes, o algoritmo de Diffie-Hellman é vulnerável ao 
"ataque do homem no meio", em que a atacante intercepta as mensagens enviadas e forja outras, 
assumindo a identidade das vítimas. 
10. Referências
1. C. Adams, S. Lloyd. Understanding public-key infrastructure: concepts, standards, and 
deployment considerations. Addison-Wesley, Segunda Edição, Janeiro de 2003. 
2. C. Kaufman. Internet Key Exchange (IKEv2) Protocol. RFC 4306, Dezembro de 2005. 
3. C. Kozierok. The TCP/IP guide: a comprehensive, illustrated Internet protocols 
reference. No Starch Press, p. 449-473, 2005. 
4. J. Touch, L. Eggert, Y. Wang. Use of Ipsec Transport Mode for Dynamic Routing. RFC 
3884, Setembro de 2004. 
5. K. Paterson, A. Yau. Cryptography in Theory and Practice: The Case of Encryption in 
IPsec. Cryptology ePrint Archive, Report 2005/416, 2005. 
6. N. Ferguson, B. Schneier. A Cryptographic Evaluation of IPsec. Counterpane Internet 
Security, Dezembro de 2003. 
7. R. Oppliger. Security at the Internet Layer. IEEE, Setembro de 1998. 
8. S. Kent, K, Seo. Security Architecture for the Internet Protocol. RFC 4301, Dezembro de 
2005. 
9. S. Kent. IP Authentication Header. RFC 4302, Dezembro de 2005. 
10. S. Kent. IP Encapsulating Security Payload (ESP). RFC 4303, Dezembro de 2005. 
11. W. Diffie, M. Hellman. New Directions in Cryptography. IEEE Transactions on 
Information Theory, vol. IT-22, Novembro de 1976. 
12. W. Stallings. IP Security. The Internet Protocol Journal, Volume 3, no. 1, Março de 2000.

Outros materiais