Opa pessoal!!
Montei aqui um pequeno passo a passo para a criação de um servidor RADIUS (no Ubuntu) para autenticação de clientes atraves de um AP .
Esse passo a passo é um resumo de um job que fiz na empresa em que presto serviço. No caso havia a necessidade de que os AP autenticassem atravez do Active Directory.
Setup inicial do FREERADIUS – Ubuntu
1- Instale o FreeRadus, easy-rsa, samba e winbind
# apt-get install freeradius easy-rsa samba winbind
2- Quando o FreeRadius for instalado, o serviço vai subir automaticamente. Então precisa pará-lo para alterar as configurações:
# service freeradius stop
3- O FreeRadius precisa de certificados para proteção de informações. Aqui geramos eles:
# cp -R /usr/share/easy-rsa /etc/freeradius/certs/
# cd /etc/freeradius/certs/easy-rsa
# source vars
# ./clean-all
# ./build-ca
# ./build-key-server server
4- Copie as cheves geradas para o FreeRadius
# cp keys/ca.crt /etc/freeradius/certs/
5- Mude o OWNER do certificado
# chown freerad /etc/freeradius/certs/server*
6- Nesse ponto você já deve conseguir testar o servidorRadius. Para fazer esse teste, crie um usuário/senha no arquivo “users”, inicie o FreeRadius como DEBUG e use o aplicativo “radtest”
6.1- Criação de usuário: Edite o arquivo /etc/freeradius/users e adicione na última linha:
testuser Cleartext-Password := “testpassword”
6.2- Iniciar o FreeRadius como DEBUG
# freeradius -X
6.3- testar a autenticação
# radtest testuser testpassword localhost 0 testing123
Integração com o Active Directory
1- Configurações do arquivo smb.conf (samba)
[global]
workgroup = EMPRESACORP
realm = EMPRESA.CORP
netbios name = RADIUS_SERVER
server string = %L
security = ads
allow trusted domains = yes
idmap uid = 5000-10000
winbind gid = 5000-10000
template homedir = /usr/home/%U
template shell = /bin/sh
winbind cache time = 3600
winbind nested groups = yes
winbind use default domain = yes
winbind separator = /
winbind enum users = yes
winbind enum groups = yes
winbind offline logon = yes
syslog only = Yes
password server = DC01.EMPRESA.CORP
socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536
use sendfile = yes
read raw = yes
use sendfile = yes
local master = no
use sendfile = yes
dns proxy = no
# ACL Support
map acl inherit = yes
acl group control = yes
# LOGGING
log file = /var/log/samba/%m
log level = 1
max log size = 1000
syslog = 2
2- Edite o arquivo /etc/krb5.conf adicionando as credenciais do dominio da EMPRESA
[libdefaults]
default_realm = EMPRESA.CORP
clockskew = 600
[realms]
EMPRESA.CORP = {
kdc = EMPRESA.CORP
}
[domain_realm]
.EMPRESA.CORP = EMPRESA.CORP
3- Inicie o serviço do SAMBA
# service samba start
4- Adicione o servidor no domínio
# net join -u Administrator
5- Você pode verificar se a maquina está no dominio testando a autenticação com um usuário válido (guarde esse comando, usaremos ele mais tarde) – Altere o usuário e senha.
DICA: Para a senha não ficar no histórico, coloque um espaço em branco antes do comando.
# ntlm_auth –request-nt-key –domain=EMPRESA.CORP –username=usuário –password=password
6- Para o FreeRadius acessar o winbind, é necessário alterar algumas permissões de arquivo:
# usermod -a -G winbindd_priv freerad
# chmod winbindd_priv /var/lib/samba/winbindd_privileged/
7- O FreeRadius conta com 2 arquivos que descrevem a forma de autorização e autenticação. São eles:
-> /etc/freeradius/sites-enabled/default
-> /etc/freeradius/sites-enabled/inner-tunnel
8- Para integrar o FreeRadius com o Active Directory, edite o arquivo /etc/freeradius/modules/mschap e altere a linha ntlm_auth. Segue a configuração aplicada na EMPRESA:
mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
ntlm_auth = “/usr/bin/ntlm_auth –request-nt-key –domain=EMPRESA.CORP –require-membership-of=EMPRESA.corp//wifi –username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} –challenge=%{%{mschap:Challenge}:-00} –nt-response=%{%{mschap:NT-Response}:-00}”
# ntlm_auth_timeout = 10
# use_open_directory = yes
allow_retry = yes
# retry_msg = “Re-enter (or reset) the password”
}
Configuração de clientes
1- Todos os clientes que se comuniquem com o Radius devem ser configurados, liberados (ou não). Para isso edite o arquivo /etc/freeradius/clients.conf e adicione no final:
client 0.0.0.0/0 {
secret = test1234
shortname = name
nastype = other
}
( O IP pode ser alterado restringindo a resposta a apenas a rede que for escolhida )