Este é um artigo muito bom (se um pouco desatualizado [se 2006 estiver desatualizado]) que descreve como fazer isso na linha de comando.
http://www.linux.com/archive/feed/55617
Supondo que o seu dispositivo sem fio funcione bem, você provavelmente poderá mergulhar na seção de pontes aproximadamente na metade do caminho.
O acesso protegido por Wi-Fi versão 2 ( WPA2 ) está se tornando o padrão de fato para proteger redes sem fio e um recurso obrigatório para todos os novos produtos Wi-Fi certificados pela Wi-Fi Alliance . Todos conhecemos as fraquezas de segurança de seu antecessor, o WEP; desta vez eles acertaram. Veja como implementar o protocolo WPA2 em um host Linux e criar um ponto de acesso sem fio seguro (WAP) para sua rede.
A maioria dos WAPs comerciais para consumidores opera da mesma maneira simples: eles criam uma ponte entre uma interface de rede com fio (Ethernet) e uma interface sem fio. É exatamente o que faremos também. A parte WAP será tratada pelo hostapddaemon, portanto, você deve escolher uma interface sem fio compatível. Entre as NICs suportadas, estão as que possuem chipsets Prism 2 / 2.5 / 3, Atheros ar521x e Prism GT / Duette / Indigo; uma lista está disponível na página inicial do hostapd, juntamente com links para drivers do Linux para cada chipset. Eu tenho uma placa PCI baseada no Atheros AR5212 instalada no meu WAP, suportada pelo hostapd. Embora qualquer sistema Pentium (ou mais recente) funcione, algumas placas sem fio PCI exigem que o PCI 2.2 funcione, portanto, verifique as especificações da placa-mãe do sistema antes de comprar. Você também precisará de uma interface Ethernet suportada pelo Linux para conectar seu WAP à LAN; a maioria das interfaces integradas funciona bem.
Minha configuração é baseada no Debian Testing (Etch), mas qualquer distribuição GNU / Linux com um kernel 2.6 recente funcionará. O kernel deve suportar 802.1d Ethernet Bridging (CONFIG_BRIDGE) e LAN sem fio (CONFIG_NET_RADIO). A maioria dos kernels padrão de estoque tem esses recursos ativados, mas se você preferir criar seu próprio kernel, inclua essas opções. Os únicos outros pacotes que você precisa instalar, além do hostapd, são bridge-utils e wireless-tools . As principais distribuições GNU / Linux oferecem pacotes binários para todos esses programas, mas se você preferir construí-los a partir do código-fonte, pode encontrar mais informações em suas páginas iniciais.
Antes de unir as duas interfaces, devemos colocar a interface sem fio (no meu caso ath0; ajustá-la para corresponder à sua configuração) no modo hostap ou Master. Normalmente, isso é tão simples quanto executar o modo master do iwconfig ath0, mas como o suporte à wlan no Linux ainda não está padronizado, alguns drivers podem precisar de configuração adicional. Se você possui uma interface baseada no Atheros, também precisa executar o seguinte: wlanconfig ath0 destroy; wlanconfig ath0 create wlandev wifi0 wlanmode ap
antes do iwconfig
comando. Depois disso, a corrida iwconfig ath0
retornará mode:Master
, entre outros.
Agora vamos criar a ponte. Vamos assumir que a interface Ethernet é eth0:
ifconfig eth0 0.0.0.0 up
ifconfig ath0 0.0.0.0 up
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 ath0
E para parar a ponte, você deve executar:
ifconfig br0 down
ifconfig eth0 0.0.0.0 down
ifconfig ath0 0.0.0.0 down
brctl delif br0 eth0
brctl delif br0 ath0
brctl delbr br0
Opcionalmente, você pode fornecer um endereço IP para a interface br0 se desejar acessar o host WAP da rede, usando, por exemplo, SSH. Cada distribuição oferece sua própria maneira de configurar a rede; se você usa o Debian (ou qualquer distribuição baseada no Debian, como o Ubuntu), pode finalizar todos os comandos anteriores, basta adicionar o seguinte ao seu /etc/network/interfaces
arquivo:
auto ath0 br0
iface ath0 inet manual
pre-up wlanconfig ath0 destroy
pre-up wlanconfig ath0 create wlandev wifi0 wlanmode ap
post-down wlanconfig ath0 destroy
wireless-mode master
iface br0 inet manual
bridge_ports eth0 ath0
Observe que ifupdown
lida com eth0 automaticamente, para que você não precise de uma estrofe separada /etc/network/interfaces
. Para verificar se a ponte está configurada corretamente, execute brctl show
. Você deve receber algo assim em troca:
bridge name bridge id STP enabled interfaces
br0 8000.00032f2481f0 no ath0
eth0
Antes de começar a mexer com o hostapd, precisamos de uma frase secreta para o WPA2. Como em todas as senhas, deve ser aleatório e, portanto, difícil de adivinhar. Uma boa maneira de obter uma senha aleatória é visitar o Gerador de Senhas de Alta Segurança Ultra da Gibson Research Corp. e usar a terceira senha que ela cria - a chamada 63 caracteres alfanuméricos aleatórios (az, AZ, 0-9). Ter uma senha que inclua caracteres ASCII não alfanuméricos (por exemplo!! @, Etc.) pode ser tentador, mas alguns clientes - como o Windows XP - parecem não gostar deles.
Agora crie um novo arquivo de texto chamado /etc/hostapd/wpa_psk
e cole sua frase secreta como:
00:00:00:00:00:00 PASSPHRASE
A primeira parte com zeros significa 'corresponder a todos os endereços MAC' e faz exatamente isso. Você também pode usar senhas diferentes para cada cliente anexando uma nova linha ao arquivo com o endereço MAC de cada cliente e sua senha. Certifique-se de que apenas a raiz tenha acesso a esse arquivo executando chmod 600 /etc/hostapd/wpa_psk
.
Agora crie um backup do arquivo de configuração principal do hostapd /etc/hostapd/hostapd.conf
e mantenha-o como referência executando mv /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.orig
. Crie um novo arquivo hostapd.conf e cole as seguintes linhas nele:
interface=ath0
bridge=br0
driver=madwifi
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=My_Secure_WLAN
#macaddr_acl=1
#accept_mac_file=/etc/hostapd/accept
auth_algs=3
eapol_key_index_workaround=0
eap_server=0
wpa=3
wpa_psk_file=/etc/hostapd/wpa_psk
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
stakey=0
Substitua as peças em itálico por informações que correspondam à sua configuração. Se você deseja permitir que apenas clientes específicos se conectem, remova o caractere # das duas linhas acima e copie os endereços MAC desses clientes /etc/hostapd/accept
e torne esse arquivo acessível apenas pela raiz (chmod 600). Para obter mais informações sobre as opções usadas, leia os comentários no arquivo de backup que você criou anteriormente (hostapd.conf.orig).
Inicie o daemon hostapd ( /etc/init.d/hostapd start
) e verifique /var/log/daemon.log
se ele funciona. Se o daemon não aparecer, aumente o nível de depuração ( option debug=
no hostapd.conf) para 4 e tente novamente.
Agora, se você procurar redes sem fio disponíveis a partir de um cliente, deverá ver seu ESSID. Para se conectar ao WAP a partir de um cliente Linux, você precisa instalar o wpa_supplicant e criar um arquivo de configuração, wpa_supplicant.conf (no Debian, instalado no /etc/wpa_supplicant/
) da seguinte maneira:
update_config=1
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="My_Secure_WLAN"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk="PASSPHRASE"
priority=5
}
Substitua novamente as partes em itálico para coincidir com sua configuração e execução wpa_supplicant -i eth1 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf
(substituindo eth1
pelo nome da interface wlan e wext pelo driver apropriado para sua placa; execute wpa_supplicant sem nenhuma opção para obter mais informações). Este comando inicia o wpa_supplicant em primeiro plano e tenta se conectar ao WAP. Se a saída for semelhante à seguinte, você está pronto:
Trying to associate with 00:11:22:33:44:55 (SSID='My_Secure_WLAN' freq=0 MHz)
Associated with 00:11:22:33:44:55
WPA: Key negotiation completed with 00:11:22:33:44:55 [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to 00:11:22:33:44:55 completed (auth) [id=0 id_str=]
Dê um endereço IP estático à sua interface sem fio (ou execute um cliente DHCP) e tente executar ping em um host dentro da sua LAN para verificar se a conexão funciona.
Parabéns, você acabou de criar um ponto de acesso sem fio altamente personalizável. Embora essa configuração seja ideal para uso doméstico ou em pequenos escritórios, você precisa de algo mais robusto na empresa, com autenticação em um servidor RADIUS ou, melhor ainda, em uma VPN.