Versão avaliada: Fedora 42, 44
O protocolo EAP é utilizado para realizar autenticação no padrão 802.1X para dispositivos móveis.
Para FreeRADIUS em Wi‑Fi corporativo, EAP‑TTLS + PAP é mais recomendado e mais seguro do que PEAP/MSCHAPv2, pois evita vulnerabilidades conhecidas do MSCHAPv2 e utiliza proteção baseada exclusivamente em TLS.
O PAP não é inseguro, porque está dentro do túnel TLS.
A configuração que segue abaixo é a mínima para o funcionamento.
Configure
# vi /etc/raddb/mods-enabled/eap
....
eap {
....
default_eap_type = ttls
....
ttls {
default_eap_type = pap
copy_request_to_tunnel = yes
use_tunneled_reply = yes
}
Configure
# vi /etc/raddb/sites-enabled/inner-tunnel
authorize {
...
filter_username
...
ldap
...
pap
...
if (!&control:Auth-Type && &User-Password) {
update control {
&Auth-Type := LDAP
}
}
...
authenticate {
....
Auth-Type PAP {
pap
}
....
Auth-Type LDAP {
ldap
}
....
post-auth {
...
#ldap
...
Configure
# vi /etc/raddb/mods-enabled/ldap
....
user {
base_dn = "cn=users,cn=accounts,dc=ipa,dc=domain,dc=internal"
....
options {
chpw = no
}
Reinicie o serviço.
# systemctl restart radiusd.service
Com um dispositivo móvel, configure a interface de rede.
Segurança Wi-FI: WPA & WPA2 Enterprise
Autenticação: Tunneled TLS ou TLS encapsulado
Habilite No CA certificate is required
Inner authentication: PAP
Username: Insira o usuário
Password: Insira a senha
No log do radiusd -X, localize a linha que mostra o SSID de sua rede quando realiza a tentativa de conexão:
(XX) Called-Station-Id = "AA-BB-CC-DD-EE-FF:WIFIMOBI"
Configure
# vi /etc/raddb/sites-enabled/inner-tunnel
....
authorize {
...
ldap
# Filtro para o SSID MOBI
if (Called-Station-Id =~ /:WIFIMOBI$/) {
if (!(Ldap-Group == "g_wifimobi")) {
update request {
Module-Failure-Message := "Acesso negado: Usuario nao pertence ao grupo Wifi_MOBI"
}
reject
}
}
# Filtro para o SSID CORP
elsif (Called-Station-Id =~ /:WIFICORP$/) {
if (!(Ldap-Group == "g_wificorp")) {
update request {
Module-Failure-Message := "Acesso negado: Usuario nao pertence ao grupo Wifi_CORP"
}
reject
}
}
...
}
Configure
# vi /etc/raddb/mods-enabled/ldap
....
ldap {
...
group {
base_dn = "cn=groups,cn=accounts,dc=ipa,dc=domain,dc=internal"
name_attribute = "cn"
membership_attribute = "memberOf"
cacheable_name = yes
}
}
Reinicie o serviço.
# systemctl restart radiusd.service
# vi mods-enabled/macfilter
# Mapeamento do arquivo Corp
passwd macs_corp {
filename = "/etc/raddb/consulta-mac/wificorp.txt"
format = "*Calling-Station-Id:"
# key = "%{Calling-Station-Id}"
}
# Mapeamento do arquivo Mobi
passwd macs_mobi {
filename = "/etc/raddb/consulta-mac/wifimobi.txt"
format = "*Calling-Station-Id:"
# key = "%{Calling-Station-Id}"
}
# cat /etc/raddb/consulta-mac/wificorp.txt
60-F6-77-63-1B-36
# cat /etc/raddb/consulta-mac/wifimobi.txt
4C-ED-FB-34-93-4D
authorize {
ldap
...
# =========================================================================
# PERFIL CORPORATIVO (g_wificorp)
# =========================================================================
if ((Ldap-Group == "g_wificorp") && (Called-Station-Id =~ /:WIFICORP$/i)) {
# Força o FreeRADIUS a rodar o módulo e checar o arquivo TXT
macs_corp
# Agora avalia se o MAC foi encontrado com sucesso
if (updated || ok) {
update reply {
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-Id = "301" # VLAN Corp
}
# Força a parada do authorize com sucesso para este perfil
#handled
# Sai da seção authorize atual e segue para a autenticação
#return
}
# Se o grupo era Corp mas o MAC falhou no arquivo
# Se chegou aqui, o grupo era Corp mas o MAC NÃO estava no WIFIcorp.txt.
# Como o Laptop do tiochico está no arquivo Corp, ele morre aqui se tentar a rede Mobi.
else {
update request {
Module-Failure-Message := "Acesso negado: Dispositivo nao homologado para Rede Corporativa."
}
reject
}
}
# =========================================================================
# PERFIL MOBILE (g_wifimobi)
# =========================================================================
elsif ((Ldap-Group == "g_wifimobi") && (Called-Station-Id =~ /:WIFIMOBI$/i)) {
# Força o FreeRADIUS a rodar o módulo mobile
macs_mobi
if (updated || ok) {
update reply {
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-Id = "302" # VLAN Mobi
}
#handled
# Sai da seção authorize atual e segue para a autenticação
#return
}
# Se o grupo era Mobi mas o MAC não estava no arquivo mobile, rejeita.
else {
update request {
Module-Failure-Message := "Acesso negado: Dispositivo nao homologado para Rede Mobile."
}
reject
}
}
# =========================================================================
# USUÁRIO SEM PERFIL DE WI-FI
# =========================================================================
else {
update request {
Module-Failure-Message := "Acesso negado: Usuario nao possui perfil de acesso ao Wi-Fi."
}
reject
}
....
expiration
logintime
....
pap
....
if (!&control:Auth-Type && &User-Password) {
update control {
&Auth-Type := LDAP
}
}
}