Aumente o nível de segurança da WiFi com Raspberry Pi 7

Neste post nós vamos conhecer um modo eficiente e simples de aumentar a segurança da WiFi. Em relação aos meios de conexão (camada física) podemos dizer que a rede sem fio é menos segura que a rede cabeada. Fazendo analogia com uma casa, a rede cabeada seria a porta do quarto e a rede sem fio seria o portão.

Ou seja, somente quem está dentro da casa – geralmente moradores e conhecidos – tem acesso a rede cabeada (porta do quarto), por outro lado, quem estiver do lado de fora e próximo da casa – geralmente desconhecidos – poderá ter acesso a rede sem fio (portão). Sendo esse um paradigma da rede sem fio, foi necessário implementar protocolos de segurança para minimizar possíveis tentativas de acesso não autorizado.

É importante entender que no contexto da rede WiFi, segurança significa duas coisas: controlar quem pode se conectar a sua rede (autenticação) e proteger as informações que trafegam pela rede – através das ondas de rádio – contra a visualização não autorizada (criptografia).

Dito isso, o principal protocolo de segurança da WiFi é o WPA2, desconsiderei intencionalmente WEP e WPA, por serem inseguros e obsoletos – não deveriam ser usados. O WPA2 possui dois métodos de autenticação:

WPA2 Personal (WPA2-PSK), também conhecido como chave pré-compartilhada (pre-shared key), onde uma única senha (chave) é compartilhada entre todos os usuários da rede sem fio.

Além do inconveniente de uma única senha para múltiplos usuários, é suscetível a ataques do tipo dicionário (dictionary attack) e força bruta (brute force), ataques amplamente divulgados na Internet mas possivelmente ineficazes para senhas consideradas fortes (M1nh@5enh@+). É provavelmente o mais utilizado em residências e pequenas empresas.

WPA2 Enterprise (WPA2), também conhecido como 802.1X, onde cada usuário da rede sem fio possui uma identidade única, mais precisamente nome de usuário e senha. Eliminado o inconveniente de uma única senha para múltiplos usuários e elevando o nível de dificuldade para possíveis ataques que tendem a ser mais complexos e difíceis de executar.

Precisa de um servidor RADIUS – um protocolo de rede que basicamente autentica usuários antes de permitir o acesso a uma rede. Exatamente pela necessidade de um servidor, é mais utilizado em provedores de Internet, grandes empresas e universidades.

Atualizando a segurança da WiFI

Figura 1 – Métodos de autenticação – roteador sem fio

Quanto aos métodos de criptografia, o principal algoritmo é o AES, novamente desconsiderei intencionalmente TKIP, por ser inseguro e obsoleto – não deveria ser usado.

Atualizando a segurança da WiFi 2

Figura 2 – Métodos de criptografia – roteador sem fio

Considerando as informações, concluímos que atualmente a mínima configuração de segurança recomendada seria a trinca WPA2 Personal (WPA2-PSK), AES e senha considerada forte (M1nh@5enh@+).

Senha da segurança da WiFi
Figura 3 – Configuração WPA2 Personal (WPA2-PSK) – roteador sem fio

Entretanto, a proposta desse post é aumentar o nível de segurança da WiFi, transformando o Raspberry Pi em um servidor RADIUS e sua rede WiFi em uma rede WPA2 Enterprise (WPA2).

Material necessário para aumentar a segurança da WiFi

Para realizar este projeto, vamos precisar de :

O que é um servidor RADIUS?

O RADIUS (Remote Authentication Dial In User Service) é um protocolo de rede que fornece um mecanismo de autenticação para os usuários que desejam se conectar a uma rede. Ele é construído em um modelo cliente-servidor, onde o roteador sem fio – também conhecido como NAS (Network Access Server) – opera como cliente, trasmitindo informações de autenticação – por exemplo, nome de usuário e senha – entre o usuário – notebook, smartphone, tablet, etc – e o servidor RADIUS.

O servidor RADIUS por sua vez recebe as informações, autentica e retorna o resultado da autenticação para que o roteador sem fio (cliente) possa rejeitar o usuário e negar o acesso à rede ou aceitar o usuário e fornecer acesso à rede.

Servidor Radius

Figura 4 – Funcionamento do RADIUS

Configurando o servidor RADIUS

Para começar precisamos de algum tipo de acesso ao terminal, seja remoto via ssh ou local via teclado. Tudo certo? Então vamos lá.

Agora vamos instalar os pacotes, nosso servidor RADIUS será baseado no FreeRADIUS.

apt-get update
apt-get install freeradius

É uma boa prática fazer uma cópia do arquivo de configuração antes de editá-lo.

cp -p /etc/freeradius/3.0/mods-config/files/authorize /etc/freeradius/3.0/mods-config/files/authorize.default

Agora iremos editar o arquivo de configuração.

vim /etc/freeradius/3.0/mods-config/files/authorize

Incluir o conteúdo abaixo na parte superior do arquivo, antes de qualquer outra coisa (fique atento aos comentários!).

# Adiciona os nomes de usuário user1 e user2 e suas respectivas senhas.

user1 Cleartext-Password := "Senh@U5er1+"
user2 Cleartext-Password := "Senh@U5er2+"

Reiniciar o serviço:

systemctl restart freeradius

Fazer um teste inicial:

radtest user1 Senh@U5er1+ localhost 0 testing123

Se a resposta for algo como:

Sent Access-Request Id 73 from 0.0.0.0:40436 to 127.0.0.1:1812 length 75
User-Name = "user1"
User-Password = "Senh@U5er1+"
NAS-IP-Address = 127.0.1.1
NAS-Port = 0
Message-Authenticator = 0x00
Cleartext-Password = "Senh@U5er1+"
Received Access-Accept Id 73 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

Parabéns, os seguintes protocolos de autenticação agora funcionam para o usuário user1:

PAP, CHAP, MS-CHAPv1, MS-CHAPv2, PEAP, EAP-TTLS, EAP-GTC, EAP-MD5.

As senhas podem ser armazenadas de várias formas – no nosso caso Clear-text. Por outro lado, os protocolos de autenticação usados ​​no RADIUS nem sempre são compatíveis com a maneira como as senhas foram armazenadas. A tabela a seguir mostra qual protocolo é compatível com o tipo de senha.

Servidor Radius 2

Tabela 1 – Fonte FreeRADIUS

Feito esse parêntesis, vamos adicionar o cliente do servirdor RADIUS, nesse caso o roteador sem fio.

Não esqueça de fazer uma cópia do arquivo de configuração antes de editá-lo.

cp -p /etc/freeradius/3.0/clients.conf /etc/freeradius/3.0/clients.conf.default

Vamos editar o arquivo de configuração.

vim /etc/freeradius/3.0/clients.conf

E incluir o conteúdo abaixo no final do arquivo (fique atento aos comentários!)

# SUBSTITUA nome-ap PELO NOME DO SEU ROTEADOR SEM FIO
# SUBSTITUA 192.168.0.1 PELO ENDEREÇO IP DO SEU ROTEADOR SEM FIO
# A SENHA Freer@d1us+ DEVE SER A MESMA CONFIGURADA NO ROTEADOR SEM FIO
client nome-ap {
        ipaddr      = 192.168.0.1         
        secret      = Freer@d1us+      
}

Antes de reiniciar o serviço, vamos fazer uma pequena alteração no arquivo de configuração do FreeRADIUS para que possamos registrar as solicitações de autenticação no arquivo de log. Vamos novamente fazer uma cópia do arquivo de configuração:

cp -p /etc/freeradius/3.0/radiusd.conf /etc/freeradius/3.0/radiusd.conf.

E então editá-lo:

vim /etc/freeradius/3.0/radiusd.conf

Modificando a linha auth = no para:

auth = yes

Agora podemos reiniciar o serviço:

systemctl restart freeradius

Configurando o roteador WiFi

O roteador sem fio (cliente) deve ser configurado para se comunicar com o servidor RADIUS, usando o endereço IP da máquina que está executando o servidor RADIUS, nesse exemplo 192.168.0.14 e a mesma senha configurada no arquivo /etc/freeradius/3.0/clients.conf, nesse exemplo Freer@d1us+.

configurando segurança da WiFi

Figura 5 – Configuração WPA2 Enterprise (WPA2) – roteador sem fio

Configurando o usuário

Diferentemente do WPA2 Personal (WPA2-PSK) onde a configuração do usuário se resume a digitar uma senha, no WPA2 Enterprise (WPA2) é necessário selecionar os protocolos de autenticação do RADIUS. Como visto anteriormente na Tabela 1, existe uma relação de compatibilidade entre a forma como as senhas foram armazenadas – no nosso caso Clear-text – e os protocolos de autenticação do RADIUS.

Existe também a questão de suporte dos protocolos de autenticação do RADIUS por parte dos sistemas operacionais – o Microsoft Windows não suporta o duo PEAP e GTC, por exemplo. Dito isso, nossa opção será o duo PEAP e MSCHAPv2, considerado seguro, compatível com a senha do tipo Clear-text e com a maioria dos sistemas operacionais disponíveis no mercado.

Figura 6 – Configuração WPA2 Enterprise (WPA2) – sistema operacional Ubuntu Linux

configurando senha WPA2 empresas ubuntu

configurando senha WPA2 empresas android Figura 7 – Configuração WPA2 Enterprise (WPA2) – sistema operacional Android

Consultando o arquivo de Log

Uma boa forma de checar o funcionamento do servidor RADIUS é consultando o arquivo de Log, que pode ser feito pelo comando.

tail -f /var/log/freeradius/radius.log

Se tudo estiver correto, informações como abaixo serão exibidas a cada autenticação.

Mon Jul  8 02:35:54 2019 : Auth: (8)   Login OK: [user1] (from client nome-ap port 0 via TLS tunnel)
Mon Jul  8 02:35:54 2019 : Auth: (9) Login OK: [user1] (from client nome-ap port 1 cli 2C-FG-16-33-CB-3F)

Podemos observar por exemplo, o nome de usuário, o nome do roteador sem fio e o endereço físico (MAC address) do dispositivo conectado a rede sem fio.

Gostou de aumentar o nível de segurança da WiFi com Raspberry Pi? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Faça seu comentário

Acesse sua conta e participe

7 Comentários

  1. Esto com dificuldade para vincular atributos na autenticação dos usuariosm exemplos: amarrar MAC cliente a um determinado usuario. Ja tens ideia de como deve ser feito?

    1. Alan

      Esse link pode te ajudar 🙂 https://freeradius.1045715.n5.nabble.com/Binding-MAC-address-with-username-td5743889.html

      Abraços!
      Diogo – Equipe MakerHero

  2. tem alguma interface web para freeRadius para facilitar o gerenciamento ?

    Edson Junior Della Valentina Gervazio
    1. Boa tarde Edson,

      Apesar de não usar nenhuma no momento, em uma pesquisa rápida encontrei o daloRadius (https://daloradius.com/). Talvez ajude.

    2. Embora não use nenhuma no momento, em uma pesquisa rápida encontrei o daloRadius (https://daloradius.com/). Talvez ajude.

  3. Qual roteador usou?
    Interface Open WRT?

    1. Bom dia Lucio,
      Meu roteador é um TP-Link TL-WR740N.
      Sim, fiz upgrade do firmware para DD-WRT (embora não seja obrigatório para esse post).