Pesquisar neste blog

sexta-feira, 25 de maio de 2012

Transforme seu linux e um access point com hostap


Introdução

Neste artigo, vou mostrar como configurar seu sistema Linux para funcionar como um Access Point, de forma que a máquina possa compartilhar o acesso à Internet com as máquinas da sua casa ou trabalho. Para isso utilizaremos o programa hostapd, que possui várias funcionalidades, podendo até ser utilizado como autenticador RADIUS. Você pode conferir mais características do hostapd nos links: A maior vantagem dessa abordagem, é instalar um proxy na máquina para fazer cache de páginas e algumas regras de firewall para liberar o acesso à Internet, tornando a navegação mais rápida. A distribuição utilizada será o Debian Squeeze de 64 bits, que está instalado em um notebook Acer Aspire One que possui a placa Atheros AR9285. O módulo usado pela placa é o ath9k. Você pode conferir se sua placa wireless é compatível com o hostapd nos links acima.

Instalação do hostapd

Para instalar o hostapd no Debian, utilize os comandos:

# apt-get update
# apt-get install hostapd


ou

# aptitude update
# aptitude install hostapd


Configuração do hostapd

Agora que o hostapd está instalado, é necessário ajustar as configurações para que o serviço fique ativo. Copie o arquivo de configuração em:

/usr/share/doc/hostapd/examples/hostapd.conf.gz

para:

/etc/hostapd.

Como é um arquivo compactado com gzip. utilize o comando:

# zcat /usr/share/doc/hostapd/examples/hostapd.conf.gz > /etc/hostapd/hostapd.conf

Esse é o arquivo de configuração original do hostapd, que é bem completo, contendo vários comentários explicando cada opção. Você pode editar esse arquivo para ajustar as configurações, mas recomendo que crie um arquivo personalizado somente com as opções que você precisa para que não tenha problemas durante a implementação do serviço, pois o arquivo original contém mais de 1000 linhas e até você achar onde está o problema vai demorar bastante.

Copie o arquivo original para hostapd.conf.orig e crie um novo com o nome hostapd.conf:

# cd /etc/hostapd
# cp hostapd.conf hostapd.conf.orig
# touch hostapd.conf


Edite o arquivo vazio que foi criado para adicionar as configurações:

# vim hostapd.conf

Para criar um AP utilizando autenticação WPA2, adicione o seguinte conteúdo ao arquivo:

interface=wlan0
driver=nl80211
hw_mode=b
ssid=teste
channel=10

wpa=2
wpa_psk=9f90dd942b634b228b8c9f4950b505d832501fd5c24589b32789083d9774fb97
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

macaddr_acl=0
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=1
debug=0
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
auth_algs=1

As opções devem seguir rigorosamente a sintaxe <opçã>=<valor>, ou seja, sem espaços entre a opção e o valor, caso contrário ocorrerá erro.

Significado de algumas opções:
  • interface - interface wireless em que os clientes se conectarão;
  • hw_mode - padrão a ser usado. Pode ser a, b, g ou n;
  • ssid - id da rede;
  • wpa - determina a versão do wpa a ser usado. O valor 1 determina que será usado a versão 1, 2 a versão 2 e 3, ambos;
  • wpa_psk - Passphrase do wpa. Pode ser usada a opção wpa_passphrase no lugar dessa opção, mas neste caso a senha deverá estar em texto plano.
Para gerar esse hash para a opção wpa_psk, utilize o comando wpa_passphrase, presente no pacote wpasupplicant:

# wpa_passphrase "teste" 'Bd%670GhTUi@!dfP()'

Saída:

network={
   ssid="teste"
   #psk="Bd%670GhTUi@!dfP()"
   psk=9f90dd942b634b228b8c9f4950b505d832501fd5c24589b32789083d9774fb97
}

A sintaxe do comando é wpa_passphrase "ssid" 'senha'. Copie o valor 9f90dd942b634b228b8c9f4950b505d832501fd5c24589b32789083d9774fb97 para a opção wpa_psk no arquivo do hostapd.

Agora que o arquivo de configuração está montado, save e saia do arquivo usando o comando :wq do vim. Execute o hostapd usando o arquivo como parâmetro:

# hostapd /etc/hostapd/hostapd.conf

Agora conecte uma máquina cliente usando um programa como o NetworkManager, wicd ou wpa_supplicant à rede "teste" ou outro nome que você tenha dado à sua rede. Caso tenha problemas durante a conexão, comente as linhas referentes às linhas do wpa e conecte sem usar criptografia para verificar se o problema é na configuração do wpa devido ao uso, por exemplo, de uma passphrase incorreta ou versão não suportada pelo cliente. Se ainda ocorrer problemas, verifique o canal usado, o padrão 802.11 usado e outras configurações. Quando estiver tudo certo, habilite novamente a criptografia e conecte o cliente. Você pode depurar a execução do hostapd usando a opção -d:

# hostapd /etc/hostapd/hostapd.conf -d

Dessa forma serão mostradas mais mensagens, facilitando o diagnóstico se ocorrer algum erro. Você pode acrescentar mais debug usando o comando:

# hostapd /etc/hostapd/hostapd.conf -ddK

Ajustes para inicialização automática

O hostapd possui scripts de inicialização automática, mas ao ser instalado ele não é iniciado devido à ausência do arquivo de configuração. Agora que o arquivo está pronto, edite o arquivo /etc/default/hostapd e altere a opção DAEMON_CONF="" para que fique da seguinte forma:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Agora o hostapd pode ser iniciado automaticamente sem problemas através dos scripts contidos em /etc/init.d/hostapd. Você agora pode parar, iniciar ou reiniciar o serviço usando os comandos:

# /etc/init.d/hostapd stop
# /etc/init.d/hostapd start
# /etc/init.d/hostapd restart


Também é possível verificar se o serviço está ativo com o comando:

# /etc/init.d/hostapd status

Saída:

hostapd is running.

Conclusão

O uso do Linux como AP wireless é muito vantajoso, pois pode ser utilizado em vários tipos de cenário, como por exemplo, utilizar a máquina como proxy para permitir uma navegação mais dinâmica aos clientes e fornecer acesso à Internet por meio de um modem USB. Essa aplicação é muito vantajosa em netbooks ou notebooks. O hostapd é uma poderosa ferramenta que pode ser implementada tanto para uma rede doméstica quanto empresarial, fornecendo vários serviços que podem se adequar a muitos cenários diferentes que exigem por exemplo, autenticação RADIUS, EAP, WPA/WPA2, dentre outros.

Espero que esse artigo seja útil para alguém que necessite de uma ferramenta como o hostapd e agradeço ao espaço fornecido pelo Viva o Linux para publicação desse tutorial.


Fontes:

Nenhum comentário: