Implemente criptografia Wi-Fi robusta com o hostapd de maneira fácil

Forneça segurança e proteja seu acesso Wi-Fi com criptografia WPA2

Deixe a segurança wireless simples. O hostapd, o daemon Host Access Point fornece criptografia de Wi-Fi robusta que cumpre com as normas corporativas sem ser necessário o gasto adicional de executar o FreeRADIUS. Saiba mais sobre essa ferramenta e sobre como incorporá-la em seu ambiente.

Carla Schroder, Linux administrator and author, Independent

Carla Schroder é administradora freelance de PC, administra sistemas Linux e Windows para empresas de pequeno porte e escreve instruções para leigos. Ela gosta muito de computadores e alta tecnologia e acredita que softwares Linux/Softwares livres/Gratuitos são o melhor lugar do mundo para se divertir. Carla teve seu primeiro contato com computadores e alta tecnologia em 1994, e seu primeiro computador foi um Apple II. Ela acompanhou o progresso do DOS/Windows, do 3.1 ao XP. Em 1998, ela descobriu o Linux. Carla é o exemplo de que adultos autodidatas podem ser ótimos especialistas em computação.



26/Abr/2012

Introdução

O hostapd, o daemon Host Access Point, fornece criptografia WPA2 robusta e autenticação em pontos de acesso wireless baseados em Linux. Ele é simples de configurar, oferece suporte a WPA2-Personal e Enterprise, além de fornecer uma modificação exclusiva ao WPA2-Personal, que o fortalece e o torna mais simples de administrar.

Há uma diferença considerável entre o WPA2-Personal e o WPA2-Enterprise. O WPA2-Enterprise é a segurança wireless mais robusta, porém, é complexa de administrar, pois exige um PKI (Public Key Infrastructure) com certificados de servidor e cliente, além de uma autoridade de certificação. A maior parte dos estabelecimentos utiliza servidores FreeRADIUS para gerenciar tudo isso, o que é uma solução desnecessária quando há um número pequeno de pontos de acesso a serem gerenciados ou um ponto de acesso é criado para um projeto ou evento temporário.

O WPA2-Personal deveria ser simples e eficiente para estabelecimentos de pequeno porte, pois utiliza uma única chave compartilhada para todos os usuários, que é fácil de implementar, mas apresenta problemas contínuos de segurança e administração. Não há uma maneira simples de remover um usuário único, pois sempre que a chave for alterada, a nova chave deverá ser distribuída para todos os usuários. Dessa maneira, não é possível manter usuários indesejados fora, pois eles necessitam de apenas uma pessoa na rede para acessar a nova chave. Isso é adequado para um ponto de acesso semipúblico, por exemplo, se você deseja fornecer Wi-Fi gratuito para visitantes de seu estabelecimento, mas não a todos os oportunistas da área.

O hostapd fornece um meio-termo, uma maneira de usar o WPA2-Personal com chaves individuais para cada usuário, ao invés de uma única chave compartilhada para todos. Estas chaves são apenas senhas no arquivo de configuração do hostapd e nos clientes, portanto, não há necessidade de um PKI ou servidor de autenticação separado.

Lembre-se de que o tráfego é criptografado apenas entre o cliente e o roteador wireless, para impedir que o link wireless seja utilizado inapropriadamente, porém, não fornece criptografia de ponta a ponta. Isso é feito por OpenVPN ou túnel SSH.


Pré-requisitos

Você irá precisar de um ponto de acesso wireless que inclui hostapd ou permite que ele seja instalado, do comando iw, além de wpa_supplicant em um PC Linux para teste. Seu ponto de acesso deve fornecer suporte a hostapd 0.6.8 ou mais recente. (O release atual do hostapd é o 0.7.3) Com o hostapd versão 0.6.8 implementado no driver nl80211. Não são necessários drivers especiais para as placas de interface wireless (WIC) suportadas pela estrutura mac80211 no kernel Linux, pois elas possuem suporte nativo integrado.

O driver nl80211 move a criptografia, autenticação, rotação de chaves e outras funções de ponto de acesso para o espaço do usuário. Se, em geral, você usa o comando iwconfig, comece a usar o comando iw, pois iwconfig não funciona na versão 0.6.8.

DD-WRT e OpenWRT são ótimos substitutos de firmware de software livre para os roteadores wireless dos consumidores, como dispositivos do tipo Linksys WRT54G (consulte Recursos), além de incluir hostapd. Ambos possuem bancos de dados extensivos de dispositivos suportados. Eu prefiro criar minhas próprias WAPs usando Linux vazios em computadores single-board Soekris, PC Engines e MicroTik (consulte Recursos). Essas placas pequenas são duráveis, e eu obtenho controle e flexibilidade totais.

Se você deseja desenvolver seu próprio WAP (Wireless Application Protocol), o componente mais importante é uma WIC com suporte nativo a kernel Linux, que fornece suporte ao importante modo PA. Isso também é chamado de modo de Ponto de Acesso, Principal e Infraestrutura, e é obrigatório para um ponto de acesso wireless. Muitas interfaces de rede wireless não fornecem suporte ao modo PA, mas são apenas dispositivos clientes com funcionalidade mínima. Eu sempre uso interfaces wireless Atheros, pois possuem todos os recursos e são suportadas com ambos os drivers, os Madwifi legados e os mac80211 mais recentes.

Evite ndiswrapper em seu ponto de acesso. Essa é uma boa solução para realizar uma atividade de WIC quando não há outras opções, mas ainda é uma solução que apresenta diversos problemas. Sempre utilize boas interfaces wireless com suporte nativo a kernel.

Consulte os bancos de dados de dispositivos Linux Wireless.org para saber quais são as interfaces suportadas, além de diversas informações sobre drivers wireless e comandos de espaço de usuário (consulte Recursos). O projeto Linux Wireless fez um ótimo trabalho ao limpar e harmonizar a pilha wireless do Linux.

Isso é mais fácil do lado do cliente, pois quase todas as WICs que possuem conformidade com Wi-Fi, com suporte nativo a kernel Linux, podem se conectar ao seu ponto de acesso com segurança WPA2 robusta. Os clientes Mac e Windows® também podem usar seu ponto de acesso com base em Linux.


Como analisar WICs

Como saber quais funções são suportadas por sua WIC? O iw indica. Consulte a seção "Supported interface modes" para verificar se ele suporta o modo PA. A Listagem 1 mostra um exemplo.

Lista 1. iw listing
$ iw list

[...]

Supported interface modes: *IBSS *managed *monitor *AP *AP/VLAN

Este exemplo mostra uma WIC que fornece suporte a PA e VLANs wireless. IBSS é um modo ad hoc. O modo Monitor ajuda a localizar redes wireless. Todos as WICs fornecem suporte ao modo gerenciado, que é o cliente de um ponto de acesso.

Em interfaces Atheros que usam drivers Madwifi, tente usar wlanconfig. Consulte a Listagem 2.

Lista 2. Exemplo de wlanconfig
# wlanconfig ath0 list caps
ath0=7782e40f<WEP,TKIP,AES,AES_CCM,HOSTAP,TXPMGT,SHSLOT,SHPREAMBLE,TKIPMIC,WPA1,WPA2,BURST
     ,WME>

Esse comando mostra suporte ao modo PA, além de WPA2 e da robusta cifra AES-CCMP.

Outra boa maneira de testar seu hardware wireless é usar o comando hwinfo, que é muito útil. Ele possui uma opção especial para interfaces wireless e gera diversos tipos de informações, como exibido no fragmento da Listagem 3 :

Lista 3. Exemplos de dados hwinfo para WIC
$ hwinfo --wlan
27: PCI 500.0: 0282 WLAN controller
Model: "Intel WLAN controller"
Driver: "iwlagn"
Driver Modules: "iwlagn"
WLAN encryption modes: WEP40
WEP104 TKIP CCMP
WLAN authentication modes: open sharedkey wpa-psk wpa-eap
Status: iwlagn is active
Driver Activation Cmd: "modprobe iwlagn"

hwinfo nomeia o driver, informa qual criptografia é suportada, o nome do dispositivo, entre outros. Você também pode tentar usar lspci para interfaces de rede PCI e lsusb para interfaces USB. Essa WIC não irá funcionar como um ponto de acesso, pois o driver iwlagn não é suportado por hostapd e não suporta o modo PA, em nenhuma circunstância. (Ele é parte de um chip Centrino integrado de baixo custo.)


Como configurar o hostapd

A instalação depende da distribuição Linux utilizada, então, sua tarefa será se dirigir à sua própria distribuição. Primeiramente, configure hostapd no ponto de acesso e, em seguida, wpa_supplicant no PC cliente, para testar a troca de chaves.

Se você não possuir um arquivo /etc/hostapd.conf em seu ponto de acesso, será necessário configurar um. Se ele for fornecido por sua instalação, crie uma cópia de backup para referência e comece com um arquivo limpo. O exemplo na Listagem 4 apresenta o necessário para sua configuração WPA2-Personal:

Lista 4. Exemplo de /etc/hostapd.conf
interface=ath0
bridge=br0
driver=nl80211
ssid=alracnet
auth_algs=1
wpa=1
wpa_psk_file=/etc/hostapd-psk
wpa_key_mgmt=WPA-PSK 
wpa_pairwise=CCMP TKIP
rsn_pairwise=CCMP

Pode ser necessário substituir alguns desses parâmetros, como a interface, driver, SSID, com seus próprios valores. Quando são listadas diversas opções, elas devem estar separadas por espaços, como na linha wpa_pairwise. Abaixo, encontram-se observações sobre este exemplo.

  • Interfaces Atheros sempre são chamadas athx, enquanto o restante é denominado wlanx.
  • Não inclua a linha de ponte se seu ponto de acesso não possuir uma ponte Ethernet.
  • O driver será nl80211, se você estiver usando hostapd 0.6.8 ou posterior e uma WIC com suporte a mac80211. Os únicos drivers legados suportados são HostAP, madwifi e prism54. Releases anteriores ao hostapd 0.6.8 fornecem suporte aos drivers hostap, wired, madwifi, test, nl80211 e bsd.
  • SSID pode ser tudo aquilo que deseja ou o nome do ponto de acesso.
  • auth_algs=1 permite apenas algoritmos de autenticação WPA2. 2 é WEP. Jamais utilize WEP (Wired Equivalent Privacy), pois ele tem sido amplamente interrompido a anos, e é decifrado com facilidade. 3 permite ambos.
  • wpa=2 permite apenas WPA2. 1 é WPA1 e 3 permite ambos.
  • wpa_psk_file indica o arquivo que contém as chaves compartilhadas.
  • wpa_key_mgmt especifica os algoritmos de chave de criptografia que você deseja permitir. Suas opções são WPA-PSK, WPA-EAP ou ambos. PSK é uma chave pré-compartilhada. EAP refere-se ao Extensible Authentication Protocol, uma estrutura que fornece suporte a diversos métodos de autenticação diferentes. Ele não é necessário para sua configuração simples pré-compartilhada.
  • wpa_pairwise e rsn_pairwise controlam as cifras permitidas para criptografar seus dados. É possível usar CCMP, TKIP ou ambos. CCMP é mais robusto que TKIP, portanto, você pode tentar permitir apenas CCMP. Clientes Windows são conhecidos por serem meticulosos e preocupados com segurança robusta, portanto, talvez seja necessário permitir TKIP para eles.

Todos deveriam usar WPA2, pois WEP (Wired Equivalent Privacy) chega a ser inútil, de tão frágil, e WPA é quase tão frágil quanto WEP. O suporte a WPA2 é obrigatório em dispositivos Wi-Fi certificados desde 2006 e é suportado em todos os sistemas operacionais modernos, incluindo Windows XP SP3. É mais fácil substituir algumas WICs, se for necessário, do que se recuperar após uma invasão.

A seguir, crie um arquivo /etc/hostapd-psk contendo um endereço MAC curinga e uma senha de texto simples de teste, com até 63 caracteres:

00:00:00:00:00:00 testpassword

Em seguida, vá até seu PC cliente Linux e crie um arquivo de configuração simples para wpa_supplicant, wpa_supplicant.conf semelhante ao exibido no exemplo da Listagem 5.

Lista 5. wpa_supplicant.conf de amostra
ctrl_interface=/var/run/supplicant
network={ 
  ssid="alracnet"
  psk="testpassword"
  priority=5
}

ctrl_interface permite a interação com wpa_supplicant na linha de comando. Use seu SSID e senha de texto simples de teste e inclua ambos entre aspas. Quanto mais alto for o número da prioridade, mais rapidamente será feita a conexão ao ponto de acesso. Em seguida, volte para seu ponto de acesso e execute o hostapd no modo de depuração:

# hostapd -d /etc/hostapd.conf

Se houver algum erro de configuração, ele será reportado e o hostapd não irá executar. Caso contrário, ele irá emitir diversas linhas de saída. Pressione CTRL+c para interrompê-lo. Quando os erros forem solucionados, é possível configurá-lo para iniciar automaticamente, o que será feito no mesmo instante.

Em seguida, no cliente, interrompa sua conexão wireless, se estiver sendo executada, e execute wpa_supplicant como raiz:

# wpa_supplicant -i wlan0 -D wext -c wpa_supplicant.conf -d

-i especifica a interface wireless, -D wext é o driver wpa_supplicant genérico, -c indica o arquivo de configuração e -d representa o modo de depuração. Serão exibidas diversas saídas no ponto de acesso e no cliente. Quando a troca de chaves é bem-sucedida, ele é completado rapidamente e, no cliente, serão exibidas mensagens semelhantes às da Listagem 6 .

Lista 6. Mensagens de amostra de wpa_supplicant
EAPOL: SUPP_BE entering state IDLE
EAPOL authentication completed successfully 
RTM_NEWLINK: operstate=1 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP]) 
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added

Viva! Funciona. Pressione CTRL+c para finalizar sua sessão wpa_supplicant. A última etapa é criar chaves de usuário individuais. Primeiramente, crie as chaves no ponto de acesso e, em seguida, faça cópias para seus clientes, usando seu utilitário de configuração de rede preferido. As configurações gráficas são basicamente iguais: insira o SSID, selecione a autenticação WPA2 Personal e coloque a senha.


Como incluir usuários, chaves robustas

Agora, é hora de fortalecer a segurança e adicionar usuários. Uma senha de texto simples é dispendiosa em termos computacionais, pois deve ser criptografada, portanto, wpa_supplicant é um bom comando para a geração de chaves criptografadas de 256 bits de senhas de texto simples, wpa_passphrase. Use-a como o exibido na Listagem 7, em conjunto com o SSID:

Lista 7. Como criar usuários com wpa_passphrase
$ wpa_passphrase "alracnet" "greatbiglongpasswordbecauselongerisbetter"
network={
 ssid="alracnet"
 #psk="greatbiglongpasswordbecauselongerisbetter"
 psk=a8ed05e96eed9df63bdc4edc77b965770d802e5b4389641cda22d0ecbbdcc71c
}

De volta a /etc/hostapd-psk, é possível começar a adicionar usuários. Cada chave criptografada pré-configurada será correspondida ao endereço MAC do usuário. A Listagem 8 mostra um exemplo.

Lista 8. Exemplo de /etc/hostapd-psk
11:22:33:44:55:66     a8ed05e96eed9df63bdc4edc77b965770d802e5b4389641cda22d0ecbbdcc71c
22:33:44:55:66:77     eac8f79f06e167352c18c266ef56cc26982513dbb25ffa485923b07bed95757a
33:44:55:66:77:aa     550a613348ffe64698438a7e7bc319fc3f1f55f6f3facf43c15e11aaa954caf6 
44:55:66:77:aa:bb     ad328e5f2b16bdd9b44987793ed7e09e6d7cca3131bc2417d99e48720b4de58c

Quando tudo estiver funcionando de acordo, é provável que você queira que o hostapd execute automaticamente. Há diversas maneiras de fazer isso: criar um script de inicialização para que ele seja iniciado ao iniciar ou iniciá-o quando a interface da rede wireless for exibida. Há diversas maneiras de configurar isso nas várias distribuições de Linux, portanto, isso também será seu dever de casa. É provável que você utilize a opção -B, que o divide em segundo plano, ao invés da opção -d, para depuração.

Isso encerra nossa introdução ao excelente daemon hostapd . Consulte Recursos para mais informações.

Recursos

Aprender

Obter produtos e tecnologias

  • Teste o DD-WRT e o OpenWRT, dois substitutos de firmware de software livre que incluem hostapd.
  • Confira os computadores single-board Soekris, PC Enginesou MicroTik .
  • Avalie os produtos IBM da forma que melhor lhe convém: Faça download de uma avaliação de produto, teste um produto online, use um produto em um ambiente de nuvem ou passe algumas horas na SOA Sandbox para saber mais sobre como implementar arquitetura orientada a serviço (SOA) de maneira eficiente.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux, Software livre
ArticleID=811556
ArticleTitle=Implemente criptografia Wi-Fi robusta com o hostapd de maneira fácil
publish-date=04262012