wpa_supplicant.conf – Configuração para WPA2-PSK

WPA2 com PSK e TKIP – Segurança em redes Wi-Fi domésticas

Esse artigo é para quem precisa configurar o Wi-Fi como WPA2 com PSK. Esse é o método mais fácil de tornar sua conexão segura com Wi-Fi doméstico. Isso significa que haverá uma “frase-senha” conhecida por todos que acessam a rede.

Essa chave-frase é armazenada no roteador Wi-Fi. Como WEP é inseguro e WPA é passível de invasão (teoricamente), atualmente para uso doméstico, o melhor é manter seu roteador Wi-Fi em WPA2-PSK usando TKIP.

O comprimento da frase secreta, o uso de maiúsculas, caracteres de pontuação e números (somente caracteres da tabela ASCII são permitidos) aumenta a dificuldade da quebra de senha. Alguns roteadores Wireless permitem múltiplos protocolos simultaneamente (WEP, WPA, WPA2, WPS). Desative todos os demais (incluindo WPS que é vulnerável) e deixe apenas WPA2-PSK com TKIP.

Isso garante um nível de estabilidade e segurança para o ponto de acesso. Se possível, atualize seu firmware. Essa operação pode danificar seu aparelho, então, saiba o que está fazendo antes de se aventurar.

Esse artigo não cobre a configuração WEP, WPA, WPS ou o uso de EAP com qualquer protocolo, o uso de certificados ou o uso de servidores RADIUS de autenticação. Existem mil maneiras de “comer Neston com wpa_supplicant”. Esse artigo é uma introdução para esses protocolos, pois a estrutura de configuração é a mesma.

O arquivo wpa_supplicant.conf armazena os parâmetros necessários para configurar a negociação entre o cliente WPA e o servidor. O arquivo consiste de um bloco de configurações globais, que afetam todas as redes, e um ou mais blocos de rede onde são inseridos os parâmetros de cada conexão.

O sistema wpa_supplicant selecionará a rede primária baseado na ordem de prioridade definida no parâmetro prioridade. Havendo mais de uma rede com a mesma prioridade, são avaliados a força do sinal da rede e nível de segurança, WPA/WPA2 são preferenciais.

No corpo do arquivo, um linha que se inicia com #, é considerada um comentário. Após encontrar um sinal #, todo o restante da linha é considerado comentário. Por exemplo:

ssid=”Rede-01″  # Aqui é um comentário após uma definição.
# Esse é um comentário em toda a linha.

Parâmetros globais

Os parâmetros globais são definidos como um binômio parâmetro=valor.

Observe que não são permitidos espaços em branco no campo do valor. Valores que exigem espaço devem ser declarados entre aspas duplas. Alguns parâmetros aceitam valores livres, enquanto outros possuem valores pré-definidos de tipo.

ctrl_interface – é o parâmetro que armazena a rota (pathname) onde o sistema wpa_supplicant deve criar um arquivo de soquete do tipo Unix.

Um soquete é um arquivo especial do tipo socket (s), responsável pela comunicação entre wpa_supplicant e programas front-end como wpa_cli(8). Observe que ctrl_interface armazena a rota e não o nome do arquivo, que normalmente é o nome da interface (wlan0).

Exemplo:

ctrl_interface=/var/run/wpa_supplicant

Criará o diretório em /var/run/wpa_supplicant e o arquivo de soquete wlan0.

ctrl_interface_group – define o nome do grupo (ou GID) com o qual o arquivo de soquete será criado. Isso pode ser ajustado para que usuários que não são root possam controlar essa interface de rede.

Se esse valor não for declarado, assume o valor da propriedade do diretório onde foi criado (normalmente pertence a root). Em várias distribuições esse arquivo é criado em /var/run (pertence ao root) sendo uma área crítica para segurança do sistema.

Exemplo:

ctrl_interface_group=root

eapol_version – o protocolo IEEE 802.1x/EAPOL possui a versão 1 e 2. O sistema wpa_supplicant é implementado de acordo com a revisão IEEE 802-1X-Ver-d8. Isso significa que, por padrão EAPOL, é sempre 2. Entretanto, pontos de acesso antigos não trabalham com essa versão.

Por padrão, wpa_supplicant irá anunciar SEMPRE que deseja a versão 1. Assim, é preciso dizer explicitamente para wpa_supplicant para usar a versão 2 que é melhorada e oferece mais benefícios. Se seu roteador antigo parece dropar todos seus quadros, então, o problema está nesse parâmetro.

Exemplo:

eapol_version=2

ap_scan – esse parâmetro controla a seleção e o escaneamento do ponto de acesso. São três opções possíveis (0,1 e 2). O padrão para redes sem fio é 1 e somente esse valor pode ser utilizado no módulo WLAN. Os demais valores são utilizados por outros sistemas operacionais.

O modo 0 é usado quando drivers que não são nativos para WPA (como uma placa de rede com fio) vão se associar ao roteador usando um cabo de rede. O modo 2 é similar ao modo 0, adicionando o uso de uma política de segurança e SSID (nunca BSSID) e drivers ndiswrapper e NDIS com pontos de acesso que ocultem seu SSID.

Neste modo, somente um bloco de definição de rede é aceito. Os valores de key_mgmt, pairwise, group, proto devem ser únicos e previamente definidos.

ap_scan=1

fast_reauth – é um parâmetro que controla a velocidade da reautenticação. O valor 1 é ativo e o valor 0 e desativado. Esse valor depende de suporte por EAP. Caso gere instabilidade, mantenha desativado.

O bloco de rede

Cada rede, ou ponto de acesso em potencial, deve possuir um bloco que descreva como identificar e configurar a segurança dessa rede. Quando múltiplas redes são listadas nesse arquivo de configuração, a que tiver o maior valor no campo prioridade é selecionada para uso.

Se mais de uma rede tem o mesmo nível de prioridade, então, os critérios de força do sinal e segurança são avaliados para definir uma rede para conexão. Um bloco se parece com isso:

network={
parâmetro=valor
….
}

* Atenção: entre “network={“, não pode haver espaço em branco. Um bloco pode conter uma ou mais declaração de acordo com os parâmetros. Quando um parâmetro não declarado explicitamente é certo que existe um valor padrão para ele. Preferencialmente deixe seus valores explícitos:

ssid (requerido) – é o SSID divulgado pelo ponto de acesso e representa o nome do ponto de acesso. Esse campo deve conter somente caracteres da tabela ASCII ou uma cadeia de caracteres no formato hexadecimal fechada entre aspas duplas. Evite caracteres acentuados aqui e apesar de aceito evite usar espaços em branco para o nome de um ponto de acesso.

Exemplo:

ssid=”VOL-WIFI”

scan_ssid – define a técnica utilizada para escanear em busca do SSID. O valor padrão é 0, que realiza uma sondagem por broadcast. O escaneamento do tipo 1 utiliza uma sondagem direta por quadro (frame). Pontos de acesso que ocultam seu SSID requerem o escaneamento do tipo 1.

Isso provoca uma na negociação da conexão bem mais demorada e deve ser ativada somente se necessária.

scan_ssid=0

bssid – armazena o endereço MAC do ponto de acesso, garantindo que o ponto de acesso é realmente aquele ao qual pretende conectar. Isso evita conflito de nomes entre pontos de acessos. Para obter o MAC do ponto de acesso, utilize o comando iwlist scanning.

Exemplo:

bssid=28:32:c5:f8:c8:00

priority – define a prioridade da rede. Se omitido assume o valor 0. Quanto maior o valor maior a prioridade. Se duas redes possuem a mesma prioridade, então, são avaliadas e a que tiver melhor política de segurança (WPA/WPA2) e a melhor força do sinal será escolhida.

priority=10

mode – o modo de operação IEEE 802.11; o valor 0 indica infraestrutura (é o valor padrão) ou o valor 1 que indica IBSS que é o mesmo que rede ad hoc. Uma rede IBSS somente pode ter o gerenciamento da chave (key_mgmt) como NONE (nenhum) o que significa texto puro ou WEP estática. Se IBSS for definido como WPA-NONE (TKIP/CCMP), neste caso, o valor de ap_scan deve ser 2.

WPA-NONE requer o valor de proto como WPA, key_mgmt como WPA-NONE, pairwise como NONE, group como CCMP ou TKIP, (nunca ambos) e PSK presente. Uma rede ad hoc é estabelecida entre dois dispositivos, sem um ponto de acesso, portanto, fora do escopo desse artigo.

Exemplo:

mode=0

proto – lista os protocolos aceitáveis. WPA para IEEE 802.11i/D3.0 e RSN para IEEE 802.11i. O WPA2 é um alias para RSN. Se omitido o padrão desse parâmetro é uma lista composta por “WPA RSN”.

Exemplo:

proto=RSN   # alias para WPA2

key_mgmt – lista os protocolos aceitáveis pelo cliente. Pode ser declarado um ou mais protocolos, que serão testados na sequência. WPA-PSK – WPA com chave compartilhada, WPA-EAP, WPA com autenticação externa, IEEE802.1x, usando autenticação EAP e opcionalmente chaves dinâmicas WEP. NONE, usando texto puro ou chaves estáticas WEP. Se omitido os valores padrão, são “WPA-PSK WPA-EAP”.

Exemplo:

key_mgmt=WPA-PSK

auth_alg – lista os algoritmos de autenticação permitidos. Um ou mais valores podem ser declarados. OPEN (Open System authentication) requerido para WPA/WPA2. O valor SHARED (Shared Key Authentication), LEAP (LEAP/Network EAP).

Exemplo:

auth_alg=OPEN

pairwise – lista o valor do “par sábio”. Se omitido assume “CCMP TKIP”. O tipo unicast de cifra para WPA, CCMP (AES, em modo contador com CBC-MAC, como na RFC 3610, ou IEEE 802.11i/D7.0) para TKIP. O valor NONE está depreciado.

Exemplo:

pairwise=TKIP

group – lista o grupo multicast aceitável de cifras para WPA. Um ou mais valores são aceitos. CCMP (AES), TKIP, WEP104 ou WEP40. Por omissão essa é a própria ordem consultada.

group=TKIP

psk – esse campo armazena um hash da chave compartilhada, quando estiver usando o modo WPA-PSK. Essa chave é especificada como 64 dígitos em hexadecimal ou como uma frase senha de 8-63 caracteres em ASCII. As frases chaves são dinamicamente convertidas para uma chave de 256 bits em tempo de execução usando o SSID ou previamente pelo utilitário wpa_passphrase(8), isso é o melhor a fazer.

Esse utilitário também envia sua frase senha em texto puro para o arquivo de configuração. Isso é um ponto de fraqueza na segurança, apague essa linha de acordo com o grau de paranoia de segurança.

#psk=”Chave Secreta em texto puro”
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb

mixed_cell – configura se o ponto de acesso permite o uso de texto puro e criptografado quando selecionando um BSS dos resultados do escaneamento. Por padrão, isso é configurado como desativado (0). O valor 1 ativa.

Exemplo:

mixed_cell=0

A seguir, um modelo de wpa_supplicant.conf para WPA2-PSK com TKIP:

# Parametros Globais
#
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
eapol_version=2
ap_scan=1
fast_reauth=1
#
# Fim dos Parâmetros Globais
#
# Inicio das redes
network={
ssid=”VOL”
scan_ssid=0
bssid=00.11.22:aa:bb:cc
priority=10
mode=0
proto=RSN
key_mgmt=WPA-PSK
auth_alg=OPEN
pairwise=TKIP
group=TKIP
# psk=”Frase Chave em texto puro”
psk=44cb7cbece91a5abaeaf4694eb188f868c0716b945f73341ea91d6de77a8d670
mixed_cell=0
}
Rolar para cima