TUTORIAL: IMPLEMENTAÇÃO DE UMA REDE MESH DE HOTSPOT MIKROTIK VIA AUTENTICAÇÃO RADIUS

Trabalho desenvolvido pelos Alunos da Escola Superior da Amazônia (Esamaz):

FELIPE MORAES FREITAS
FERNANDO HENRIQUE A. DE ARAÚJO
MOACIR EDILSON T. FERREIRA

Orientado pelo Prof. Thiago Moreira.

Antes de iniciarmos nosso projeto de rede Mesh vamos ver uma imagem do que vamos produzir
Imagem 1
De início vamos configurar o Mikrotik de Borda (MK1) que terá uma das suas interfaces ligada ao roteador CISCO 1800 series, a interface ETHER1 será renomeada para LINK e receberá um IP fixo em quanto à interface ETHER2 será renomeada para LAN e também receberá um IP fixo.
Nas configurações do Mikrotik pelo Winbox acesse o menu “Interfaces” na janela “Interfaces List” dê um duplo click na ether1 e renomeie o nome para LINK, em seguida faça na segunda interface ether2, dê um duplo click e renomeie para LAN.  
Imagem 2
No segundo passo vamos atribuir um IP para cada interface renomeada.
No menu ao lado acesse a aba “IP” >>  “Address List “.
Dê um click no sinal de + e coloque os IP’s para cada interface e salve como na imagem abaixo:
Imagem 3
Em seguida criamos uma range de IP’s que será distribuída pela nossa rede LAN
Faça como na imagem 4 em seguida acompanhe a configuração na imagem 5 colocando em “Nome” o nome da range de “pool-mesh” e address de 172.16.0.2-172.16.0.14 salve e saia.  Nesta etapa você acabou de criar uma ranges de IP’s para os clientes.
Imagem 4


Imagem 5
Com a range criada vamos partir para a criação do DHCP da rede LAN o que ficará responsável por distribuir os IP’s aos hosts ligada a essa rede. Veja na imagem 6 e 7 a criação do DHCP.
Imagem 6

Imagem 7
Vamos colocar o DNS (Domain Name System), parte essa responsável por resolver nomes de domínios da rede de endereços IP para nome e nome para endereço IP. Seguem abaixo as configurações na imagem 8, simples e fácil.
Acesse a aba IP >> DNS:
Para os servers defina: “8.8.8.8” e “8.8.4.4” >> Aplly e OK
Imagem 8
Em sequência fazemos o “Network Address Translation(NAT)”, este responsável por fazer a conversão de um endereço IP inválido para público e público para inválido usando o masquerade . Acompanhe as configurações nas imagens 9 e 10.
IP >> Firewall >> NAT >> dê um click no sinal de + e na aba General em Out. Interface configure para LINK e na aba Action use masquerade.
Imagem 9
Imagem 10
Por último no roteador de borda criaremos a rota que nos permitirá uma conexão com a internet:
No menu IP >> Routes, click no sinal de +, em “Dst Address” direcione para “0.0.0.0/0” em Gateway direcione para “200.20.0.1” em “Distance” defina o valor “1”. Apply e OK
Imagem 11
Agora iremos testar nossa conectividade:
Acesse a aba “New Terminal” e faça um ping para o google.com como na imagem 12, se tudo ocorreu bem até aqui, então podemos ir para a segunda parte do nosso projeto.
Imagem 12

Segue abaixo as linhas de comando para quem gosta de trabalhar dessa forma:
interface set ether1-gateway   name=LINK
interface set ethet2                  name=LAN
ip address add address=200.20.0.2 netmask=255.255.255.252 interface=LINK
ip address add address=172.16.0.1 netmask=255.255.255.240 interface=LAN
ip dns set servers=8.8.8.8,8.8.4.4 allow-remote-requests=yes
ip pool add name=pool-mesh ranges=172.16.0.2-172.16.0.14
ip dhcp-server add name=dhcp-lan address-pool=pool-mesh interface=LAN disable=no             
ip dhcp-server network add address=172.16.0.0/28 gateway=172.16.0.1
ip route add dst-address=0.0.0.0/0 gateway=200.20.0.1 distance=1
ip firewall nat add chain=srcnat out-interface=LINK action=masquerade


Configuração de um RB433AH Wireless (MK2)
Esta é a parte que precisa de mais atenção, pois é a RB433AH master que fará a distribuição do IP para a rede WiFi e é o principal equipamento que fará a negociação de autenticação com o servidor RADIUS, e onde também estará configurado o Hotspot.
Na imagem 13 colocamos um IP fixo para cada interface, acesse IP>> Address e na ether1 que estará ligada ao switch defina o seu IP para 172.16.0.4/28. Na segunda interface a wlan1 definimos com o IP 10.0.0.1/24, perceba que já colocamos a imagem da configuração do DNS nesse caso o IP do roteador de borda MK1.
Imagem 13
Acesse o menu “Interfaces”, dê um duplo click na interface wlan1 e configure-a da seguinte forma: “Mode = ap-bridge”, “Band = 2GHz-B/G/N”, “Frequêncy = 2437 (o equivalente ao canal 6)”, “SSID = nome_da_rede”, “Radio Name= Dê um nome para a identificação do seu rádio” click no botão Apply depois Enable.
Obs.: É importante fazer o escaneamento para escolher o canal mais adequado a ser usado, para isso basta clicar no botão “Scan...” e procurar por canais que estejam sendo usado. Para que não haja interferência entre as redes escolha um canal que não esteja em uso. Caso nenhum canal esteja sendo usado, escolha um de sua preferência.
Imagem 14
Em seguida vamos criar uma Bridge:
Acesse o menu “Bridge” e click no sinal de “+” para adicionarmos a interface, Aplly e OK. Na aba “New Interface” no campo “Name” defina um nome para sua bridge, nesse caso colocamos o nome de “bridge-mesh” depois click em Apply e OK.
Na aba “Ports” click no sinal de “+”, em interface selecione a interface que fará a bridge, nesse caso a wlan1. No campo “Bridge” selecione a bridge anteriormente criada, no caso “bridge-mesh”. Apply e OK.
Imagem 15

Acesse a aba WDS da Interface “wlan1” e defina as seguintes configurações: “WDS Mode = dynamics mesh”, “WDS Default Bridge = bridge-mesh”, caso esteja marcada, desmarque a opção “WDS Ignore SSID”.
Imagem 16
Como aprendemos anteriormente a criar ranges e configurar o DHCP-server, vamos fazer isso também para a interface wlan1 que disponibilizará a distribuição de ip’s para os clientes que utilizaram a rede WiFi.
 Segue abaixo a imagem pronta:
OBS 1: Crie primeiro as ranges de IP como o nome de pool-mesh.
OBS 2: Na janela DHCP-server a interface selecionada foi a “bridge-mesh” e em “Address Pool” a “pool-mesh” criada que é 10.0.0.10-10.0.0.254
Imagem 17
Em seguida vamos fazer uma rota para os pacotes e o masquerade.
Na Imagem 18 a rota para conexão com a internet, no campo gateway coloque o IP da RouterBoard de borda, no caso o MK1, ele é quem será o nosso  gateway. Enquanto na Imagem 19 as imagens da configuração do firewall NAT.
Imagem 18
Imagem 19
Na janela “NAT-Rule” na aba “General” em “Chain” defina “srcnat”, “Out. Interface” a ether1 depois vá à guia “Action” escolha “masquerade” click em “Apply” e “OK”.
Nos próximos equipamentos que farão parte do Mesh vamos chamar de “slave”, sua forma de configuração é mais simples. Vejas os passos na imagem abaixo, não sendo necessário configurar o DNS, DHCP-server, rota e firewall. Acesse o próximo RB433AH (MK3) que fará parte da rede em malha e colocaremos um ip estático na sua interface, lembrando que a primeira RB433AH esta com ip de 10.0.0.1 essa segunda RB deve ser 10.0.0.2 para não gerar conflitos de ip’s.


Imagem 19
Imagem 20
Imagem 21
Obs.: Na Imagem 20 e Imagem 21 criamos uma interface bridge chamada “bridge-mesh” e atribuímos a interface wlan1 a ela.
Em seguida vamos configurar a aba wireless igual à primeira RB433AH que fizemos como o mesmo SSID, Band, Frequency, desmarque sempre a opção “Default Forward” como na primeira RB. No campo “Radio Name” pode ser definido como AP-02 para diferenciar dos outros AP’s. Habilite a interface e acesse a guia “WDS”, vamos colocar a interface “mesh-bridge”. Acompanhe a Imagem 22 e Imagem 23 abaixo.

Imagem 22

Imagem 23

Caso esteja marcada, desmarque a opção “WDS Ignore SSID”.
Após confirmar as configurações acima é possível que os dois equipamentos já estejam associados, ou seja, um comunicando-se com o outro.
Faça isso com outros equipamentos (MK4, MK5, etc..), eles se associarão ao RB433AH “master”, não se esqueça de ir definindo sempre IP’s diferentes na wlan1 dos “slave”.
As imagens 24 e 25 mostram a associação entre os equipamentos.
 Imagem 24

Imagem 25
Vamos configurar o servidor RADIUS responsável pela autenticação dos usuários que irão usar a rede WiFi.
Suponhamos que já tenha um servidor Linux pronto pra receber os pacotes necessários para a configuração do servidor RADIUS. 
Com o usuário root vamos instalar os pacotes necessários para criarmos o nosso servidor de autenticação, veja a imagem 26 abaixo:
  Imagem 26
Em seguida iremos definir uma senha para o usuário Mysql, para facilitar definimos nossa senha com 123*abc como na imagem 27, a Imagem28 é apenas para confirmar a senha digitada anteriormente por segurança.
                                     Imagem 27                                                                    Imagem 28
Em seguida vamos fazer a instalação do phpmyadmin que serve para interagir diretamente com a base de dados MySql em uma interface gráfica amigável para o administrador de rede.
Passo 1: Escolha o apache2,
Passo 2: Quando escolhida a opção “SIM” indica que vamos ligar a base de dados mysql ao phpmyadmin em seguida será apresentada as telas para a senha do usuário da base de dados que é 123*abc, confirme a senha nas etapas dos passos 4 e 5.
 Imagem 29
Imagem 30
Após toda a instalação dos pacotes vamos entrar no diretório onde se encontra os arquivos de configuração do freeradius.
 Imagem 31
Listando todo o diretório com o comando “ls” é apresentado todos os arquivos de configuração que fazem parte do freeradius.
Em seguida vamos transportar todas as tabelas do freeradius para dentro do Mysql-server.
1º Passo abra o navegador de qualquer máquina que esteja na estação do servidor Linux digitando HTTP://ip_do_servidor/phpmyadmin
Coloque o usuário e senha do phpmyadmin que no nosso caso é “user: root e password: 123*abc” veja a imagem 32 abaixo:
 Imagem 32
Em seguida crie um banco de dados onde este irá receber todas as tabelas do freeradius-mysql.
Passo 1: Acesse a aba “Banco de Dados”
Passo 2: No campo “Criar novo Banco de Dados” criamos um banco chamado “radius”
Passo 3: Click no botão “Criar”.
 Voltamos ao servidor Linux e digitamos as seguintes linhas de comando (veja imagem 34) para transferir todas as tabelas do freeradius-mysql, uma chamada de “eschema.sql” e outra chamada de “nas.sql”.
Obs.: Estamos apenas migrando as tabelas, porém é preciso configurar cada uma das tabelas depois.
 Imagem33
Imagem34
Vamos preparar alguns *.conf do freeradius  para que o freeradius e o MySql possam trocar informações, dentro do diretório “/etc/freeradius/”, vamos procurar pelo arquivo “radiusd.conf”, com seu editor de arquivos preferido abra o radiusd.conf.
pico radiusd.conf
Procure pelo campo “$INCLUDE     sql.conf” e descomente, removendo o símbolo “#” que se encontra no inicio da linha.
#$INCLUED               sql.conf
$INCLUDE                 sql.conf
Salve e saia.
 Imagem 35
Em seguida editamos o arquivo “sql.conf”, procure pelo campo  login  =  “radius” e  password =  “radpass” troque-o no campo login o “radius” pelo usuário do banco de dados que é o “root” e no campo password a senha de “radpass” para a senha do usuário do banco de dados “123*abc”, OBS1: O usuário e senha devem estar entre aspas ”  “.
Veja a imagem36.
Imagem36
Agora vamos colocar os equipamentos que farão consulta ao servidor RADIUS, esses equipamentos nós os chamamos de Network Autentication Server (NAS). Vamos cadastrar o equipamento tanto no arquivo “clients.conf” quanto no mysql, nesse caso vamos usar nos dois por modo de prevenção. A imagem 37 nos mostra o ip do RB433AH Mikrotik. O administrador pode colocar tanto o ip do Access Point individual quanto uma faixa de ip’s, com senhas variadas. Vejas os exemplos que você pode fazer.
************** Exemplo 1: INDIVIDUAL *************************************
client  172.16.0.4       {
            secret              =123465
            shortname       =AP-01(Access-Point)
}
***********************************************************************                      
                       
***************** Exemplo 2: A REDE TODA **********************************
client               172.16.0.0/28  {
            secret              = 123456
            shortname       =TODO-A-REDE
}
***********************************************************************
*************** Exemplo 3: NDIVIDUAL COM SENHAS DIFERENTE *************
client               172.16.0.4       {
            secret              =123456
            shortname       = Access-Point-01
}
cleint               172.16.0.5       {
            secret              = 123*abc
            shotname        =Access-Point-02
}          
************************************************************************
 Imagem37
Ainda faltam mais dois arquivos de texto para ser alterado um “default” outro “inner-tunnel” ambos encontram-se no diretório “/etc/freerdius/sites-available/”
No arquivo “default” abaixo da linha “authorize” procure por sql e descomente, mais abaixo procure por “accounting” e também descomente as linhas sql. Salve e saia do arquivo de texto default.
#pico /etc/freeradius/sites-available/defaul
authorize {
        #  Look in an SQL database.  The schema of the database
        #  is meant to mirror the "users" file.
        #
        #  See "Authorization Queries" in sql.conf
             sql     
accounting {
        #
        #  Create a 'detail'ed log of the packets.
        #  Note that accounting requests which are proxied
        #  are also logged in the detail file.
        #  See "Accounting queries" in sql.conf
            Sql
O segundo arquivo de texto é o “inner-tunner”
#pico /etc/freeradius/sites-available/inner-tunner
authorize {
        #  The chap module will set 'Auth-Type := CHAP' if we are
        #  handling a CHAP request and Auth-Type has not already been set
        Chap
        #  Look in an SQL database.  The schema of the database
        #  is meant to mirror the "users" file.
        #  See "Authorization Queries" in sql.conf
           sql
Salve e saia do arquivo de texto “inner-tunner”.

       Vamos voltar ao phpmyadmin e editar as seguintes tabelas (nas,radcheck, radgroupcheck, radusergroup)
Começaremos pelo “nas”, confira a imagem 38 e veja como cada campo foi configurado.
Em “nasname” colocamos o ip da RB433AH ou qualquer host que fará a consulta ao servidor radius, no campo “shortname” uma identificação do equipamento que está fazendo a consulta no servidor RADIUS, no campo “ports” a porta que o serviço radius trabalha para autenticação (1645 ou 1812) e para contabilidade (1646 ou 1813), por ultimo em “secret” a senha para a autenticação, para fins didáticos colocamos senhas fáceis, depois mande executar.
 Imagem 38
Em seguida iremos cadastrar os usuários que terão permissão para utilizar a rede WiFi, lembrando que no passo acima cadastramos o equipamento que fará a consulta ao servidor RADIUS desta vez será o usuário que fará a consulta ao servidor, caso um usuário não esteja cadastrado seu acesso a rede WiFi será negada.
 Imagem 39
Fizemos um cadastrado com um usuário chamado “edikoston” com a senha “123456”, crie mais um usuário, um para a rede WiFi e outro para o Hotspot, nesse caso criamos mais um usuário chamado edilson com a senha 123*abc este usuário edilson usaremos para logar no Hotspot.
Criaremos um grupo na tabela “redusergroup” camado de banda larga depois setamos o usuário edikoston nesse grupo, veja a Imagem 40.

Imagem 40
Agora vamos inserir valores na tabela “redgroupcheck”, coloque os valores da mesma forma que você vê na Imagem 41, deve-se observar cada campo.
 Imagem 41
Com a BD do radius configurado vamos configurar o Hotspot na RB433AH para receber a autenticação no servidor RADIUS.
Voltamos ao Winbox do Mikrotik para fazermos a configuração do RADIUS na RB433AH, marque apenas os serviços que farão a autenticação ao servidor RADUIS, o nosso projeto é apenas voltado para o Hotspot e Wireless, coloque o ip do servidor RADIUS e a senha de autenticação do NAS “123456”, em caso de dúvida lembre-se que é a senha definida no arquivo “clients.conf” ou na tabela “nas” do mysql.

Imagem 42
A criação do Hotspot é fácil e simples não há tanto segredo, segue abaixo os passos para a criação do Hotspot.
Imagem 43
 Imagem 44
Obs.: A interface selecionada no Hotspot é a interface “bridge-mesh”.
Imagem45
Obs.: Criamos um domínio chamando RC5NA.local, porém você pode criar o de sua preferência.
Na aba “Server Profiles” dê um duplo click no domínio RC5NA.local, acesse a aba Login e marque as opções “HTTP CHAP”, “HTTP PAP” e “Cookie”.
Na aba “Radius” marque a opção “Use Radius” e defina “19 (Wireless-802.11)” em “NAS Port Type”. Veja nas imagens 46 e 47.
 Imagem 46
Imagem 47
Até aqui completamos a configuração do Hotspot para interagir com o RADIUS, agora vamos para a configuração de autenticação da rede WiFi.
Partindo para a criação de modo de autenticação na rede WiFi utilizando o protocolo EAP (Protocolo de Autenticação Extensível) para que o equipamento do usuário possa participar da rede. Os passos abaixo mostram a configuração simples e fácil:

Imagem 48
Assim como na Imagem 48 habilite o WAP PSK e o WPA2 PSK, defina uma chave compartilhada (WPA e WPA2 Pre-Shared Key) para manutenção do administrador de rede, sempre que o administrador necessitar fazer alteração ou mesmo entrar na RB433AH sem precisar passar pelo servidor RADIUS.
Na aba “Radius” marque as opções “MAC Accounting” e “EAP Accounting”. Apply e OK.

Imagem 49
Em seguida partimos para última parte do nosso projeto, que é configurar a máquina do usuário final e essa configuração será realizada em uma maquina Windows 7 Ultimate.
Segue o passo-a-passo desta configuração da Imagem 50 até a Imagem 54.

Imagem 50

Imagem 51

Imagem 52

Imagem 53

Imagem 54

Obs.: Se a opção “Validar Certificado do Servidor” estiver marcada, desmarque-a. No passo da Imagem 55 desmarque também a opção “Usar automaticamente meu nome e senha de logon do Windows (e o domínio, se houver)” confirme esta etapa e você voltará para a tela “Propriedades EAP protegidas” confirme novamente.

Imagem 56

Imagem 57

Imagem58
 
Imagem 59

     Imagem 60
Obs.: Usaremos o usuário “Edilson” com a senha “123*abc” criada no servidor RADIUS.