sexta-feira, 6 de julho de 2012

PHP & MySQL - Sistema de Recados

Criando o Banco e as Tabelas
Vamos criar um Banco de Dados chamado "guiadohacker" com Login "root" e senha "" em branco, no caso vai do
seu geito você criar um banco com o nome que quiser, desde que coloque a infos na configuração do DB.

Vamos criar uma tabela com o nome de "Mensagens" com "3" campos.

A primeira coluna tera os valores:

Campo: id
Tipo: Inteiro (INT)
Tamanho: Deixe em Branco
Indíce: Primary
AutoIncrement: Sim

A Segunda coluna terá os valores:

Campo: nome
Tipo: VARCHAR
Tamanho: 50

E a terceira coluna terá os seguintes valores:

Campo: mensagem
Tipo: TEXT
Nulo: Não

________________________________
Arquivo para Conexão com o DB \________________________________



Citação:
<?php
/*
#######################
## #Expl0it - Guia do Hacker ##
## exploit@guiadohacker.com.br ##
## ################## ##
*/
mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("guiadohacker") or die (mysql_error());
?>
\_________________________________________/

Salve como conexão.php no diretorio raiz do seu servidor, no caso se estiver usando o XAMPP na salve na pasta htdocs.

_____________________________________________
Arquivo para exibir as mensanges (exibir.php) \____________________


Citação:
<?php
/*
#######################
## #Expl0it - Guia do Hacker ##
## exploit@guiadohacker.com.br ##
## ################## ##
*/
require('conexao.php');
$sql = "select * from mensagens order by id desc limit 0,50"; // Seleciona as ultimas 50 msg enviandos de modo Decrescente.
$executar = mysql_query($sql); // Executa a variavel sql.
while ($exibir = mysql_fetch_array($executar)){; // Função while para mostrar todas as mensagens.
echo '<b>Nome: </b>'.$exibir['nome'].' - <b>Mensagem:</b> '.$exibir['mensagem']; // echo exibe da forma que voce quer né ^^.
echo "<br"; // Função para quebra de linha O/.
echo "<br";
}
?>
\_________________________________________________ ____________________________________________/

Com o arquivo exibir.php criado, você pode adicionar alguma mensagem no phpMyAdmin e ver se deu certo, para isso
abra a tabela 'mensagens' e clique na aba INSERIR e coloque a mensagem.

Bom mais #Expl0it, como meus visitantes vão enviar as mensanges? Calma, agora vamos criar o arquivo para enviar as mensangens para o Banco de Dados.

____________________________________
Criando o arquivo (enviar_dados.php) \_________________________


Citação:
<?php
/*
#######################
## #Expl0it - Guia do Hacker ##
## exploit@guiadohacker.com.br ##
## ################## ##
*/
require('conexao.php');
$nome = htmlentities($_POST['nome']); // A função htmlentities() serve para que o visitante nao execute HTML, assim previnindo XSS também.
$mensagem = htmlentities($_POST['mensagem']); // Coloque a função htmlentities() aqui também.
$inserir = mysql_query("insert into mensagens (nome, mensagem) VALUES ('$nome', '$mensagem')"); // Insere os valores Nome e Mensagem no Banco de Dados.
?>
\_________________________________________________ __________________________________________________ ___/

____________________________
Criando arquivo enviar.php \______________________________


Citação:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Script de Mensagens by #Expl0it</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="enviar_dados.php">
<p>
<label for="nonme"></label>
Nome:
<input type="text" name="nome" />
</p>
<p>
<label for="mensagem"></label>
Mensagem:</p>
<p>
<textarea name="mensagem" value="mensagem" cols="45" rows="5"></textarea>
<input name="Enviar" type="submit" value="Enviar" />
<br>
<?php
echo "Script by #Expl0it - www.guiadohacker.com.br - ";
?>
</p>
<p>&nbsp;</p>

</form>
</body>
</html>
\_______________________________________________ FIM ____________________________________________/

Em fim, espero que tenham gostado. Qualquer dúvida é só postar ai, por favor não peçam para adicionar elementos pois não vou e não mande mensanges pedindo scripts pois ainda sou iniciante no PHP.

Curso site Dinâmico com PHP - UpInside

Módulos:

Código:
 
Download: http://depositfiles.com/files/t3o7jkh4g?redirect
Início
apresentação
.

Fireworks:
Estruturando Site
Ilustrando Layout
Fatiando Layout
.

Tableless:
Planejando e organizando
Estruturando página inicial
Estilizando página inicial parte 1
Estilizando página inicial parte 2
Estilizando página inicial final
Fatiando site + query string
Estruturando páginas
Estilizando formulário e sidebar
Estilizando elementos finais
.

jQuery:
Aplicando e organizando scrips (includes externos)
Slideshow com jQuery Cycle
Lightbox com jQuery Shadowbox
Carousel com jQuery jCarousel Lite
.

PHP – O Site:
Conectando com Mysql
Estrutura dinâmica “home.php”
Correção. Comentário e limite
Criando page.php
single.php + contador de visitas
Produtos + carrinho PagSeguro (carrinho dinâmico)
Estruturando sidebar (mais visitados, categorias)
categoria.php + paginação de resultados
Sistema de pesquisa
Programando formulário
.

PHP – O Painel:
Elementos + índex.php
Estruturando painel
Configurando painel
Estatísticas + boas vindas (session, contador de visitas, media de visitas, 
visitas por categoria)
CSS – Cadastrando posts parte 1
jQuery Show/hide inputs (campos dinâmicos)
Função: redimensionar imagem no upload (redimensionamento dinâmico de imagens)
PHP – Cadastrando posts parte 2
Validando campos com jQuery validate
Exibir autor no site
Estrutura Listar/Editar/Excluir posts
Função excluir posts, remover imagem
Estruturando editar posts
Função Editar posts
Cadastrar/Editar páginas parte 1
Cadastrar/Editar páginas parte 2
Editor de texto personalizado com TinyMCE
Criando menu restrito por nível de usuário
Cadastro de usuários
Listar usuários
Excluir usuários
Editar perfil (Editor so pode alterar o próprio perfil)
Editar usuários
Organizando painel
Criando modulo de manutenção
Corrigindo mensagens de erro
.

Hospedagem e configuração:
Exportando e configurando base de dados
Hospedando o site
Testando e corrigindo o site
Testando e corrigindo o painel
Validando site no W3 (site nos padrões web)
Conhecendo e usando o painel (formatando textos, postando vídeos e imagens)

Aircrack-ng (Quebrando chaves WEP e WPA/WPA2-PSK)

Aircrack-ng é um programa para quebrar chaves WEP e WPA/WPA2-PSK do IEEE 802.11.

Aircrack-ng pode recuperar a chave WEP, uma vez que um número suficiente de pacotes criptografados sejam capturados com o airodump-ng. Esta parte do pacote Aircrack-ng determina a chave WEP usando dois métodos fundamentais. O primeiro método é por abordagem PTW (Pyshkin, Tews, Weinmann). A principal vantagem da abordagem PTW é que pouquíssimos pacotes de dados são necessários para quebrar a chave WEP. O segundo método é o método FMS/KoreK. O método FMS/KoreK incorpora vários ataques estatísticos para descobrir a chave WEP e usa esses ataques em combinação com força-bruta.

Adicionalmente, o programa oferece um método de dicionário para determinar a chave WEP. Para quebrar chaves pré-compartilhadas WPA/WPA2, somente o método de dicionário é utilizado.
Captura de Tela

LEGENDA
1 = Byte da chave
2 = Profundidade da procura da chave atual
3 = Byte que os IVs vazaram
4 = Votos indicando que este byte está correto

Como funciona?

O primeiro método é o método PTW (Pyshkin, Tews, Weinmann). O método PTW está completamente descrito no artigo encontrado neste web site. Em 2005, Andreas Klein apresentou uma outra análise da cifra de fluxo RC4. Klein mostrou que há mais relações entre o fluxo de chave RC4 e a chave do que nas relações encontradas por Fluhrer, Mantin, e Shamir, e essas podem ser utilizadas em conjunto para quebrar o WEP. O método PTW faz extensão do ataque do Klein e otimiza-o para uso contra o WEP. Ele basicamente usa técnicas FMS melhoradas, descritas na seção seguinte. Uma restrição importante em particular é que somente funciona com pacotes ARP Request/Reply e não pode ser empregado contra outro tráfego.

O segundo método é o método FMS/Korek, o qual incorpora múltiplas técnicas. Os Documentos de Técnicas, na página de links, lista vários trabalhos e artigos que descrevem essas técnicas detalhadamente e a matemática por detrás delas.

Neste método várias técnicas são combinadas para quebrar a chave WEP:

Ataques FMS (Fluhrer, Mantin, Shamir) - técnicas estatísticas
Ataques Korek - técnicas estatísticas
Força-Bruta

Quando usar técnicas estatísticas para quebrar a chave WEP, cada byte da chave é manipulada individualmente. Usando matemática estatística, a possibilidade de um certo byte na chave ser adivinhado corretamente sobe para 15% quando o Vetor de Inicialização (IV) correto é capturado para um byte de chave específico. Essencialmente, certos IVs “vazam” a chave WEP secreta para bytes de chaves específicos. Esta é a base fundamental das técnicas de estatística.

Por meio do uso de uma série de testes estatísticos chamados de ataques FMS e Korek, votos são acumulados para chaves prováveis para cada byte de chave da chave WEP secreta. Ataques diferentes têm um número diferente de votos associados a eles, já que a probabilidade de cada ataque render a resposta certa varia matematicamente. Quanto mais votos um valor particular de chave em potencial acumular, mais provável será de estar correto. Para cada byte de chave, a tela mostra a provável chave secreta e o número de votos que acumulou até o momento. Nem precisa dizer, a chave secreta com o maior número de votos tem maior probabilidade de estar correta, mas não é garantido. Aircrack-ng testará em seqüência a chave para confirmá-la.

Observando um exemplo tornará isso mais claro. Na captura de tela acima, você pode ver que no byte de chave 0, o byte 0xAE coletou alguns votos, 50 nesse caso. Então, matematicamente, é mais provável que a chave comece com AE do que com 11 (o segundo na mesma linha), que é quase metade da probabilidade. Isso explica por quê quanto mais dados são disponibilizados, maiores são as chances de o aircrack-ng determinar a chave WEP secreta.

Entretanto, a abordagem estatística só pode ser levá-lo até aqui. A idéia é chegar até esse ponto com estatística e então usar força-bruta para terminar o trabalho. Aircrack-ng usa força-bruta nas chaves mais prováveis, na verdade, para determinar a chave WEP secreta.

Aqui é onde o fator de correção entra. Basicamente o fator de correção diz ao aircrack-ng como fazer força-bruta de modo mais amplo. É como arremessar uma bola em um campo e dizer a alguém que a bola está em algum lugar entre 0 e 10 metros de distância. Contra dizer que a bola está em algum lugar entre 0 e 100 metros de distância. O cenário de 100 metros levará mais tempo para procurar a bola do que o de 10 metros, mas você terá mais chances de encontrar a bola com a procura mais ampla. É uma troca entre a duração do tempo e a propabilidade de encontrar a chave WEP secreta.

Por exemplo, se você dizer ao aircrack-ng para usar um fator de correção 2, ele vai usar os votos do byte mais provável, e verificar todas as outras possibilidades que são, pelo menos, metade da possibilidade desse byte em uma base de força-bruta. Quanto maior for o fator de correção, mais possibilidades o aircrack-ng tentará em uma base de força-bruta. Tenha em mente que quanto maior for o fator de correção, aumenta tremendamente o número de chaves secretas a tentar, e conseqüentemente o tempo restante também aumenta. Portanto, com mais dados disponíveis, a necessidade de força-bruta - que requer muito tempo e muito da CPU - pode ser minimizada.

No final, é tudo só matemática “simples” e força-bruta!

Para quebrar chaves WEP, um método de dicionário é incluído também. Para WEP, você pode usar ou o método estatístico descrito acima ou o método de dicionário, não os dois ao mesmo tempo. Com o método de dicionário, você primeiro cria um arquivo ou com chaves ASCII ou com chaves hexadecimais. Um único arquivo só pode conter um tipo, e não uma mistura dos dois. Ele é então utilizado como entrada no aircrack-ng, e o programa testa cada chave para determinar se está correta ou não.

As técnicas e abordagens acima não funcionam para chaves pré-compartilhadas WPA/WPA2. O único jeito de quebrar essas chaves pré-compatilhadas é por meio de um ataque de dicionário. Essa capacidade está incluída também no aircrack-ng.

Com chaves pré-compartilhadas, o cliente e o Access Point estabelecem material de chaveamento para ser usado no início de suas comunicações, quando o cliente primeiro associa com o Access Point. Há um “aperto de mão de quatro vias”, mais conhecido como four-way handshake, entre o cliente e o Access Point. Airodump-ng pode capturar esse four-way handshake. Utilizando entrada de uma lista de palavras (wordlist) providenciada, o aircrack-ng duplica o four-way handshake para determinar se uma entrada em particular da lista de palavras iguala-se aos resultados do four-way handshake. Se igualarem, então a chave pré-compartilhada foi identificada com êxito.

Deve-se notar que este processo é muito intensivo computacionalmente, e na prática, chaves pré-compartilhadas incomuns ou muito longas são improváveis de se determinar. Uma lista de palavras de qualidade te dará os melhores resultados. Outro caminho é usar uma ferramenta, como John The Ripper, para gerar advinhações de senhas, que servem no aircrack-ng.
Explicação do Campo de Profundidade e Fator de Correção

A melhor explicação é um exemplo. Nós observaremos um byte específico. Todos os bytes são processados da mesma maneira.

Você tem os votos como na captura de tela abaixo. Para o primeiro byte, eles se parecem com isso:

AE(50) 11(20) 71(20) 10(12) 84(12)

AE, 11, 71, 10 e 84 formam a possível chave secreta para o byte de chave 0. Os números em parênteses são os votos que cada chave secreta possível acumulou até o momento.

Agora se você decidir usar um fator de correção 3, o aircrack-ng pega o voto do byte mais possível, no caso o byte AE(50), e o divide por 3:

50 / 3 = 16.666666

Aircrack-ng testará (força-bruta) todas as chaves possíveis com um voto maior que 16.6666, resultando em

AE, 11, 71

sendo testados, então nós temos uma profundidade total de três:

0 / 3 AE(50) 11(20) 71(20) 10(12) 84(12)

Quando o aircrack-ng está testando chaves com AE, ele mostra 0 / 3, se tiver todas as chaves testadas com aquele byte, ele muda para o próximo (11 nesse caso) e apresenta:

1 / 3 11(20) 71(20) 10(12) 84(12)

Resumindo:

Antes…

0 / 3 AE(50) 11(20) 71(20) 10(12) 84(12)

depois…

1 / 3 11(20) 71(20) 10(12) 84(12) ??(??)

E por aí vai…

2 / 3 71(20) 10(12) 84(12) ??(??) ??(??)

Uso

aircrack-ng [opções] <arquivo(s) capturado(s)>

Você pode especificar vários arquivos de entrada (em formato .cap ou .ivs). Você pode também executar ambos airodump-ng e aircrack-ng ao mesmo tempo: aircrack-ng fará atualização automática quando novos IVs estiverem disponíveis.

Aqui está um resumo de todas as opções disponíveis:
Opção Parâmetro Descrição
-a modo Força modo de ataque (1 = WEP estático, 2 = WPA/WPA2-PSK).
-e essid Se usado, todos os IVs de redes com o mesmo ESSID serão utilizados. Essa opção é também requisitada para quebrar WPA/WPA2-PSK se o ESSID não está em broadcast (escondido).
-b bssid Seleciona a rede alvo baseada no endereço MAC do Access Point.
-p número de CPUs Em sistemas SMP: número de CPUs a utilizar.
-q nenhum Habilita modo quieto (não mostra status até que a chave seja encontrada, ou não).
-c nenhum [Quebra WEP] Restringe o espaço de busca a caracteres alfa-numéricos somente (0x20 - 0x7F).
-t nenhum [Quebra WEP] Restringe o espaço de busca a caracteres hexadecimais codificados em binários.
-h nenhum [Quebra WEP] Restringe o espaço de busca a caracteres numéricos (0x30-0x39). Essas chaves são usadas por padrão na maioria dos Fritz!BOXes.
-d início [Quebra WEP] Configura o início da chave WEP (em hexadecimal), para propósitos de depuração.
-m endereço MAC [Quebra WEP] Endereço MAC para filtrar pacotes de dados WEP. Alternativamente, especifique -m ff:ff:ff:ff:ff:ff para usar cada um e todos IVs, independente da rede.
-n número de bits [Quebra WEP] Especifica o tamanho da chave: 64 para WEP de 40-bit, 128 para WEP de 104-bit, etc. O valor padrão é 128.
-i índice [Quebra WEP] Apenas mantém os IVs que têm esse índice de chave (1 a 4). O comportamento padrão é ignorar o índice de chave (key index).
-f fator de correção [Quebra WEP] Por padrão, esse parâmetro é ajustado pra 2 para WEP de 104-bit e pra 5 para WEP de 40-bit. Especifique um valor mais alto para aumentar o nível de força-bruta: quebra da chave levará mais tempo, mas terá mais probabilidade de êxito.
-k Korek [Quebra WEP] Existem 17 ataques estatísticos Korek. Às vezes um ataque cria um enorme falso-positivo que previne a chave de ser encontrada, mesmo com muitos IVs. Tente -k 1, -k 2, … -k 17 para desabilitar cada ataque seletivamente.
-x/-x0 nenhum [Quebra WEP] Disabilita força-bruta dos últimos bytes de chave.
-x1 nenhum [Quebra WEP] Habilita força-bruta do último byte de chave. (padrão)
-x2 nenhum [Quebra WEP] Habilita força-bruta dos últimos 2 bytes de chave.
-X nenhum [Quebra WEP] Disabilita multi-processamento da força-bruta (somente SMP).
-y nenhum [Quebra WEP] Este é um ataque de força-bruta único, experimental, que apenas deve ser usado quando o modo de ataque padrão falhar com mais de um milhão de IVs.
-w palavras [Quebra WPA] Caminho de uma lista de palavras - wordlist, ou ”-” sem as aspas para padronizar em (stdin).
-z nenhum Inicia com o método PTW de quebra de chaves WEP.
Exemplos de Uso
WEP

O caso mais simples é quebrar uma chave WEP. Se você quer tentar isso por si próprio, aqui está um arquivo de teste. A chave para o arquivo de teste iguala-se à imagem da tela acima, ela não iguala-se ao exemplo a seguir.

aircrack-ng 128bit.ivs

Onde:

128bit.ivs é o nome do arquivo contendo IVs.

O programa responde:

Opening 128bit.ivs
Read 684002 packets.

# BSSID ESSID Encryption

1 00:14:6C:04:57:9B WEP (684002 IVs)

Choosing first network as target.

Se existirem várias redes contidas no arquivo, então você tem a opção de selecionar qual rede você quer. Por padrão, o aircrack-ng assume a criptografia de 128 bits.

O processo de quebrar começa, e uma vez quebrado, aqui está como a tela se parece:

Aircrack-ng 0.7 r130


[00:00:10] Tested 77 keys (got 684002 IVs)

KB depth byte(vote)
0 0/ 1 AE( 199) 29( 27) 2D( 13) 7C( 12) FE( 12) FF( 6) 39( 5) 2C( 3) 00( 0) 08( 0)
1 0/ 3 66( 41) F1( 33) 4C( 23) 00( 19) 9F( 19) C7( 18) 64( 9) 7A( 9) 7B( 9) F6( 9)
2 0/ 2 5C( 89) 52( 60) E3( 22) 10( 20) F3( 18) 8B( 15) 8E( 15) 14( 13) D2( 11) 47( 10)
3 0/ 1 FD( 375) 81( 40) 1D( 26) 99( 26) D2( 23) 33( 20) 2C( 19) 05( 17) 0B( 17) 35( 17)
4 0/ 2 24( 130) 87( 110) 7B( 32) 4F( 25) D7( 20) F4( 18) 17( 15) 8A( 15) CE( 15) E1( 15)
5 0/ 1 E3( 222) 4F( 46) 40( 45) 7F( 28) DB( 27) E0( 27) 5B( 25) 71( 25) 8A( 25) 65( 23)
6 0/ 1 92( 208) 63( 58) 54( 51) 64( 35) 51( 26) 53( 25) 75( 20) 0E( 18) 7D( 18) D9( 18)
7 0/ 1 A9( 220) B8( 51) 4B( 41) 1B( 39) 3B( 23) 9B( 23) FA( 23) 63( 22) 2D( 19) 1A( 17)
8 0/ 1 14(1106) C1( 118) 04( 41) 13( 30) 43( 28) 99( 25) 79( 20) B1( 17) 86( 15) 97( 15)
9 0/ 1 39( 540) 08( 95) E4( 87) E2( 79) E5( 59) 0A( 44) CC( 35) 02( 32) C7( 31) 6C( 30)
10 0/ 1 D4( 372) 9E( 68) A0( 64) 9F( 55) DB( 51) 38( 40) 9D( 40) 52( 39) A1( 38) 54( 36)
11 0/ 1 27( 334) BC( 58) F1( 44) BE( 42) 79( 39) 3B( 37) E1( 34) E2( 34) 31( 33) BF( 33)

KEY FOUND! [ AE:66:5C:FD:24:E3:92:A9:14:39: D4:27:4B ]

Essa chave pode então ser usada para conectar-se à rede.

A seguir, nós observamos a quebra de WEP com um dicionário. Para conseguir fazer isso nós precisamos de arquivos de dicionário com chaves ASCII ou hexadecimais para testá-las. Lembre-se: um único arquivo só pode ter chaves ou ASCII ou hexadecimais nele, não ambos.

Chaves WEP podem ser inseridas em haxadecimal ou ASCII. A tabela a seguir descreve quantos caracteres de cada tipo são necessários nos seus arquivos.
Tamanho da chave WEP em bits Caracteres Hexadecimais Caracteres ASCII
64 10 5
128 26 13
152 32 16
256 58 29

Exemplo de chave ASCII de 64 bits: “ABCDE”
Exemplo de chave hexadecimal de 64 bits: “12:34:56:78:90” (Note o ”:” a cada dois caracteres.)
Exemplo de chave ASCII de 128 bits: “ABCDEABCDEABC”
Exemplo de chave hexadecimal de 128 bits: “12:34:56:78:90:12:34:56:78:90:12:34:56”

Para quebrar uma chave WEP de 64 bits por dicionário:

aircrack-ng -w h:hex.txt,ascii.txt -a 1 -n 64 -e teddy wep10-01.cap

Onde:

-w h:hex.txt,ascii.txt é a lista de arquivos a usar. Para arquivos contendo valores hexadecimais, você precisa colocar um “h:” na frente do nome do arquivo.
-a 1 informa que a chave é WEP
-n 64 informa que a chave tem 64 bits. Altere isso para o tamanho de chave que se ajusta aos arquivos de dicionário.
-e teddy é para selecionar opcionalmente o Access Point. Você poderia também usar a opção ”-b” para escolher baseado no endereço MAC.
wep10-01.cap é o nome do arquivo contendo os dados. Pode ser o pacote completo ou um arquivo contendo apenas IVs. Precisa conter um mínimo de quatro IVs.

Aqui está um exemplo do resultado final:

Aircrack-ng 0.7 r247


[00:00:00] Tested 2 keys (got 13 IVs)

KB depth byte(vote)
0 0/ 0 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0)
1 0/ 0 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0)
2 0/ 0 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0)
3 0/ 0 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0)
4 0/ 0 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0) 00( 0)

KEY FOUND! [ 12:34:56:78:90 ]
Probability: 100%

Vamos dar uma olhada em um exemplo de ataque PTW. Lembre-se que esse método requer pacotes ARP Request/Reply como entrada. Precisa ser o pacote completo, e não somente os IVs. Isso significa que a opção ”– ivs” não pode ser utilizada quando estiver executando o airodump-ng. De mesmo modo, somente funciona para criptografia WEP de 64 e 128 bits.

Digite o seguinte comando:

aircrack-ng -z ptw*.cap

Onde:

-z significa usar a metodologia PTW para quebrar a chave WEP.
ptw*.cap são os arquivos capturados a serem usados.

O sistema responde:

Opening ptw-01.cap
Read 171721 packets.

# BSSID ESSID Encryption

1 00:14:6C:7E:40:80 teddy WEP (30680 IVs)

Choosing first network as target.

Então:

Aircrack-ng 0.9

[00:01:18] Tested 0/140000 keys (got 30680 IVs)

KB depth byte(vote)
0 0/ 1 12( 170) 35( 152) AA( 146) 17( 145) 86( 143) F0( 143) AE( 142) C5( 142) D4( 142) 50( 140)
1 0/ 1 34( 163) BB( 160) CF( 147) 59( 146) 39( 143) 47( 142) 42( 139) 3D( 137) 7F( 137) 18( 136)
2 0/ 1 56( 162) E9( 147) 1E( 146) 32( 146) 6E( 145) 79( 143) E7( 142) EB( 142) 75( 141) 31( 140)
3 0/ 1 78( 158) 13( 156) 01( 152) 5F( 151) 28( 149) 59( 145) FC( 145) 7E( 143) 76( 142) 92( 142)
4 0/ 1 90( 183) 8B( 156) D7( 148) E0( 146) 18( 145) 33( 145) 96( 144) 2B( 143) 88( 143) 41( 141)

KEY FOUND! [ 12:34:56:78:90 ]
Decrypted correctly: 100%

WPA

Agora vamos para quebra de frases-senha (passphrases) WPA/WPA2. Aircrack-ng pode quebrar ambos os tipos.

aircrack-ng -w password.lst *.cap

Onde:

-w password.lst é o nome do arquivo de senha. Lembre-se de especificar o caminho completo se o arquivo não estiver localizado no mesmo diretório.
*.cap é o nome do grupo de arquivos contendo os pacotes capturados. Observe que neste caso nós usamos o curinga '*' para incluir vários arquivos.

O programa responde:

Opening wpa2.eapol.cap
Opening wpa.cap
Read 18 packets.

# BSSID ESSID Encryption

1 00:14:6C:7E:40:80 Harkonen WPA (1 handshake)
2 00:0D:93:EB:B0:8C test WPA (1 handshake)

Index number of target network ?

Note que neste caso, já que existem múltiplas redes, nós precisamos selecionar qual rede atacar. Nós selecionamos a número 2. O programa então responde:

Aircrack-ng 0.7 r130


[00:00:03] 230 keys tested (73.41 k/s)


KEY FOUND! [ biscotte ]


Master Key : CD D7 9A 5A CF B0 70 C7 E9 D1 02 3B 87 02 85 D6
39 E4 30 B3 2F 31 AA 37 AC 82 5A 55 B5 55 24 EE

Transcient Key : 33 55 0B FC 4F 24 84 F4 9A 38 B3 D0 89 83 D2 49
73 F9 DE 89 67 A6 6D 2B 8E 46 2C 07 47 6A CE 08
AD FB 65 D6 13 A9 9F 2C 65 E4 A6 08 F2 5A 67 97
D9 6F 76 5B 8C D3 DF 13 2F BC DA 6A 6E D9 62 CD

EAPOL HMAC : 52 27 B8 3F 73 7C 45 A0 05 97 69 5C 30 78 60 BD

Agora você tem a frase-chave (passphrase) e pode conectar-se à rede.
Dicas de Uso
Abordagem Geral para Quebrar Chaves WEP

Evidentemente, o caminho mais simples é apenas digitar “aircrack-ng captured-data.cap”, dar <enter> e deixar executando. Tendo dito isso, existem algumas técnicas para melhorar suas chances de encontrar a chave WEP rapidamente. Não há passos de mágica simples. A seguir é descrito alguns caminhos que tendem mostrar a chave mais rápido. A menos que você esteja confortável com experimentos, deixe tudo como está e siga o caminho simples.

Se você está capturando pacotes ARP Request/Reply, então o meio mais rápido é usar “aircrack-ng -z <arquivos de captura de pacotes de dados>”. Você pode então pular a compensação desta seção já que encontrará a chave rapidamente, assumindo que você tenha coletado pacotes ARP Request/Reply suficientes!

A técnica de sobreposição é capturar o máximo de dados possível. Essa é a única tarefa mais importante. O número de Vetores de Inicialização (IVs) que você precisa para determinar a chave WEP varia bastante por tamanho de chave e Access Point. Tipicamente você precisa de 250.000 ou mais IVs únicos para chaves de 64 bits e 1,5 milhões ou mais para chaves de 128 bits. É claro que é necessário muito mais que isso para tamanhos de bits de chaves maiores. Existe então o fator sorte. Haverá momentos em que a chave WEP pode ser determinada com tão pouco quanto 50.000 IVs, embora isso seja raro. Alternadamente haverá momentos em que você precisará de dezenas de milhões de IVs para quebrar a chave WEP. O número de IVs é extermamente difícil de prever, já que alguns Access Points são muito bons em eliminar IVs que vazam a chave WEP, ou seja, IVs fracos.

Geralmente, não tente quebrar a chave WEP até você obter 200.000 IVs ou mais. Se você começar muito cedo, o aircrack tende a gastar muito tempo realizando força-bruta nas chaves e não aplicando propriamente as técnicas estatísticas. Começe tentando chaves de 64 bits com “aircrack-ng -n 64 dados-capturados.cap”. Se estão usando uma chave WEP de 64 bits, pode ser geralmente quebrado em menos de 5 minutos (em geral menos de 60 segundos) relativamente com um pouco de IVs. É surpreendente quantos APs usam somente chaves de 64 bits. Se não encontrar a chave de 64 bits em 5 minutos, reinicie o aircrack em modo genérico: “aircrack-ng captured-data.cap”. Então, a cada marca de 100.000 IVs, repita o comando “aircrack-ng -n 64 captured-data.cap” por 5 minutos.

Uma vez que atinja 600.000 IVs, alterne para testar chaves de 128 bits. Nesse ponto, é improvável (mas não impossível) que a chave é de 64 bits e 600.000 IVs não a tenha quebrado. Então agora tente “aircrack-ng captured-data.cap”.

Uma vez atingindo a marca dos 2 milhões de IVs, tente mudar o fator de correção (fudge factor) para “-f 4”. Rode por pelo menos 30 minutos a 1 hora. Repita, aumentando o fator de correção para 4 cada hora. Outro momento para tentar aumentar o fator de correção é quando o aircrack-ng pára porque tentou todas as chaves.

Ao mesmo tempo continue coletando dados. Lembre-se da regra de ouro: “quanto mais IVs, melhor”.

Também dê uma olhada na próxima seção sobre como determinar quais opções usar, já que essas podem significantemente agilizar a quebra da chave WEP. Por exemplo, se a chave é toda numérica, então pode levar tão pouco quanto 50.000 IVs para quebrar uma chave de 64 bits com o parâmetro “-t” contra 200.000 IVs sem o parâmetro “-t”. Então se você tem uma intuição sobre a natureza da chave WEP, vale a pena tentar umas poucas variações.
Como determinar quais opções utilizar

Enquanto o aircrack-ng está rodando, na maior parte você verá apenas o começo da chave. Embora a chave WEP secreta é desconhecida nesse ponto, podem haver dicas para acelerar o processo. Se os bytes de chave têm um número relativamente grande de votos, eles têm 99,5% de probabilidade de estarem corretos. Então vamos dar uma olhada no que você pode fazer com essas dicas.

Se os bytes (prováveis chaves secretas) são por exemplo: 75:47:99:22:50 então é bem óbvio que a chave toda possa consistir de números somente, como os primeiros 5 bytes. Com isso em mente pode-se melhorar a velocidade de quebra da chave usando a opção -t só quando tentar chaves desse tipo. Ver Codificação Binária Decimal na Wikipédia (inglês ou português) para uma descrição de como se parecem os caracteres -t.

Se os bytes são 37:30:31:33:36, que são todos valores numéricos quando convertidos para ASCII, é uma boa idéia usar a opção -h. O registro Convertendo caracteres hexadecimais em ASCII no FAQ fornece links para determinar se todos eles são numéricos.

E se os poucos primeiros bytes forem parecidos com 74:6F:70:73:65 e, quando inseridos no seu editor hexadecimal ou nos links fornecidos na parágrafo anterior, você ver que eles podem formar o início de alguma palavra, então parece ser provável que uma chave ASCII está sendo usada, portanto você ativa a opção -c para verificar somente chaves ASCII visíveis.

Se você sabe o início da chave WEP em hexadecimal você pode usar o parâmetro “-d”. Vamos assumir que você sabe que a chave WEP é “0123456789” em hexadecimal, então você poderia utilizar “-d 01” ou “-d 0123”, etc.

Outra opção para tentar quando tiver problemas em determinar a chave WEP é a opção “-x2”, que faz força-bruta com os últimos dois bytes de chave ao invés do padrão, que realiza somente em um byte de chave.
Como converter a chave WEP de hexadecimal para ASCII?

Ver o próximo tópico.
Como usar a chave

Se o aircrack-ng determina a chave, ela aparece em formato hexadecimal. Ela parece tipicamente com isso:

KEY FOUND! [11:22:33:44:55]

O tamanho (comprimento) irá variar baseado no tamanho de bit de chave WEP usado. Veja a tabela acima que indica o número de caracteres hexadecimais para os vários tamanhos de bit de chave WEP.

Você pode usar essa chave sem o ”:” no seu cliente favorito. Isso significa que você digita “1122334455” no cliente e especifica que a chave está no formato hexadecimal. Lembre-se que a maioria das chaves não podem ser convertidas para o formato ASCII. Se a chave hexadecimal está de fato em caracteres ASCII válidos, eles também serão mostrados.

Se você deseja experimentar um bit convertendo-o de hexadecimal para ASCII, veja este registro em Perguntas Freqüentes (FAQ).

Nós não fornecemos especificamente suporte ou os detalhes de como configurar sua placa wireless para se conectar ao AP. Procure na internet por essa informação. Do mesmo modo, veja a documentação para o cliente wireless da sua placa. Se você está usando Linux, confira a lista de mensagens (mailing lists) e fóruns específicos para a distribuição.

Adicionalmente, aircrack-ng mostra uma mensagem indicando a probabilidade da chave estar correta. Será mostrada algo similar a “Probability: 100%”. Ele testa a chave contra alguns pacotes para confirmar que a chave está correta. Baseado nesses testes, o programa mostra a probabilidade de uma chave correta.

Também lembre-se que nós não damos suporte ou apoiamos pessoas que acessam redes que não pertencem a elas.
Como converter a chave em hexadecimal de volta em frase-senha (passphrase)?

As pessoas perguntam com frequência se uma chave hexadecimal encontrada pelo aircrack-ng pode ser convertida de volta à “frase-senha” original. A resposta simples é “NÃO”.

Para entender o por quê disso, vamos dar uma olhada em como essas frases-senhas são convertidas em chaves hexadecimais usadas no WEP.

Alguns fornecedores tem um gerador de chave WEP que “traduz” uma frase-senha em chave WEP hexadecimal. Não há padrões para isso. Frequentemente eles apenas enchem frases curtas com espaços em branco, zeros ou outros caracteres. Porém, as frases-senhas em geral são preenchidas com zeros até o tamanho de 16 bytes, e após isso o MD5SUM desse fluxo (stream) de bytes será a chave WEP. Lembre-se que cada fornecedor pode fazer isso de uma maneira sutilmente diferente, e eles podem não ser compatíveis.

Então não há como saber quão longo era a frase-senha original. Poderia ser tão curto como apenas um caractere. Tudo depende de quem desenvolveu o software.

Apesar de tudo, estas frases-senhas resultam em uma chave WEP que é facilmente quebrada como qualquer outra chave WEP. No final das contas, o método de conversão exato realmente não importa.

Tenha em mente que senhas WEP que pareçam “texto puro” podem ser ASCII ou FRASE-SENHA. A maioria (todos) dos sistemas suportam ASCII e são o padrão, mas alguns suportam frase-senha e aqueles que o suportam requerem usuários para especificar se é ASCII ou uma frase-senha. Frases-senhas podem ter qualquer tamanho arbitrário. ASCII são geralmente limitados a 5 ou 26 (WEP 40-bits e WEP 104-bits).

Como uma observação, Windows WZC (Wireless Zero Configuration) apenas suporta chaves ASCII ou hexadecimais de tamanho fixo, então a chave a ser fornecida mais curta tem 5 caracteres de tamanho. Veja a tabela acima nesta página relativo à quantidade de caracteres que são necessários para tamanhos de chave específicos.
Arquivos exemplares para testar

Existem um número de arquivos de amostra que você pode testar com o aircrack-ng para ganhar experiência:

wpa.cap: Este é um arquivo de amostra com um handshake WPA. Está localizado no diretório “test” dos arquivos de instalação. A frase-senha é ”“biscotte”. Use o arquivo de senhas (password.lst) que está no mesmo diretório.
wpa2.eapol.cap: Este é um arquivo de amostra com handshake WPA2. Está localizado no diretório “test” dos arquivos de instalação. A frase-senha é “12345678”. Use o arquivo de senhas (password.lst) que está no mesmo diretório.
test.ivs: Este é um arquivo com chave WEP de 128 bits. A chave é “AE:5B:7F:3A:03: D0:AF:9B:F6:8D:A5:E2:C7”.
ptw.cap: Este é um arquivo com chave WEP de 64 bits apropriado para o método PTW. A chave é “1F:1F:1F:1F:1F”.

Dicionário de Chave Hexadecimal

Embora não seja parte do aircrack-ng, vale a pena mencionar um obra de arte interessante feita por SuD. É basicamente um dicionário hexadecimal WEP já preparado, e o programa para executá-lo:

http://tv.latinsud.com/wepdict/

Outras Dicas

Para especificar vários arquivos de captura ao mesmo tempo, você pode usar um curinga como * ou especificar cada arquivo individualmente.

Exemplos:

aircrack-ng -w password.lst wpa.cap wpa2.eapol.cap
aircrack-ng *.ivs
aircrack-ng algumacoisa*.ivs

Para especificar vários dicionários ao mesmo tempo, coloque vírgula entre cada um sem espaços.

Exemplos:

aircrack-ng -w password.lst,secondlist.txt wpa2.eapol.cap
aircrack-ng -w firstlist.txt,secondlist.txt,thirdlist.txt wpa2.eapol.cap

Este FAQ - Perguntas Freqüentes - tem uma lista de fontes para wordlists (listas de palavras). Também veja este tópico no Fórum.

Determinar a frase-senha WPA/WPA2 depende totalmente de encontrar um registro de dicionário que corresponda à frase-senha. Portanto, um dicionário de qualidade é muito importante. Você pode procurar na Internet por dicionários pra serem usados. Existem vários disponíveis.

A página de tutoriais tem o seguinte tutorial Como quebrar WPA/WPA2? que te guia passo-a-passo em detalhes.

Como você tem visto, se existem várias redes em seus arquivos você precisa selecionar aquela que você quer quebrar. Ao invés de fazer a seleção manualmente, você pode especificar qual rede você quer, por ESSID ou BSSID, na linha de comando. Isso é feito com os parâmetros -e ou -b, respectivamente.

Outro artifício é usar o John the Ripper para criar senhas específicas para teste. Vamos supor que você saiba que a frase-senha é o nome da rua, mais 3 dígitos. Crie um conjunto de regras customizadas no JTR e execute algo parecido com isto:

john --stdout --wordlist=specialrules.lst --rules | aircrack-ng -e test -a 2 -w - /root/capture/wpa.cap

Lembre-se que senhas válidas tem tamanho entre 8 a 63 caracteres. Aqui está um comando útil para assegurar que todas as senhas em um arquivo satisfaçam este critério:

awk '{ if ((length($0) > 8) && (length($0) < 63)){ print $0 }}' inputfile outputfile

ou

grep -E '^.{8,63}$' < inputfile

Usando Resolução de Problemas
Mensagem de Erro "Please specify a dictionary (option -w)"

Tradução da mensagem: “Por favor, especifique um dicionário (opção -w)”

Isso significa que você digitou de forma errada o nome do arquivo do dicionário ou ele não está no diretório atual. Se o dicionário está em outro diretório, você precisa fornecer o caminho completo de onde está o dicionário.
Mensagem de Erro "fopen(dictionary)failed: No such file or directory"

Tradução da mensagem: “pabrir(dicionário)falhou: Não existe tal arquivo ou diretório”

Isso significa que você digitou de forma errada o nome do arquivo do dicionário ou não está no diretório atual. Se o dicionário está em outro diretório, você precisa fornecer o caminho completo de onde está o dicionário.
Votos negativos

Haverá momentos em que os bytes de chave terão valores negativos para votos. Como parte da análise estatística, existem proteções embutidas que subtraem votos de falsos positivos (se não souber o que é um falso positivo, pesquise no Google. A expressão 'alarme falso' pode substituir o termo). A idéia é provocar resultados mais precisos. Quando você obtém vários votos negativos, algo está errado. Tipicamente isso significa que você está tentando quebrar uma chave dinâmica como WPA/WPA2 ou a chave WEP mudou enquanto você estava capturando os dados. Lembre-se, WPA/WPA2 pode ser quebrado somente por uma técnica de dicionário. Se a chave WEP mudou, você precisará começar a reunir novos dados e iniciar de novo.
Mensagem "An ESSID is required. Try option -e"

Tradução da mensagem: “Um ESSID é necessário. Tente opção -e”

Você capturou com êxito um handshake e então, quando executa o aircrack-ng, você obtém o seguinte resultado:

Opening wpa.cap
Read 4 packets.

# BSSID ESSID ENCRYPTION
1 00:13:10:F1:15:86 WPA (1) handshake
Choosing first network as target.

An ESSID is required. Try option -e.

Solução: Você precisa especificar o ESSID real, senão a chave não pode ser calculada, já que o ESSID é usado como salto quando gera o par de chaves mestre (PMK) a partir da chave pré-compartilhada (PSK).

Então apenas use -e ”<ESSID real>“ no lugar de -e ” “, e o aircrack-ng deve encontrar a frase-senha.
O ataque PTW não funciona

Uma restrição importante em particular é que ele somente funciona contra pacotes ARP Request/Reply. Não pode ser usado contra quaisquer outros pacotes de dados. Então mesmo que seu arquivo de captura de dados contenha um número grande de pacotes de dados, se há pacotes ARP Request/Reply insuficientes, não funcionará. Usando essa técnica, uma chave WEP de 64 bits pode ser quebrada com tão pouco quanto 20.000 pacotes de dados, e de 128 bits com 40.000 pacotes de dados. Ele também exige que o pacote completo seja capturado. Significa que você não pode usar a opção ”- - ivs” quando executar o airodump-ng. Também só funciona para criptografia WEP de 64 e 128 bits.
Mensagem de Erro "fixed channel"

Tradução da mensagem: “canal fixo”

Observe a mensagem “fixed channel wlan0: 8” (canal fixado wlan0: 8) na primeira linha abaixo, do lado direito. Tem o canal 8 como referência, mas o canal na esquerda mostra 9.

CH 9 ][ Elapsed: 28 s ][ 2007-09-03 13:23 ][ fixed channel wlan0: 8

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

00:14:6C:7E:40:80 64 73 208 0 0 9 11 WEP WEP teddy

BSSID STATION PWR Rate Lost Packets Probes

No caso de você iniciar o airodump-ng com um canal fixo (e não saltando canais/channel hopping) e aí você ou algum processo mudar o canal wireless, essa mensagem aparece. Isso dará problemas, já que agora você está em um canal diferente do que você quer.

Um exemplo de iniciar o airodump-ng em um canal fixo segue abaixo:

airodump-ng --channel 9 wlan0 or airodump-ng -c 9 wlan0

Para resolver isso, primeiro identifique o que mudou o canal wireless. O problema mais comum é ter um ou mais gerenciadores de conexão de redes rodando. Certifique-se de parar todos eles. Você também poderia mudar manualmente o canal com iwconfig, airodump-ng, etc.

Uma vez que o problema foi resolvido, redefina o canal para o correto, e reinicie o airodump-ng.
Mensagem de Erro "read(file header) failed: Success"

Tradução da mensagem: “leitura(cabeçalho arquivo) falhou: Sucesso”

Se você recebeu a mensagem de erro - “read(file header) failed: Success” ou similar enquanto executava o aircrack-ng, há provavelmente um arquivo de entrada - que é um arquivo fornecido pelo usuário - com bytes zeros. O arquivo de entrada poderia ser um arquivo .cap ou .ivs.

Isso é mais propenso a acontecer em entradas com curinga de vários arquivos, como em:

aircrack-ng -z -b XX:XX:XX:XX:XX:XX *.cap

Simplesmente apague os arquivos com bytes zeros e execute o comando de novo.

Como criar um hotspot e oferecer acesso sem fio

Se você tem um laptop já deve ter usado um hotspot em algum local público como shopping centers, cyber cafés, restaurantes, centros de convenções, hotéis e muitos outros
Num hotspot todos na área tem permissão de conectar à rede sem fio mas, quando se tenta navegar na web, aparece uma página de login com cadastro de usuário e senha.

Já se perguntou como criar aquela página de login?

Os roteadores domésticos não conseguem fazer isso. Se você contratar um provedor está resolvido mas talvez não seja muito barato.


Por isso vamos ver como compartilhar sua própria conexão sem fio e oferecer um hotspot a outros usuários sem precisar de roteadores caros.

O 2hotspot é um poderoso software que possibilita a criação instantânea de hotspots usandcisaro seu roteador wireless ou a própria placa de rede sem fio. Com este programa gratuito você usa sua rede e oferece um hotspot gratuito ou comercial.

Se você já tiver uma rede local sem fio funcionando, é necessário que o compartilhamento de conexão com a Internet esteja ativo. Já publiquei anteriormente um guia sobre como configurar uma rede sem fio entre computadores sem roteador. Os passos aqui são bem parecidos, com pequenas alterações.

Servidor
No computador que vai atuar como hotspot:

1- Vá até Conexões de Rede, clique com o botão direito em Conexão de rede sem fio e selecione Propiedades.
2 -Clique na aba Redes sem fio.
3 - Marque a caixa Usar o Windows para definir as configurações da rede sem fio.
4 - Clique no botão Adicionar.
5 - Digite 2HOTSPOT no Nome da rede (SSID).
6 - Selecione Desativado na Criptografia de dados.
7 - Marque Esta é uma rede de computador para computador (ad hoc); não são usados pontos de acesso sem fio.




8 - Clique em OK para fechar a janela.
9 - Clique novamente com o botão direito em Conexão de rede sem fio e selecione Exibir redes sem fio disponíveis.
10 - Você já deve ver a rede 2HOTSPOT na lista. Selecione o 2HOTSPOT e clique no botão Conectar.
11 - Vá até Conexões de rede, clique com o botão direito na sua conexão de banda larga com a Internet e selecione Propriedades.
12 - Clique na aba Avançado, marque Permitir que outros usuários da rede se conectem pela conexão deste computador à Internet. Clique em OK.



13 - Agora vá a um computador CLIENTE que vai conectar ao hotspot. Clique com o botão direito nas conexões sem fio e selecione Exibir redes sem fio disponíveis. Você deve ver a rede 2HOTSPOT na lista. Selecione o 2HOTSPOT e conecte.

Nota: Se o servidor estiver conectado à Internet, o computador cliente vai acessar a Internet sem limitações. Tente navegar no computador cliente. Se funcionar, continue com o passo seguinte. Se não, cheque todos os passos acima.
14 - No servidor, vá até o site 2hotspot.com, faça o download do software e instale.
15 - No final da instalação do 2hotspot, você deverá selecionar sua conexão sem fio. Apenas selecione Conexão de rede sem fio e clique em OK.



16 - Seu navegador abrirá e será redirecionado para a página de cadastro. Você deve digitar seus dados de contato. Na segunda página, você tem que selecionar o propósito de seu hotspot (gratuito, profissional, pago). O passo final é configurar opções de acesso como número máximo de conexões simultâneas, velocidade de download e upload, etc…
17 - Após completar o cadastro, clique com o botão direito no ícone do 2hotspot na barra e certifique-se que está conectado ao hotspot.


Se tudo for configurado corretamente, qualquer computador por perto poderá ver e se conectar ao seu 2HOTSPOT.



Quando o cliente estiver conectado e tentar acessar qualquer site, uma página de boas-vindas será exibida, pedindo o cadastro do novo cliente ou login de um cliente já cadastrado.

Cracking Wireless - Obtendo a senha de uma rede Wireless(WEP)

Facil obter a senha de uma rede sem-fio que utiliza o protocolo WEP.

**Todos os passos aqui mostrados têm finalidade educativa e informativa, e foram testados em minha própria rede! Não assumo qualquer responsabilidade sobre o uso destas informações.

Este tutorial foi escrito utilizando uma distribuição LINUX, portanto ter uma distro instalada é um pré-requisito!

1. Entendendo a fragilidade do protocolo WEP:

O primeiro protocolo de segurança adotado, que conferia no nível do enlace uma certa segurança para as redes sem fio semelhante à segurança das redes com fio, foi o WEP (Wired Equivalent Privacy).
Este protocolo, muito usado ainda hoje, utiliza o algoritmo RC4 para criptografar os pacotes que serão trocados numa rede sem fios a fim de tentar garantir confidenciabilidade aos dados de cada usuário. Além disso, utiliza-se também a CRC-32 que é uma função detectora de erros que ao fazer a checksum de uma mensagem enviada gera um ICV (Identificador de Circuito Virtual) que deve ser conferido pelo receptor da mensagem, no intuito de verificar se a mensagem recebida foi corrompida e/ou alterada no meio do caminho.
No entanto, após vários estudos e testes realizados com este protocolo, encontraram-se algumas vulnerabilidades e falhas que fizeram com que o WEP perdesse quase toda a sua credibilidade.
Porque RC4 é uma cifra de fluxo, a mesma chave de tráfego nunca deve ser usada duas vezes. O propósito de um VI (vetor de inicialização), que é transmitido em texto puro, é para evitar a repetição, mas um VI de 24 bits não é suficientemente longo para garantir isso em uma rede ocupada. A forma como o VI foi usado também deu brecha para um ataque de chaves-relacionadas ao WEP. Para um VI de 24 bits, há uma probabilidade de 50% de que o mesmo VI irá repetir se após 5000 pacotes. Em agosto de 2001, Scott Fluhrer, Itsik Mantin, e Adi Shamir publicaram uma criptoanálise do WEP que explora a forma como a cifra RC4 e VI são usados no WEP, resultando em um ataque passivo que pode recuperar a chave RC4 após espionagem na rede. Dependendo da quantidade de tráfego de rede, e desse modo o número de pacotes disponíveis para a inspeção, uma recuperação de chave bem-sucedida poderia levar apenas um minuto. Se um número insuficiente de pacotes está sendo enviado, existem maneiras para um atacante enviar pacotes na rede e, assim, estimular o envio de pacotes de resposta que podem então ser inspecionados para encontrar a chave. O ataque foi logo implementado, e ferramentas automatizadas já foram liberados. É possível realizar o ataque com um computador pessoal, off-the-shelf hardware e software disponíveis gratuitamente como Aircrack-ng para quebrar qualquer chave WEP em minutos.

2. Ferramentas/Equipamentos utilizadas:
Para simular um ataque, utilizamos:
  • Roteador D-Link DIR-600
  • Adaptador de rede USB D-Link DWA-110
  • Linux Mint 11 - Baseado no Ubuntu 11.04
  • Suite Aircrack-ng

Configurei uma rede chamada BigRoot, que utiliza a proteção WEP de 128Bits, cuja senha é 1qazxsw23EDCV e nosso objetivo é descobri-la! Veja que não é uma senha simples, pois possui letras maiúsculas e números entre os caracteres!

3. Instalando o Aircrack-ng:

O Aircrack-ng é uma suite composta de vários programas interessantes, porém só iremos utilizar alguns neste tutorial.
Distribuições como o BackTrack já vem com o aircrack instalado.
Para instalar no Ubuntu ou distribuições baseadas no mesmo basta:
$sudo apt-get install aircrack-ng
Dê uma pesquisa se sua distro já não possui o aircrack em seus repositórios, é muito provável que sim.
Mais detalhes: http://www.aircrack-ng.org/install.html

4. Configurando sua placa de rede:
Talvez essa parte seja a mais importante para seu sucesso! Muitas pessoas não conseguem nada pois suas placas não estão devidamente configuradas ou não suportam a injeção de pacotes.

Verifique se sua placa é compativel:
http://www.aircrack-ng.org/doku.php?...bility_drivers

Caso sua placa não esteja na lista, pesquise no fórum do aircrack, lá há muitos tutoriais sobre diversas placas.
Estou utilizando um adaptador USB DWA-110 da D-Link, pois a placa do meu notebook não dá suporte a injeção de pacotes.
Este adaptador possui um chipset Ralink 2573 USB e para configurá-lo corretamente foi necessário instalar um patch:
Citação:
"wget http://wireless.kernel.org/download/...-wireless-2.6/
compat-wireless-2.6.tar.bz2"
tar jxvf compat-wireless-2.6.tar.bz2
cd compat-wireless-<tab>
wget http://patches.aircrack-ng.org/chann...ne-maxim.patch
patch -Np1 -i channel-negative-one-maxim.patch
make
sudo make install
sudo make unload
Nosso objetivo é colocar a placa em modo monitor, assim capturando os pacotes provindos da rede, e gerar trafego na mesma, aumentando assim o número de IVs capturados.

4. Iniciando a placa em modo monitor e verificando as redes disponíveis:
Para iniciar minha placa de rede(wlan2), basta:
Citação:
#airmon-ng start wlan2
Para visualizar sua placa de rede, no terminal basta digitar: #iwconfig
Assim todas suas placas sem fio serão listadas.
Para visualizar o MAC(Endereço físico, cada placa tem um) da sua placa, use: #ifconfig
São os 6 primeiros codigos em hexadecimal.

Com sucesso, obteremos:



Observe que uma nova placa de rede foi criada: mon0
É a partir desta placa que iremos trabalhar
Vamos então verificar as redes disponíveis:
Citação:
#airodump-ng mon0
Onde:
mon0: sua placa de rede em modo monitor



Observe na imagem os seguintes campos importantes para nós:
Citação:
BSSID: MAC do AP;
PWR: Intencidade do sinal (Quanto menor, melhor);
#Data: É oque nos interessa! Quanto mais, mais IVs capturados e maior chance de obtenção da senha;
#/S: Quantidade de pacotes por segundo que estamos capturando;
ENC: Proteção da rede utilizada, no nosso caso, WEP;
ESSID: Nome da rede.
Observe também abaixo os clientes. Observe que um está associado em nosso roteador(AP), onde pode ser visto pelo campo PROBE, que mostra quais redes um determinado cliente conectou, e outro não está associado, no caso, este sou eu!

5. Testando a injeção de pacotes:
Devemos capturar uma grande quantidade de IVs e assim obter sucesso na obtenção da senha. Se houver muita atividade na rede, você obterá grande quantidade de dados, porém se a rede estiver sendo pouco utilizada, obteremos poucos pacotes.
Obtive sucesso com cerca de 50.000 pacotes, assim para chegar a essa quantidade rapidamente, ou melhor, incurtar o tempo necessário, injetaremos pacotes na rede, criando movimentação nesta.

Testando a injeção de pacotes:
Citação:
#aireplay-ng --test -b 00:XX:XX:XX:4f:58 mon0
Onde:
--teste: opção do aireplay para teste de injeção de pacotes;
-b 00:XX:XX:XX:4f:58: MAC do AP;
mon0: sua placa.

Pela imagem, observamos que os pacotes estão sendo injetados com sucesso! Assim, poderemos gerar trafego na rede e obter muitos IVs.
Este teste é muito importante!

6. Criando uma falsa associação com o AP:
Se nosso cliente(Placa de rede) não estiver associada ao roteador, este ignorará todos os pacotes injetados! Assim, nosso ataque não servirá de nada.

Em outro terminal, execute:
Citação:
# aireplay-ng -1 6000 -o 1 -q 10 -a 00:XX:XX:XX:4f:58 -h 00:XX:XX:XX:66:d6 mon0
Onde:
-1 6000: Ataque de associação;
-o 1: Envia apenas 1 pacote por vez;
-q 10: Envia o pacote a cada 10 segundos;
-a 00:XX:XX:XX:4f:58: MAC do AP;
-h 00:XX:XX:XX:66:d6: MAC da sua placa;
mon0: Sua placa de rede;



Veja que obtemos sucesso na associação: Association sucessful :-)

Por vez, o próximo passo é efetuar a injeção de pacotes utilizando um ataque de ARP replay.

7. Iniciando o ataque de requisição de ARP:
A reação do AP a uma requesição ARP é gerar nos IVs, esse é nosso objetivo, gerar muitos IVs em pouco tempo.

Em um novo terminal, execute:
Citação:
# aireplay-ng --arpreplay -b 00:26:XX:XX:XX:58 -e BigRoot -h 00:XX:XX:XX:66:F6 mon0
Onde:
--arpreplay: Ataque de requisição de pacotes ARPs;
-b 00:26:XX:XX:XX:58: MAC do AP;
-e BigRoot: Nome da rede;
-h 00:XX:XX:XX:66:F6: MAC do cliente;
mon0: sua placa.



Observe que na imagem, 0 requisições ARP foram efetuadas. Você deve aguardar até que a primeira requisição seja feita. Isso pode demorar um pouco!
Após o primeiro pacote, nosso ataque finalmente acontece, gerando muitos IVs:



Observe que a quantidade de IVs começa a crescer de forma estraordinária:



Na imagem, temos pouco mais de 495000 pacotes.
Assim que você iniciar o ataque de requisição ARP, você deve abrir o aircrack-ng e já tentar decodificar a senha da rede apartir desses pacotes já capturados.

8. Iniciando finalmente o aircrack:
O airodum-ng e o aireplay-ng gera alguns arquivos que são utilizados pelo aircrack para decodificar a senha:

Assim, em outro terminal, rode o aicrack:
Citação:
# aicrack-ng -b 00:26:XX:XX:XX:f6 dados*.cap
Onde:
-b 00:26:XX:XX:XX:f6: MAC do AP;
dados*.cap: Arquivos gerados pelo airodump.



Observe na imagem que foram capturados pouco mais de 36000 IVs, porém o aircrack não conseguiu decodificar a senha. Observe que a proxima tentativa será com 40000 IVs.
Lembre-se que estamos com 4 terminais abertos!! Todos estão rodando juntos.

Um pouco mais de tempo e coseguimos a tão desejada senha:



Agora basta se conectar a rede:



Você tambêm pode utilizar a senha em hexadecimal, retirando assim os : .

9. Conclusão:
Este simples tutorial mostra como é simples obter a senha de uma rede WEP, sendo assim, recomenda-se utilizar protocolos de segurança mais recentes, como o WAP/WAP2. Mesmo tomando algumas medidas como ocultar a rede, utlizar filtro MAC, podemos burlar tudo facilmente.

10. Alguns problemas enfrentados e suas soluções:
10.1: mon0 is on channel 1, but the AP uses channel 6
Tente primeiramente setar sua placa no mesmo canal do AP utilizando o seguinte comando:
Citação:
#iwconfig mon0 channel 6
Onde:
mon0: sua placa de rede;
channel 6: canal do AP
Apenas isso para minha placa não foi suficiente, assim tive que instalar o patch do passo 4.

10.2: O nome da rede não aparece: <length: 0>
Isso mostra que a rede está oculta. Geralmente basta esperar alguns segundos e o airodump consegue resolver o nome da mesma.
Se não der certo, utilize o ataque Deauthentication:
Citação:
aireplay-ng -0 1 -a 00:xx:xx:xx:40:80 -c 00:xx:xx:xx:30:30 mon0
10.3: A injeção de pacotes não funciona
Primeiramente deve se certificar que sua placa é compatível. Após isso, o AP pode estar com o filtro de MAC ativado, ou seja, ignora todos clientes que não estão com acesso permitido.
Para solucionar isso, você deve espiar a rede até que um cliente autorizado se conecte e utilizar esse MAC para injeção de pacotes.

6 Passos para criar um servidor de gateway de email com Postfix


Existem vários motivos para criar um servidor de gateway de email, a grande maioria cria um para aplicar regrar de anti-spam e anti vírus. Vamos discutir uma outra aplicação para um servidor de Gateway de email com postfix.

Vamos imaginar que necessitamos migrar o nosso serviço de email para um outro local, mas isso não pode ser feito de um só vez, por várias razões. Sendo assim, podemos montar um servidor de gateway de email para redirecionar os emails para o novo servidor conforme vamos migrando as contas, e aqueles que ainda não foram migrados podem ser direcionados para o servidor antigo.

Então vamos ao nosso passo a passo.
Instalando o postfix

Citação:
apt-get install postfix
Fazendo a configuração de gateway no postfix, /etc/postfix/main.cf
Citação:
# vim /etc/postfix/main.cf

# Fica em Branco, pois não vamos receber email neste servidor
mydestination =

# Indica os domínios que o nosso gateway vai responder
relay_domains = dominio1.com, domino2.com.br

# Tabela indicando para qual servidor de email vamos encaminhar os emails
transport_maps = hash:/etc/postfix/transport
Fazendo a configuração de gateway no postfix, /etc/postfix/master.cf

Citação:
vim /etc/postfix/master.cf

# local unix - n n - - local
Comentamos a linha que cuida a entrega local, pois neste servidor não vamos precisar receber email, ele vai apenas repassar. Algo com a linha acima, apesar que este passo é opcional.

Fazendo a configuração do gateway no postfix, /etc/postfix/transport
Citação:
vim /etc/postfix/transport

tux@dominio1.com smtp:192.168.0.1
dominio1.com smtp:192.168.0.2
dominio2.com.com.br smtp:192.168.0.3
antonia@dominio2.com.br smtp:192.168.0.4
Vamos rodar o comando para gerar a tabela do transport

Citação:
postmap /etc/postfix/transport
Essa configuração é muito simples também:

Linha 1: Recebe os emails de <tux (a) dominio1 com> e encaminha para o um outro servidor que deverá responder no ip 192.168.0.1, um detalhe importante é que o servidor que esta no ip 192.168.0.1 pode ser qualquer outro servidor de email, um qmail, um sendmail, outro postfix, uma solução do ZIMBRA, ou até mesmo o famoso e caro Microsoft Exchange.

Linha 2: Recebe todo o resto dos emails do domínio dominio1.com e encaminha para o servidor de email que esta respondendo no endereço ip 192.168.0.2

Linha3: Recebe todo o resto dos emails do domínio dominio2.com.br e encaminha para o servidor de email que esta respondendo no endereço ip 192.168.0.3

Linha 4: Recebe os emails de <antonia (a) dominio2 com br> e encaminha para o um outro servidor que deverá responder no ip 192.168.0.4, lembrando que o servidor que esta no ip 192.168.0.4 pode ser qualquer outro servidor de email, um qmail, um sendmail, outro postfix, uma solução do ZIMBRA, ou até mesmo o famoso e caro Microsoft Exchange.

A configuração do DNS, entrada MX

Um detalhe importante, que parece até ser um pouco obvio as vezes é o seguinte, a entrada MX do se domínio deve estar apontando para o endereço do gateway, e não mais para o seu servidor de email padrão

Algo como a configuração abaixo do bind9
Citação:
$TTL 3600
@ IN SOA ns1.dominio1.com. root.ns1.dominio1.com. (
2009123001 ; serial YYYYMMDDnn
3600 ; refresh ( 1 hours)
7200 ; retry ( 2 hours)
1209600 ; expire ( 5 days)
172800 ) ; minimum ( 2 days)

;
; cria o nome para o servidor de email, ip deve ser do servidor gateway de email
;
mail0 IN A 200.000.00.000

;
; seta quem sera o servidor de email
;
@ IN MX 10 mail0
Ajuste no servidor que vai receber os redirecionamentos

O servidor que vai receber os encaminhamento de email deve ter a habilidade de receber emails dos domínios e aceitar relay do servidor de gateway. No caso do postfix isto é simples.
Citação:
vim /etc/postfix/main.cf (exemplo o servidor 192.168.0.2 que vai responder por dominio1.com )

mydestination = dominio1.com
mynetworks = 127.0.0.0/8, 192.168.0.200 #(192.168.0.200 é o ip do nosso servidor gateway )
Pronto, isso é o bastante para o servidor de email receber os encaminhamentos do servidor de gateway de email.

Instalação do Squid com autenticação NTLM e Kerberos

Sumário
Neste projeto foi usado um micro para agir na rede como firewall de filtragem de pacotes e proxy. Para filtragem de pacotes recebidos da internet usamos o iptables v1. 4.2, Squid versão 2.5 STABLE14 e sistema operacional Debian Etch GNU/Linux com o kernel 2.6.18-6-k7. Para controle de relatórios de acesso usei o Sarg 2.2.5 e para controle de pacotes usei o Iptraf 3.0.0. Como método de segurança na autenticação de senhas usei o Kerberos v5.

Descrição dos softwares:

Firewall Iptables
Firewall pode ser definido como uma barreira de proteção, que controla o tráfego de dados entre seu computador e a Internet (ou entre a rede onde seu computador está instalado e a Internet). Seu objetivo é permitir somente a transmissão e a recepção de dados autorizados. Existem firewalls baseados na combinação de hardware e software e firewalls baseados somente em software. Este último é o tipo recomendado ao uso doméstico e também é o mais comum.

Explicando de maneira mais precisa, o firewall é um mecanismo que atua como "defesa" de um computador ou de uma rede, controlando o acesso ao sistema por meio de regras e a filtragem de dados. A vantagem do uso de firewalls em redes, é que somente um computador pode atuar como firewall, não sendo necessário instalá-lo em cada máquina conectada.

Como funciona: Há mais de uma forma de funcionamento de um firewall, que varia de acordo com o sistema, aplicação ou do desenvolvedor do programa. No entanto, existem dois tipos básicos de conceitos de firewalls: o que é baseado em filtragem de pacotes e o que é baseado em controle de aplicações. Ambos não devem ser comparados para se saber qual o melhor, uma vez que cada um trabalha para um determinado fim, fazendo que a comparação não seja aplicável. Conheça cada tipo a seguir. No nosso caso usamos o modo FILTRAGEM DE PACOTES.

Filtragem de pacotes: O firewall que trabalha na filtragem de pacotes é muito utilizado em redes pequenas ou de porte médio. Por meio de um conjunto de regras estabelecidas, esse tipo de firewall determina que endereços IPs e dados possam estabelecer comunicação e/ou transmitir/receber dados. Alguns sistemas ou serviços podem ser liberados completamente (por exemplo, o serviço de e-mail da rede), enquanto outros são bloqueados por padrão, por terem riscos elevados (como softwares de mensagens instantâneas, tal como o ICQ). O grande problema desse tipo de firewall, é que as regras aplicadas podem ser muito complexas e causar perda de desempenho da rede ou não ser eficaz o suficiente.

Este tipo se restringe a trabalhar nas camadas TCP/IP, decidindo quais pacotes de dados podem passar e quais não. Tais escolhas são regras baseadas nas informações endereço IP remoto, endereço IP do destinatário, além da porta TCP usada.

Quando devidamente configurado, esse tipo de firewall permite que somente "computadores conhecidos troquem determinadas informações entre si e tenham acesso a determinados recursos". Um firewall assim, também é capaz de analisar informações sobre a conexão e notar alterações suspeitas, além de ter a capacidade de analisar o conteúdo dos pacotes, o que permite um controle ainda maior do que pode ou não ser acessível.

Iptraf

Iptraf é um programa que possui a função de monitorar a rede a qual o seu computador está conectado, através de dados transmitidos sobre os protocolos IP/TCP e UDP/IP, entre outros. O aplicativo tem a capacidade de exibir diversas estatísticas, como número de pacotes e seus respectivos tamanhos, além da velocidade de suas transmissões. O programa funciona em modo texto, em algum terminal de sistema, como o Konsole.

A princípio é possível aplicar IPTRAF em diversas tecnologias de rede físicas distintas, entre elas: Ethernet, FDDI, SLIPP e interfaces de loopback. Além das várias redes, é possível também utilizar o programa para monitorar diversos protocolos distintos.

Squid
O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições frequentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso. No cache são armazenados os objetos da Internet (ex. dados de páginas web) disponíveis via protocolo HTTP, FTP e Gopher num sistema mais próximo ao do cliente.

Os navegadores podem então usar o Squid local como um servidor Proxy HTTP, reduzindo o tempo de acesso aos objetos e reduzindo a utilização da conexão. Isto é muito usado por provedores no mundo todo para melhorar a velocidade de navegação para seus clientes e também em LAN que compartilham a mesma conexão à Internet.

Ele pode fornecer anonimato e segurança dado ser um intermediário no acesso aos objetos. No entanto a sua utilização pode gerar preocupações a respeito da privacidade pois o Squid é capaz de armazenar registos sobre os acessos, incluindo URLs acedidas, a data e hora exatas, e quem acedeu. Isto é usado frequentemente nas empresas para controlarem o acesso à Internet dos seus funcionários.

A aplicação cliente (ex.navegador) deverá especificar explicitamente o servidor proxy que quer utilizar (típico para os clientes de provedores), ou poderá utilizar uma proxy sem qualquer configuração extra: caching transparente, em que todos os pedidos HTTP para fora, são interceptados pelo Squid e todas as respostas são armazenadas em cache. Este é uma típica configuração em corporações (todos os clientes na mesma rede local) e introduz as preocupações com privacidade mencionadas acima.

Squid tem algumas funcionalidades que permitem tornar as conexões anônimas, tais como desabilitar ou alterar campos específicos do cabeçalho dos pedidos HTTP do cliente. Se isto é feito e como, é controlado pela pessoa que administra a máquina que corre o Squid. As pessoas que requisitam páginas numa rede que usa Squid de forma transparente podem não saber que esta informação está a ser registada. Em determinados países, os utilizadores devem ser informados sobre a possível monitorização e registo das ligações internet.

Sarg
O Sarg é um interpretador de logs para o Squid, assim como o Webalizer e o Apache. Sempre que executado ele cria um conjunto de páginas, divididas por dia, com uma lista de todas as máquinas que foram acessadas e a partir de cada máquina da rede veio cada acesso. Ele também mostra os usuários, caso o Squid esteja configurado para exigir autenticação.

A partir daí você pode acompanhar as páginas que estão sendo acessadas, mesmo que não exista nenhum filtro de conteúdo e tomar as medidas cabíveis em casos de abuso. Todos sabem que os filtros de conteúdo nunca são completamente eficazes, eles sempre bloqueiam algumas páginas úteis e deixam passar muitas páginas impróprias. Se você tiver algum tempo para ir acompanhando os logs, a inspeção manual é sempre o método mais eficiente.

Kerberos
Kerberos é um protocolo de autenticação de rede que oferece um método extremamente seguro para autenticar clientes e servidores (entidades de segurança) de uma rede. Essas entidades de segurança usam uma autenticação baseada em chaves mestras e permissões criptografadas.

No modelo de protocolo Kerberos, todas as conexões de cliente/servidor começam com a autenticação. Por sua vez, cliente e servidor seguem uma sequência de ações que se destinam a verificar em uma ponta da conexão se a outra ponta é verdadeira. Se a autenticação tiver êxito, a configuração da sessão será concluída e uma sessão cliente/servidor segura será estabelecida.

Entre os principais benefícios da autenticação Kerberos estão:

* Autenticação mútua. O cliente pode validar a identidade da entidade de servidor e o servidor pode validar o cliente. Com essa documentação, as duas entidades são denominadas "cliente" e "servidor" mesmo que seja possível estabelecer conexões seguras de rede entre servidores.
* Permissões de autenticação seguras. São utilizadas somente permissões criptografadas, e as senhas nunca são incluídas na permissão.
* Autenticação integrada. Uma vez que o usuário faça logon, ele não precisa efetuar logon novamente para acessar algum serviço que suporte a autenticação Kerberos, pois a permissão do cliente não expira. Todas as permissões têm um prazo de validade determinado pelas diretivas do Kerberos que geram a permissão.


O Kerberos oferece um mecanismo para autenticação mútua entre entidades antes do estabelecimento de uma conexão de rede segura. Kerberos usa terceiros confiáveis, o KDC (Key Distribution Center), para facilitar a geração e a distribuição segura de permissões de autenticação e chaves de sessões simétricas. O KDC é executado como um serviço em um servidor seguro e mantém um banco de dados para todas as entidades de segurança de seu território. No contexto de Kerberos, um território é o equivalente a um domínio do Windows.

Mas também temos as desvantagens que precisam ser mostradas:

* Migrar senhas de usuário de um banco de dados UNIX padrão, como o /etc/passwd ou o /etc/shadow, para um banco de dados de senhas Kerberos pode ser entediante, pois não há um mecanismo automatizado para executar esta tarefa.
* O Kerberos tem apenas compatibilidade parcial com os Módulos de Autenticação Plugáveis (PAM), sistema usado pela maioria dos servidores Red Hat Enterprise Linux.
* O Kerberos presume que cada usuário é confiável e está usando uma máquina não confiável em uma rede não confiável. Seu objetivo principal é evitar que senhas não criptografadas sejam enviadas pela rede. No entanto, se alguém além do usuário legítimo tiver acesso à máquina que emite tickets usados para autenticação - chamada de centro de distribuição de chave (KDC) - o sistema de autenticação inteiro do Kerberos estará em risco.
* Para que um aplicativo use o Kerberos, sua fonte deve ser alterada para fazer as chamadas apropriadas às bibliotecas do Kerberos. Os aplicativos modificados desta maneira são considerados kerberizados. Para alguns aplicativos, isto pode ser bastante problemático devido ao tamanho ou design do aplicativo. Para outros aplicativos incompatíveis, as alterações devem ser feitas na maneira como o lado servidor e clientes se comunicam. Vale frisar que isto pode requerer uma programação extensiva. Aplicativos de código fechado que não têm suporte ao Kerberos por padrão são geralmente os mais problemáticos.
* O Kerberos é uma solução 'tudo ou nada'. Se ele for utilizado na rede, quaisquer senhas não criptografadas transferidas a um serviço não-kerberizado estão em risco. Portanto, a rede não se beneficia do uso do Kerberos. Para proteger uma rede com o Kerberos, devem-se utilizar versões kerberizadas de todos os aplicativos cliente/servidor que enviam senhas não criptografadas ou não usar nenhum aplicativo do tipo cliente/servidor.

Como tudo funciona
O firewall foi criado com regras para compartilhar a internet, lembrando que temos 2 interfaces de rede, sendo 1 para (rede local) e outra para receber a internet a (Ethernet). Nele, acrescentei as regras para redirecionamento, liberação e bloqueio de portas, liberação da rede local e loopback, bloqueio para rede externa, Nat, mascaramento da rede, redirecionamento da porta 80 para o proxy e o bloqueio do restante. Ainda estou estruturando da o firewall da melhor maneira, mas por enquanto é o necessário.

O Squid funciona como o gerente do acesso a internet, liberando o que for preciso e bloqueando o restante. Nele criei regras para o bloqueio de sites, palavras, streamings, downloads e regras para liberar os mesmos quando for preciso. Sua autenticação é feita no Active Directory via NTLM. Ele autentica pela senha do usuário logado na estação de trabalho.

Como o NTLM funciona
As etapas a seguir apresentar um esboço de autenticação NTLM não interativo. O primeiro passo fornece as credenciais NTLM do utilizador e só ocorre como parte da autenticação interativa (logon) do processo.

Autenticação Interactive apenas - um usuário acessa um computador cliente e fornece um nome de domínio, nome de usuário e senha. hash O cliente calcula a criptografia hash da senha e descarta a senha real.

plaintext - o cliente envia o nome de usuário para o servidor (no texto original).

nonce - o servidor gera um byte aleatório número 16, chamado de desafio ou nonce, e envia para o cliente. O cliente criptografa o desafio com o hash da senha do usuário e retorna o resultado para o servidor. Isso é chamado de a resposta.

O servidor envia os seguintes três itens para o controlador de domínio:

* Nome de usuário
* Desafio enviado para o cliente
* Resposta recebida do cliente


O controlador de domínio usa o nome de usuário para recuperar o hash da senha do usuário do banco de dados Security Account Manager. Ele usa este hash de senha para criptografar o desafio.

O controlador de domínio compara o desafio é criptografado computadorizada (na etapa 6) a resposta calculada pelo cliente (na etapa 4). Se forem idênticos, a autenticação é bem sucedida.

O kerberos funciona como segurança para essa autenticação, pois invés de se usar as senhas e usuários como em outros métodos de autenticação ele usa "Tickets". Vamos entender melhor.

Vejamos como o Kerberos trabalha. Usuários e serviços que utilizem o Kerberos possuem chaves armazenadas no AS. As chaves dos usuários são derivadas de senhas escolhidas por estes, e as chaves dos serviços são geradas aleatoriamente.

Para esta explicação, imaginemos que as mensagens são escritas em papel, e são criptografadas colocando-as em uma caixa-forte, associada a uma chave.

Primeiro o usuário envia uma mensagem ao AS: "Eu, J. Random User gostaria de falar com o servidor Foo".

Quando o AS recebe a mensagem, ele faz duas cópias de uma nova chave registrada. Estas chaves são chamadas de chaves de sessão. Elas serão usadas nas trocas diretas entre serviço e usuário.

Ele coloca uma das chaves de sessão na Caixa 1, junto com um pedaço de papel com o nome "Servidor Foo" escrito. A caixa é trancada com a chave do usuário (o AS conhece todas as chaves de usuário e todas as chaves de serviço).

Por que este papel aqui? Devemos nos lembra que a caixa é na realidade apenas uma mensagem criptografada, e que a chave de sessão é uma sequência randômica de bytes. Se a Caixa 1 somente contivesse a chave de sessão, o usuário não teria como reconhecer se a resposta veio do AS, ou não saberia se a decriptação teve sucesso. Pela adição da mensagem "Servidor Foo", o usuário (mais precisamente a aplicação do usuário) poderia saber se a caixa veio do AS, e se a decriptação obteve sucesso.

Ele coloca a outra chave de sessão em uma Caixa 2, junto com um pedaço de papel com o nome "J. Random User". Esta caixa é fechada com a chave do serviço.

Ele envia ambas as caixas ao usuário. Na versão 4 do Kerberos, a Caixa 2 era colocada (sem necessidade) dentro da caixa 1, mas na versão 5 isto foi corrigido. O usuário destranca a Caixa 1 com sua chave, extraindo assim a chave de sessão e o papel com o nome "Servidor Foo" escrito nele.

O usuário não consegue abrir a Caixa 2 (ela foi trancada com a chave do serviço, que só o AS e o serviço conhecem). Então ele coloca um pedaço de papel com a hora corrente numa Caixa 3, e tranca esta com chave de sessão, e envia ambas ao serviço.

O serviço abre a Caixa 2 com sua própria chave, extraindo a chave de sessão e o papel com "J. Random User" escrito nele. Ele abre a Caixa 3 com a chave de sessão para extrair o pedaço de papel com a hora corrente nele. Estes itens demonstram a identidade do usuário.

O timestamp é colocado na Caixa 3 para prevenir que alguém faça uma cópia da Caixa 2 (devemos nos lembrar que as caixas são na verdade mensagens eletrônicas) e a utilize para se passar pelo usuário mais tarde. Como os relógios da rede nunca são perfeitamente sincronizados, uma pequena margem (em geral 5 minutos) é permitida entre o timestamp e a hora atual. Além disto, o serviço mantém uma lista das autenticações recebidas recentemente para garantir que elas não foram reenviadas.

A chave de serviço é gerada aleatoriamente e armazenada em um arquivo especial chamado de SECRETE KEY FILE. O Kerberos assume que este é seguro, que ninguém pode copiá-lo e se passar pelo serviço.

No Kerberos, a Caixa 2 é chamada de ticket, e a Caixa 3 de authenticator. O authenticator tipicamente contém mais informações do que as listadas acima. Algumas destas informações são adicionadas em decorrência do fato de que as mensagens são eletrônicas (por exemplo, existem checksum). Pode existir também uma chave secreta usada para criptografar as mensagens que serão trocadas entre usuário e serviço após a autenticação, garantindo assim a privacidade.

Instalando o Kerberos
Estou partindo do princípio que na rede a ser implementada essa solução já exista um Active Directory e um servidor DNS instalado. O servidor DNS é de fundamental importância para o trabalho do Kerberos assim como um servidor de NTP. Então instale esse 3 serviços na rede e configure-os da maneira correta. Antes da instalação do cliente kerberos atente para os seguinte itens:

Antes de instalar qualquer coisa, verificar se o sistema operacional usado está atualizado para não haver nenhum problema como por exemplo: instalar o pacote apt-build que contém compiladores entre outros softwares.

Primeiro, edite o arquivo /etc/hosts colocando o nome e o ip do seu Domain Controller:

# vi /etc/hosts


Citação:

xxx.xxx.xxx.xxx nomedomicro@dominio.com.br nome do micro
127.0.0.1 localhost.localdomain localhost prx
Obs.: Onde está xxx.xxx.xxx.xxx coloque o ip servidor Active Directory.

Depois edite o seu resolv.conf e coloque o nome do servidor DNS:

# vi /etc/resolv.conf

Citação:
nameserver xxx.xxx.xxx.xxx
search nomedodomínio.com.br
Obs.: Onde está xxx.xxx.xxx.xxx coloque o ip servidor DNS.

Depois atualize o relógio do micro com o servidor Ntp da rede ou com um Ntp Server.

# ntpdate [nome do servidor ntp]
ou
# ntpdate ntp.cais.rnp.br (onde está nome do servidor é o servidor de Ntp da rede)


Para instalar o ntpdate use:

# apt-get install ntpdate

Depois vá até seu servidor DNS e crie um host para seu servidor Proxy com o ip do mesmo.

Agora vamos instalar o cliente Kerberos:

# apt-get install krb5-kdc krb5-config krb5-clients libpam-krb5 krb5-user


Obs.: Se for pedido o nome do domínio, disponibilize.

Depois é necessário alterar o aquivo /etc/krb5.conf:

# vi /etc/krb5.conf


Citação:
[libdefaults]

default_realm = ELETROMOTORES.COM.BR
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {

host = {
rcmd = host
ftp = ftp
}

plain = {
something = something-else
}

fcc-mit-ticketflags = true
}

[realms]

ELETROMOTORES.COM.BR = {
kdc = xxx.xxx.xxx.xxx
admin_server = xxx.xxx.xxx.xxx
default_domain = xxx.xxx.xxx.xxx
}

[domain_realm]

.eletromotores.com.br = ELETROMOTORES.COM.BR
eletromotores.com.br = ELETROMOTORES.COM.BR

[login]

krb4_convert = true
krb4_get_tickets = false

[logging]

kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
Obs.: Onde está xxx.xxx.xxx.xxx coloque o ip do Domain Controller e onde está ELETROMOTORES.COM.BR troque pelo domínio da rede respeitando maiúsculas e minúsculas.

Depois altere o arquivo /etc/krb5kdc/kdc.conf:

# vi /etc/krb5kdc/kdc.conf
Citação:
[kdcdefaults]

kdc_ports = 88

[realms]

ELETROMOTORES.COM.BR = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
kdc_ports = 88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm desnlyrealm des:afs3
default_principal_flags = +preauth
}
Obs.: Faça o mesmo do que no arquivo anterior troque ELETROMOTORES.COM.BR pelo domínio usado na rede.

Depois altere o arquivo /etc/default/krb5-kdc:

# vi /etc/default/krb5-kdc
Citação:
KRB4_MODE=disable
RUN_KRB524D=false
bs.: Isso é para desabilitar o Kerberos 4.

Em seguida, vamos iniciar a comunicação entre o Linux e o Domain Controller utilizando Kerberos.

# kinit administrator@ELETROMOTORES.COM.BR


Lembrando que estamos usando o domínio ELETROMOTORES.COM.BR como teste, então troque pelo domínio da sua rede.

Será solicitada a senha do usuário "administrator". Depois deste passo use o comando klist e veja se retorna isto:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@LAB.VIRTUAL
Valid starting Expires Service principal
02/22/07 14:25:47 02/23/07 00:25:47 krbtgt/LAB.VIRTUAL@LAB.VIRTUAL
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

Caso não seja este o retorno do comando, reveja os passos acima. Gostaria de salientar que encontrei diversos sites com abordagens da instalação do Kerberos no Linux e seus arquivos .conf, mas a única maneira que consegui realizar os testes foi com os arquivos .conf desta maneira descrita no projeto. Portanto se copiarem como está no projeto e só trocar o que for pedido correrá tudo certo. Para testes execute o comando kinit com outros usuários do domínio.

Em seguida vamos editar o arquivo nsswitch.conf:

# vi /etc/nsswitch.conf

Alterar as linhas:

De:

passwd: compat
group: compat

Para:
Citação:
passwd: compat winbind
group: compat winbind
Instalando o Winbind
Descrição dos componentes usados:

Samba

O Samba é um "software servidor" para Linux (e outros sistemas baseados em Unix) que permite o gerenciamento e compartilhamento de recursos em redes formadas por computadores com o Windows. Assim, é possível usar o Linux como servidor de arquivos, servidor de impressão, entre outros, como se a rede utilizasse servidores Windows (NT, 2000, XP, Server 2003). Este artigo faz uma abordagem introdutória ao Samba, mostrando suas principais características e um pouco de sua história.

Winbind
O Windbind faz a integração entre o Linux e o Domínio NT e toda a comunicação com o Domínio NT é realizada através do Samba, neste caso apenas o Samba-client é utilizado, ou seja, sem carregar o serviço smb. O winbind é responsável por fazer a autenticação usando o NTLM.

Na verdade dentro do pacote samba contém o winbind se fizéssemos o download do samba via wget precisaríamos apenas compilar para usarmos o winbind, mas eu preferi instalar os dois, ai fica a gosto do freguês. A instalação do SAMBA e do WINBIND é simples e pode ser feita via apt-get. Então, vamos por a mão na massa:

# apt-get install samba winbind

Após rodarmos o comando acima, será aberta uma tela de configuração, onde é solicitado o nome do domínio, o uso de senhas encriptadas, que OBRIGATORIAMENTE tem que ser SIM e também é necessário que o samba crie o arquivo de senhas.

Agora é necessário configurar o samba. Para isso, vamos fazer backup do arquivo original e depois vamos criar o nosso arquivo de configuração.

# mv /etc/samba/smb.conf /etc/samba/smb.original
# vi /etc/samba/smb.conf


O arquivo smb.conf deve conter OBRIGATORIAMENTE as linhas abaixo. Outras configurações podem ser feitas de acordo com a necessidade.
Citação:
[global]
workgroup = ELETROMOTORES
netbios name = SRV-PROXY
server string = PROXY SERVER
load printers = no
log file = /var/log/samba/log.%m
max log size = 500
realm = ELETROMOTORES.COM.BR
security = ads
auth methods = winbind
password server = 192.168.52.3
winbind separator = +
encrypt passwords = yes
winbind cache time = 15
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
local master = no
os level = 233
domain master = no
preferred master = no
domain logons = no
wins server = 192.168.52.3
dns proxy = no
ldap ssl = no
Lembre-se de trocar o domínio na 1º linha mas coloque só o nome do domínio sem .com.br e colocar o nome do micro que será o proxy na 2º linha. Onde está password server coloque o ip do Domain Controller e onde está o Wins Server coloque o ip do servidor Dns que no meu caso é o mesmo do Domain Controller.

Criado o arquivo de configuração, vamos reiniciar os serviços do Samba e do Winbind.

# /etc/init.d/samba stop
# /etc/init.d/winbind stop
# /etc/init.d/samba start
# /etc/init.d/winbind start


Não se esqueça de verificar os logs para saber se tudo iniciou corretamente.

Agora vamos colocar a máquina Linux no domínio Windows.

# net ads join -U administrator -S ELETROMOTORES


Após digitar a senha, que será solicitada, o retorno deve ser semelhante ao retornado abaixo:
Citação:
Using short domain name -- ELETROMOTORES
Joined 'PROXY' to realm 'ELETROMOTORES.COM.BR'
Pronto! A máquina que está rodando o LINUX já faz parte do Domínio Microsoft e pode ser vista no Active Directory Users and Computers.

Você também pode usar o seguinte comando:

# net rpc join ELETROMOTORES -S servidor -Uadministrador

Troque onde está ELETROMOTORES pelo seu domínio onde está SERVIDOR pelo nome do Domain Controller e ADMINISTRADOR por um usuário que tenha permissão de administrador ou pelo próprio mesmo.

Verificando se o Winbind está comunicando com o RPC Server:

# wbinfo -t

Retorno esperado: checking the trust secret via RPC calls succeeded

Listando usuários do AD:

# wbinfo -u


Listando os grupos do AD:

# wbinfo -g

Se não for esse o retorno, revise os passos acima.

Instalando o Squid
O Squid deve ser instalado pelo source, pois usaremos algumas opções específicas que não são utilizadas ao usar o apt-get. Recomendo a utilização da versão 2.5, pois quando utilizei a 2.6-STABLE não funcionou de acordo, mas não testei as versões mais novas.

Vamos ao que interessa!

Entrando no diretório de sources:

# cd /usr/src

Efetuando o download do pacote estável:

# wget http://www.squid-cache.org/Versions/...TABLE14.tar.gz
Descompactando:

# tar zxvf squid-2.5.STABLE14.tar.gz

Acessando o diretório do Squid/Source:

# cd squid-2.5.STABLE14


Compilando com as opções necessárias:

# ./configure --prefix=/usr --exec_prefix=/usr --bindir=/usr/sbin --sbindir=/usr/sbin --libexecdir=/usr/lib/squid --sysconfdir=/etc/squid --localstatedir=/var/spool/squid --datadir=/usr/share/squid --enable-auth="ntlm,basic" --enable-basic-auth-helpers="winbind" --enable-ntlm-auth-helpers="winbind" --enable-external-aclhelpers="winbind_group,wbinfo_group" --enable-delay-pools --enable-removal-policies --enable-underscores --enable-cache-digests --disable-ident-lookups --enable-truncate --enablearp-acl --with-winbind-auth-challenge

Instalando:

# make && make install

Criando o grupo para utilizar o Squid:

# groupadd proxy

Criando o usuário e colocando-o no grupo do Squid:

# useradd proxy -g Proxy

Dando permissão para o diretório do Squid:

# chown -R proxy.proxy /usr/share/squid
# chown -R proxy.proxy /var/spool/squid


Efetuando backup do arquivo de configuração original:

# cd /etc/squid/etc
# mv squid.conf squid.original


Limpando todas as linhas comentadas do squid.original e gerando o squid.conf:

# egrep -v "^#|^$" squid.original > squid.conf

Gerando o diretório de logs e liberando as permissões:

# mkdir /var/log/squid
# chown -R proxy.proxy /var/log/squid


Liberando a permissão no arquivo do Winbind:

# chown root.proxy /var/run/samba/winbindd_privileged


Reiniciando o Winbind:

# /etc/init.d/winbind stop & /etc/init.d/winbind start

Editando o arquivo squid.conf e colocando as linhas abaixo:

# vi /etc/squid/squid.conf
Citação:
http_port 3128
cache_effective_user proxy
cache_effective_group proxy
cache_log /var/log/squid/cache.log
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
auth_param ntlm program /usr/bin/ntlm_auth LAB/DC01 --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm use_ntlm_negotiate off
auth_param ntlm children 10
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 5 minutes
auth_param basic program /usr/bin/ntlm_auth LAB/DC01 --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Digite o LOGIN/SENHA
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 192.168.88.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl acesso proxy_auth REQUIRED # Solicitando a autenticação
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow acesso # Liberando usuários autenticados
http_access allow all
http_reply_access allow all
icp_access allow all
coredump_dir /usr/local/squid/var/cache
Lembrando que esse squid.conf é um exemplo somente, pode ser modificado conforme diversos sites na internet e conforme o site do próprio Squid.

Criando o cache e iniciando o Squid:

# squid -z
# squid &


Caso dê algum erro no procedimento, revisá-lo, mas geralmente dá-se erro na criação do cache se isso ocorrer de permissão e crie a pasta cache no /var/squid.

# mkdir cache /var/squid
# chown -R proxy.proxy /var/squid/cache


Para utilizar as regras baseadas em grupos do Active Directory, utilize as seguintes linhas no seu squid.conf:
Citação:
external_acl_type nt_group %LOGIN /usr/lib/squid/wbinfo_group.pl
acl AllowedWindowsGroups external nt_group GrupodoAD
http_access allow AllowedWindowsGroups
Depois de editar o seu squid.conf, não esqueça de recarregá-lo:

# squid -k reconfigure

Execute o Squid:

# squid

Configure o proxy no IE:

* Proxy: IP do seu servidor de proxy
* Porta 3128


Testes
Monitorando o arquivo de log de acessos do Squid com o comando "tail -f" vemos que o acesso foi liberado utilizando o usuário GK, que é o usuário logado na estação de trabalho.

# tail -f /var/log/squid/access.log

Instalação do Sarg
Instalando e configurando o Sarg:

# apt-get install update
# apt-get install sarg


Após o processo de instalação, o principal arquivo de configuração denominado 'sarg.conf' poderá ser localizado no diretório /etc/squid. Apenas para efeitos de backup, pois é sempre bom se ter o arquivo original em reserva para eventuais problemas que possam surgir.

Crie o seu próprio 'sarg.conf':

# touch sarg.conf

Edite o arquivo utilizando o seu editor de preferência (no meu caso o mcedit) e adicione o conteúdo abaixo ao mesmo:
Citação:
# Script para configuração do Sarg [sarg.conf]
# Desenvolvido por Júnior Jones de Menezes


# TAG: Linguagem
language Portuguese

# TAG: Caminho para o arquivo Access.log
access_log /etc/squid/access.log

# TAG: Gráficos
graphs yes
graph_days_bytes_bar_color green

# TAG: Título do Relatório
title "[Acessos a Internet]"

# TAG: Visual
font_face Arial
header_color #666666
header_bgcolor #EEEEEE
header_font_size 9px
title_font_size 11px
background_color #FFFFFF
text_color #666666
text_bgcolor #FFFFFF
title_color #009999

# TAG: Temporários
temporary_dir /tmp

# TAG: Diretório de Saída (Modifique de acordo com sua necessidade)

output_dir /var/www/squid-reports

# TAG: Top Users
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse

# TAG: URL Excluídas do Relatório
exclude_hosts /etc/squid/sarg.hosts

# TAG: Filtragem de Strings
exclude_string /etc/squid/sarg.strings

# TAG: Filtragem de Usuários
exclude_users /etc/squid/sarg.users

# TAG: Formato de Data
date_format e

# TAG: Limite de Logs [0 = Sem limites]
lastlog 0

# TAG: Mostrar IP
user_ip no

# TAG: Mostrar Usuário
usertab /etc/squid/sarg.usertab

# TAG: Gerando Relatório
remove_temp_files yes
index yes
overwrite_report yes
records_without_userid ignore
use_comma no
topsites_num 100
topsites_sort_order BYTES D
exclude_codes /etc/squid/sarg.exclude_codes
max_elapsed 28800000
report_typie topsites users_sites sites_users date_time denied auth_failures site_user_time_date
long_url no
show_successful_message no
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0 download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,d rv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp 3,avi,mpg,mpeg"
Algumas TAGs podem ser modificadas sem maiores problemas, pois tratam-se apenas de formatação dos relatórios, outras tratam-se dos caminhos de arquivos importantes ao bom funcionamento do Sarg e o restante diz respeito a forma que o mesmo vai funcionar, por isso, é de alta importância uma revisão com fins de verificar se existe alguma discrepância entre os dados do sarg.conf aqui sugerido e as características de seu servidor.

As TAGs apresentadas abaixo são exatamente as que indicarão ao Sarg que nos relatórios gerados por ele deverá aparecer ao invés do endereço IP, o nome do usuário ou máquina devidamente setado por você.

Citação:
# TAG: Mostrar IP
user_ip no

# TAG: Mostrar Usuário
usertab /etc/squid/sarg.usertab
Logo após o arquivo criado e salvo, procure no mesmo diretório (/etc/squid) um arquivo denominado 'sarg.usertab', se ele não existir, fique calmo (hehehe), crie-o você mesmo. Este arquivo será altamente importante para que nosso trabalho tenha o devido sucesso. É nele que o administrador irá setar os IPs das máquinas e o nome equivalente as mesmas. O conteúdo a ser adicionado no mesmo é exemplificado abaixo, sendo mudado de acordo com sua rede.

Exemplo:
Citação:
192.168.52.2 gabriel
192.168.52.3 daniel
192.168.52.4 rafael
Esta é a forma correta do arquivo, qualquer outra forma não dará o resultado esperado. Na ÚLTIMA LINHA do arquivo 'sarg.usertab' adicione o caractere '#'.

Como visto acima, é o 'sarg.usertab' que possibilita ao Sarg mostrar nomes amigáveis ao invés de endereços IPs, fator muito útil em redes de grande porte e não menos importante em pequenas redes.

Gerando os relatórios

Criaremos agora o script que irá orientar ao Sarg sobre o total de dias que se deseja apresentar nos relatórios. Crie um arquivo dentro do diretório /etc/squid denominado 'sarg.sh':

# touch diario.sh

Dê permissão total:

# chmod 777 sarg.sh


Para gerar os relatórios diariamente, insira o conteúdo abaixo no arquivo recém-criado (/etc/squid/sarg.sh):
Citação:
#!/bin/bash
INICIO=$(date --date "0 days ago" +%d/%m/%Y)
FIM=$(date --date "0 day ago " +%d/%m/%Y)
sarg -f /etc/squid/sarg.conf -d $INICIO-$FIM -p -x -z
Para os relatórios semanalmente crie outro arquivo com o conteúdo:

# touch semanal.sh
Citação:
#!/bin/bash
INICIO=$(date --date "7 days ago" +%d/%m/%Y)
FIM=$(date --date "0 day ago " +%d/%m/%Y)
sarg -f /etc/squid/sarg.conf -d $INICIO-$FIM -p -x -z
Para gerar os relatórios mensalmente outro arquivo:

# touch mensal.sh

Citação:
#!/bin/bash
INICIO=$(date --date "31 days ago" +%d/%m/%Y)
FIM=$(date --date "0 day ago " +%d/%m/%Y)
sarg -f /etc/squid/sarg.conf -d $INICIO-$FIM -p -x -z
Muitos usam o crontab para gerar os relatórios, mas eu os gero executando os executáveis quando eu quero pois minha rede é pequena e não preciso dos relatórios sempre. Mas fica a dica.

Instalação do Iptraf
Esse não tem segredo, mas muito bom para administradores de rede conforme orientação do próprio projeto. Então vamos lá, para instalá-lo:

# apt-get install iptraf


Para usá-lo:

# iptraf

Conclusão
Existem diversos sites com explicações e maneiras de se instalar o Squid com autenticação, mas preferi essa por ser considerada mais segura e de maior facilidade. Espero ter ajudado a muitos que igual a mim montar um servidor como o descrito. Gostaria de agradecer a todos os autores e sites descrevo na bibliografia.
Postagens mais antigas → Página inicial
Copyright © Hc8 | Powered by Xandao Design by Xandao86 | Xandao86