Linux Servidor linux

Transformando o Debian em Access Point Wifi com Hostapd

Transformando o Debian em Access Point Wifi com Hostapd

Você tem aquele notebook ou pc antigo encostado, com duas placas de rede, sendo uma delas wifi. Que tal transformá-lo num Access Point Wifi (AP) para conectar seus dispositivos?

Neste artigo vou transformar um PC antigo num AP utilizando o Debian 9.

Por que ter um Access Point?

Existem diversos motivos para se ter um AP, entre eles destaco os seguintes:

➡ Permite interligar dispositivos variados;
➡ Permite levar conexão wifi a pontos que não possuí;
➡ Permite conectar dispositivos móveis a um rede cabeada;
➡ Permite fazer proxy e cache para acessar as páginas da Internet;
➡ Permite criar regras de controle de acesso para sua rede;
➡ Permite criar uma rede virtual sem precisar de switchs e pontos de rede;

Verificando e configurando a interface wifi

Numa instalação simples, geralmente o Debian não irá instalar o driver para a placa wifi, para isso teremos que identificá-la e configurá-la de forma adequada.

Identificando a placa pelo comando lspci

Para isso, primeiro temos que identificar a placa com o comando lspci:

# lspci | egrep -i '(network|wireless)'

image

Após identificar a interface que possui a identificação 04:00.0, podemos exibir mais detalhes da placa com o comando abaixo:

# lspci -v -s 04:00.0

image

Os parâmetro -v, exibe mais detalhes sobre a placa e no parâmetro -s, nós pedimos pra mostrar só as informações de um dispositivo específico.

Instalando o driver correto

Podemos identificar que se trata de uma placa da Intel de número 7260, também vemos que é um modelo que suporta redes AC (802.11ac).

Procurando na Internet encontrei o driver num repositório para hardware que não tem a licença free, vamos instalar adicionando o repositório no sources.list:

# echo '# Debian 9 "Stretch"' >> /etc/apt/sources.list
# echo 'deb http://httpredir.debian.org/debian/ stretch main contrib non-free' >> /etc/apt/sources.list

Depois, instalamos o pacote para a nossa placa:

# apt update && apt install firmware-iwlwifi -y

Após finalizar a instalação podemos carregar os módulos do kernel:

# modprobe -r iwlwifi ; modprobe iwlwifi

Depois de carregados os módulos, a interface já será reconhecida pelo Debian:

image

Configurando as interfaces

No nosso Debian temos duas interfaces, a enp2s0 que recebe o IP do roteador da Operadora de Internet e a interface wlp4s0 que será utilizada para a conexão wifi.

Primeiro, vamos instalar alguns programas necessário para configurar nossa interface wifi:

# apt install iw bridge-utils -y

Podemos identificar se a placa permite ser utilizada como Access Point, para isso executamo o comando abaixo. Se aparecer a opção AP na lista sua placa suporta este modo:

# iw list | grep "Supported interface modes" -A 8

image

Para nosso AP funcionar com a Internet da Operadora e receber o IP automaticamente, vamos criar uma interface bridge entre a interface lan (enp2s0) e a wifi (wlp4s0), lembrando que devemos utilizar um IP da mesma rede utilizada pela sua operadora:

No arquivo /etc/network/interfaces remova as configurações da interface de rede, deixando apenas a configuração de loopback:

# vi /etc/network/interfaces

  # Interface loopback
  auto lo
  iface lo inet loopback

Criamos um arquivo específico para a interface bridge:

# vi /etc/network/interfaces.d/br0

    # Interface Brigde (Lan + Wifi)
    auto br0
    iface br0 inet static
    # Configuração da rede
    address 192.168.0.200
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    dns-nameservers 8.8.8.8
    # Faz a ponte entre as duas interfaces
    bridge-ports enp2s0 wlp4s0

Agora, reiniciamos o sistema para recarregar as configurações da interface e pronto, a parte de rede está configurada.

# shutdown -r now

Instalando o hostapd

Para transformar nosso pc num Access Point usamos o servidor com o serviço hostapd, vamos instalá-lo com o comando abaixo:

# apt install hostapd -y

Partimos agora para configuração do arquivo do hostapd, com as definições para habilitar nossa rede wifi chamada Linux na Web:

# vi /etc/hostapd/hostapd.conf

    interface=wlp4s0
    bridge=br0
    driver=nl80211
    ssid=Linux na Web
    hw_mode=g
    country_code=BR
    channel=10
    wpa=2
    wpa_passphrase=senha@forte
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP CCMP
    rsn_pairwise=CCMP
    auth_algs=1
    macaddr_acl=0

Abaixo temos uma descrição de cada linha do arquivo:

interface=wlp4s0: Define a interface da nossa rede wifi.
bridge=br0: Define a interface bridge que vamos utilizar.
driver=nl80211: Driver utilizado para nossa interface wifi. A maioria das placas wifi utilizam o nl80211.
ssid=Linux na Web: Define o nome da nossa rede.
hw_mode=g: Define o modo de operação da rede. Onde a é referente a tecnologia 802.11a, b é 802.11b e g será a rede 802.11g.
country_code=BR: Define código do país. Não é obrigatório o uso desta opção.
channel=10: Define o canal utilizado pela nossa rede. Deixando como 0, ela irá procurar o canal com menos interferência.
wpa=2: Define o protocolo utilizado na rede. Onde 1 é para wap1, 2 para wap2 e 3 para ambos.
wpa_passphrase=senha@forte: Definimos a senha para acesso a nossa rede wifi.
wpa_key_mgmt=WPA-PSK: Define o algoritmo da chave de criptografia desejada. As opções são WPA-PSK e WPA-EAP, utilizaremos WPA-PSK.
wpa_pairwise=TKIP CCMP e rsn_pairwise=CCMP: Definem os algoritmos de criptografia que iremos utilizar.
auth_algs=1: Define o algoritmo de autenticação. Com 1 definimos para WPA2 e com 2 definimos como WEP. Sempre escolha 1, pois é mais seguro.
macaddr_acl=0: Permite criar regras para acesso pelo MAC ADDRESS. Com 0 desabilitamos o bloqueio, permitindo acesso para todos.

Configurando opções do serviço

Antes de iniciarmos o serviço hostapd, precisamos configura algumas opções:

# vi /etc/default/hostapd

    DAEMON_CONF="/etc/hostapd/hostapd.conf"
    DAEMON_OPTS="-dd -t -f /var/log/hostapd.log"

Onde:

DAEMON_CONF: Define arquivo de configuração do hostapd.

DAEMON_OPTS: Define parâmetros opcionais para o serviço. No nosso caso definimos o formato e onde deve ser gerado os registros de logs do hostapd.

Pronto, com as configurações finalizadas, podemos reiniciar o serviço.

# systemctl restart hostapd

Podemos verificar a nossa interface bridge com o comando:

# brctl show

Podemos ver que ela agrupa ambas as interfaces, enp2s0 e wlp4s0.

image

Portanto, já podemos verificar a disponibilidade da nossa rede:

image

E fazer a conexão:

image

Podemos também identificar pelos logs:

# tail -f /var/log/hostapd.log

image

Algumas opções de segurança

Podemos escolher algumas opções para melhorar nossa rede, impedindo a sobrecarga e deixando mais segura.

Restringindo quantidade de conexões

Podemos restringir a quantidade de estações que podem se conectar a nossa rede, adicionando no arquivo de configuração (hostapd.conf) a opção max_num_sta seguida da quantidade:

max_num_sta=5

Assim, somente 5 conexões serão possíveis, a partir da quinta nenhuma outra conexão será permitida.

Fazendo controle de acesso

Podemos restringir o acesso a nossa rede, pelo mac-address dos dispositivos. Para isso, temos que definir alguns parâmetros no arquivo de configuração:

macaddr_acl=NUM

Onde NUM pode ser:

0: Aceita conexão a todos os dispositivos, a menos que esteja numa lista de mac-address bloqueados.
1: Nega conexão a todos os dispositivos, a menos que esteja numa lista de mac-address liberados.
2: Utiliza um servidor RADIUS para fazer as validações de conexão.

Vamos configurar para liberar todas as conexões, exceto se o mac-address do dispositivo estiver numa lista de dispositivos bloqueados:

# vi /etc/hostapd/hostapd.conf

    macaddr_acl=0
    deny_mac_file=/etc/hostapd/hostapd.deny

O parâmetro deny_mac_file define o arquivo que terá os mac-addres bloqueados:

# vi /etc/hostapd/hostapd.deny

    e8:91:20:35:a2:c0

E para recarregar as configurações, executamos o comando:

# systemctl reload hostapd

Pronto, todos os mac-address dos dispositivos que estiverem no arquivo hostapd.deny, não conseguirão se conectar a rede. Podemos verificar nos logs:

# tail -f /var/log/hostapd.log

image

Agora vamos configurar para bloquear todas as tentativas de conexões, exceto se o mac-address do dispositivo estiver numa lista de dispositivos liberados:

# vi /etc/hostapd/hostapd.conf

    macaddr_acl=1
    accept_mac_file=/etc/hostapd/hostapd.accept

O parâmetro accept_mac_file define o arquivo que terá os mac-addres liberados:

# vi /etc/hostapd/hostapd.accept

    e8:91:20:35:a2:c0

E para recarregar as configurações, executamos o comando:

# systemctl reload hostapd

Assim finalizamos nosso Access Point, lembrando que utilizamos o roteador da operador para receber o IP, mais é possível você configurar seu próprio serviço dhcp local.

Para mais informações acesse:
Gentoo Linux Hostapd
Arch Linux Access Point

comments powered by Disqus

Assine nossa Newsletter! 🐧

Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.