Pedro Filho

Blog do programador e tecnico em redes ….

Arquivo de novembro de 2009

HASH com senha – HMAC

Dias atrais precisei criar um algoritmo para verificar se um form realmente esta vindo de uma pagina especifica, usando MD5 para isso como hoje existem alguns sites com dicionarios inteiros de hash que facilita a vida dos malas, pensei em concatenar a string com outra que seria secreta para ficar diferente.

Mais para minha surpresa pesquisei no site do php sobre as funções de hash nativas e encontrei um recurso bem interessante chamado HMAC ( Hash-based Message Authentication Code ) que permite você adicionar um código de autenticação ao hash final.

Como ele é bem simples, irei colocar abaixo um codigo em php e mais abaixo a saida do codigo:

// varios  - md5, sha1, sha256, crc32 e ripemd160 com e senha senha e hmac
echo “<br><b>Algoritmo MD5</b><br>”;
echo hash(‘md5′,’pedro’,”);
echo “<br>”;
echo hash_hmac(‘md5′,’pedro’,’senha’);
echo “<br>”;
echo “<br><b>Algoritmo SHA1</b><br>”;
echo hash(’sha1′,’pedro’,”);
echo “<br>”;
echo hash_hmac(’sha1′,’pedro’,’senha’);
echo “<br>”;
echo “<br><b>Algoritmo SHA256</b><br>”;
echo hash(’sha256′,’pedro’,”);
echo “<br>”;
echo hash_hmac(’sha256′,’pedro’,’senha’);
echo “<br>”;
echo “<br><b>Algoritmo crc32</b><br>”;
echo hash(‘crc32′,’pedro’,”);
echo “<br>”;
echo hash_hmac(‘crc32′,’pedro’,’senha’);
echo “<br>”;
echo “<br><b>Algoritmo ripemd160</b><br>”;
echo hash(‘ripemd160′,’pedro’,”);
echo “<br>”;
echo hash_hmac(‘ripemd160′,’pedro’,’senha’);
echo “<br>”;

<?php

// varios  - md5, sha1, crc32 e ripemd160 com e sem senha em hmac

echo “<br><b>Algoritmo MD5</b><br>”;

echo hash(‘md5′,’pedro’,”);

echo “<br>”;

echo hash_hmac(‘md5′,’pedro’,’senha’);

echo “<br>”;

echo “<br><b>Algoritmo SHA1</b><br>”;

echo hash(’sha1′,’pedro’,”);

echo “<br>”;

echo hash_hmac(’sha1′,’pedro’,’senha’);

echo “<br>”;

echo “<br><b>Algoritmo crc32</b><br>”;

echo hash(‘crc32′,’pedro’,”);

echo “<br>”;

echo hash_hmac(‘crc32′,’pedro’,’senha’);

echo “<br>”;

echo “<br><b>Algoritmo ripemd160</b><br>”;

echo hash(‘ripemd160′,’pedro’,”);

echo “<br>”;

echo hash_hmac(‘ripemd160′,’pedro’,’senha’);

echo “<br>”;

?>
saida do codigo acima:

Algoritmo MD5
c6cc8094c2dc07b700ffcc36d64e2138
a1d018ffaf490f6a5b92742ef3ccd173

Algoritmo SHA1

4410d99cefe57ec2c2cdbd3f1d5cf862bb4fb6f8
5c82ffca9902349d22bf36ab133b40cbb2f2ea76

Algoritmo crc32

e86f00aa
0f6fd579

Algoritmo ripemd160

7755874530352e4d9fce481fbf92ac0e46581b16
a2a25fa6891b36bbd4761cf84ad01a7a0ceee458

VPN com Mikrotik

VPN com Mikrotik

Uma Rede Particular Virtual (Virtual Private Network – VPN)é uma rede de comunicações privada normalmente utilizada por umaempresa ou um conjunto de empresas e/ou instituições, construída emcima de uma rede de comunicações pública (como por exemplo, a Internet). O tráfego de dados é levado pela rede pública utilizando protocolos padrão, não necessariamente seguros.

Criação de VPN entre matriz e filial de uma empresa usando servidores Mikrotik nas duas pontas.

Levando em consideração a seguinte estrutura:

Matriz:

* Rede Local: 192.168.0.X/24
* Ip local do Servidor: 192.168.0.1
* Ip Internet do Servidor: 201.200.200.200

Filial:

* Rede Local: 192.168.10.X/24
* Ip local do Servidor: 192.168.10.1
* Ip Internet do Servidor: 189.50.1.200

VPN:

* Faixa IPs: 10.0.0.X/24

Configurações
Partindo do ponto de que os dois servidores já estão devidamente configurados e navegando na Internet repassando a navegação para redeInterna e seus clientes via NAT, iremos configurar o Server VPN namatriz.

Antes de mais nada, devemos habilitar duas opções no menu Ip> firewall > Service Ports, clique com o botão direito eselecione enable em “GRE” e “PPTP”.

Abra o servidor Mikrotik pelo winbox, acesse o menu ppp. Naprimeira guia Interfaces clique na opção PPTP Server marque a opção enable.

Na segunda guia, “secrets”, crie um usuário para conectar ao Server pela VPN:

Usuário: teste
Senha: teste
Local address: 10.0.0.1
Remote address: 10.0.0.2

Dessa forma seu servidor estará preparado para ouvir e autenticar requisições PPTP. Ainda falta configurar as rotas nesseservidor para que as máquinas internas possam ver a outra rede e vice-versa. Vá em Ip > routes e crie as duas rotas abaixo:

Primeira Rota: 10.0.0.0/24 > gateway 192.168.0.1
Segunda Rota: 192.168.10.0/24> Gateway 10.0.0.2

A rota 10.0.0.0/24 apontando para o gateway 192.168.0.1 indicaque a rede usada pela vpn será roteada pelo ip 192.168.0.1 que é daplaca interna do servidor e a rota 192.168.10.0/24 indica que a rede interna do servidor da filial será roteada pelo ip remoto que o servidor da filial receberá quando conectar.

Configuramos o servidor da matriz, agora vamos para o servidor da Filial:

Vá em PPP, na aba Interfaces crie o usuário para se conectar conforme abaixo:

Server: 201.200.200.200
user: teste
password: teste

Clique em ok e logo o usuário já se conectará ao outro servidor, dessa forma você já poderá testar do próprio servidor Mikrotik se está pingando para o IP de alguma maquina na rede internada matriz.

Para que suas máquinas na Filial com a faixa 192.168.10.X possam acessar as máquinas da matriz você terá que criar a mesma estrutura de rotas que foi criada para na matriz só que direcionandopra sua rede interna, abaixo:

Primeira Rota: 10.0.0.0/24 > gateway 192.168.10.1
Segunda Rota: 192.168.0.0/24> Gateway 10.0.0.1

Bom pessoal, com isso estaremos com a vpn funcionando nos dois pontos caso queiram adicionar mais pontos é só seguir o mesmo raciocínio. Outra coisa, você pode também criar um usuário para acessarde qualquer máquina Windows diretamente em rede assistente para novas conexões e marcar a opção conectar-me a uma vpn.

Vejo hoje muitos provedores utilizando faixas de ip que não são reservadas para redes internas, e isso é um erro pois a internet é constituida por endereços IP versão 4, quatro sequencias decimais de 0 a 255 são usadas para isso. Acontece que para haver comunicação numa rede cada computador deve possuir um endereço único, como o número de computadores é muito superior a de endereços válidos disponíveis, foram reservados faixas para uso privado livre, estes endereços, listados abaixo, não estão autorizados a trafegar na internet e para isso é necessário empregar NAT para que computadores com estes ips:

169.254.0.0/16
192.168.0.0/16
10.0.0.0/8
172.16.0.0/16

Usar ips fora da faixa RFC1918 resulta nos seguintes problemas:
- Se você colocar o ip 40.40.40.40 em um computador na rede local, este computadores estará usando um ip de algum servidor existente na internet, logo o site ou serviço que use este ip na internet não poderá ser acessado.
- Softwares de servidores, roteadores, access points são projetados obedecendo as regras internacionais (RFC’s), infringí-las pode resultar em mal funcionamento envolvendo estes equipamentos.

Outra coisa que observo sempre é duvidas a respeito de mascaras de rede, e coloquei abaixo uma lista de quantos hosts cada rede pode ter com determinada mascara:

mascara – numero de hosts
8/255.0.0.0 – 16.777.216
16/255.255.0.0 – 65.536
20/255.255.240.0 – 4096
21/255.255.248.0 – 2048
22/255.255.252.0 – 1028
23/255.255.254.0 – 512
24/255.255.255.0 – 256
25/255.255.255.128 – 128
26/255.255.255.192 – 64
27/255.255.255.224 – 32
28/255.255.255.240 – 16
29/255.255.255.248 – 8
30/255.255.255.252 – 4
31/255.255.255.254 – 2
32/255.255.255.255 – 1

Fica ai a dica ….