Escolar Documentos
Profissional Documentos
Cultura Documentos
br/4085
Gerador de Senhas
Meu IPv4
Meu IPv6
Converter Bytes
Gerador de CGNAT
Arquivos
Github
PRÓXIMO HISTÓRIA
1 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Mikrotik/Ubiquiti)
POR RUDIMAR REMONTTI · PUBLISHED 13 DE MARÇO DE 2020 · UPDATED 19 DE MAIO DE
2021
Ouvir tutorial
GITHUB
TELEGRAM (CONTATOS)
GRUPO DE AJUDA:
@remontticombr
CANAL:
Neste tutorial você irá aprender como integrar o freeradius 3.0.>16 para @blogremontti
2 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Cenário ilustrativo
1 # Servidores
2 FreeRadius: 180.255.0.3
3
4 # Concentradores
5 MK HotSpot: 180.255.1.1
6 MK PPPoE: 180.255.1.3
7
8 # Torre 1
9 UBNT AP1 WPA EAP: 10.0.0.2
10 UBNT AP2 WPA EAP: 10.0.0.3
11 UBNT AP3 WPA EAP: 10.0.0.4
12
13 # Torre 2
14 MK AP1 WPA PSK: 10.1.0.2
15 MK AP2 WPA PSK: 10.1.0.3
16 MK AP3 WPA PSK: 10.1.0.4
3 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
4 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
5 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
6 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 /ip pool
2 add name=failover ranges=100.100.100.0/23
1 /ppp profile
2 add dns-server=8.8.8.8,8.8.4.4 local-address=180.255.1.1 name=Profile50M rate-limit
1 /ppp aaa
7 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 /radius
2 add address=180.255.0.3 secret="SEU_SECRET" service=ppp
1 /interface pppoe-client
2 add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 password
8 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Vamos supor que na conexão com o radius você tenha marcado login, e
nos usuário tenha marcado para autenticar via radius (Já vi sistemas bem
famosos fazerem isso!)
1 /radius
2 add address=180.255.0.3 secret="SEU_SECRET" service=ppp,login
3 /user aaa
4 set use-radius=yes
9 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
10 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
11 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Da para melhorar isso? Claro! Podemos dizer que este usuário só pode ser
acessado de um determinado IP, ex.: “180.255.3.33”
Agora que já aprendemos como deixar nosso login seguro, não podemos
esquecer que os o jose@provedor.com ainda consegue logar no seu
router, pois ele não tem nenhum outro atributo vinculado, entendeu o
perigo? Isso que não chegamos na parte do WPA-EAP, ele poderia ser
utilizado lá também.
12 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
13 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
14 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
15 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
16 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
17 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 # No seu RouteOS
2 /ppp profile set Profile50M rate-limit=100k/100k
Iremos ver agora como buscar nosso IPv4 através da pool do radius,
tabela radippool
Vamos inserir apenas 3 entradas para demonstrar sendo 3 de IPs Validos
e 3 para bloqueios. No seu caso você irá inserir todos seus IPs um a um.
18 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
RouterOS
Radius
19 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
pool_bloq.
Talvez você esteja pensando: “Putz mas para cada usuário vai ter vários
inserts!”. E é por isso que as tabelas radgroupcheck , radgroupreply e
radusergroup existem para simpli�car. É nela então que vamos criar
nossos “planos”, onde podemos agrupar os atributos Service-Type,
Framed-Protocol, Mikrotik-Rate-Limit, MS-Primary-DNS-Server e MS-
Secondary-DNS-Server assim não sendo mais necessário informar para
cada usuário.
Vamos então criar nosso Plano 10MB. Teremos um novo atributo que
acho importante o uso, o Acct-Interim-Interval, ele se “equivale” ao
interim-update=5m lá do mikrotik “/ppp aaa”, isso fará que se o mikrotik
não atualizar os valores o freeradius solicite, em uma tradução simples é
o tempo em que a tabela radacct é atualizada.
20 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
21 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
22 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
23 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
24 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Podemos ver que nossas regras estão funcionado. Vale lembrar que se
for bloquear um usuário qual esteja com o atributo Framed-IP-Address
onde você setou um IP �xo para o mesmo será necessário remover, caso
contrario o cliente não irá receber o IP da faixa bloqueada.
25 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
26 +----+------------+-------------------------+----+-----------------+
27 8 rows in set (0.000 sec)
28
29 MariaDB [radius]> SELECT * FROM `radcheck` WHERE `username` = 'jose@provedor.com'
30 +----+-------------------+--------------------+----+-------------------+
31 | id | username | attribute | op | value |
32 +----+-------------------+--------------------+----+-------------------+
33 | 15 | jose@provedor.com | Cleartext-Password | := | senha_do_usuario |
34 | 16 | jose@provedor.com | Calling-Station-Id | == | 08:00:00:00:00:B2 |
35 +----+-------------------+--------------------+----+-------------------+
36 2 rows in set (0.000 sec)
37
38 MariaDB [radius]> SELECT * FROM `radusergroup`;
39 +----+-------------------+-----------+----------+
40 | id | username | groupname | priority |
41 +----+-------------------+-----------+----------+
42 | 1 | jose@provedor.com | BLOQUEADO | 1 |
43 +----+-------------------+-----------+----------+
44 1 row in set (0.000 sec)
Simultaneous-Use
Existe um atributo chamado Simultaneous-Use qual você pode limitar o
número de vezes que aquele usuário pode autenticar, aplicando na
radgroupcheck �caria:
1 session {
2 radutmp
26 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
3 sql
4 }
27 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
28 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Algo que você pode criar é uma rotina com um script de sua linguagem
preferia, fazendo um simples select na radippool e veri�ca se existe dois
usuários, e tomando uma ação.
Uma solução simples que encontrei para resolver isso no passado foi criar
um script executado a cada 5 min no concentrador PPPoE, onde ele
veri�ca se a conexão com o IP do servidor freeradius está respondendo, e
caso não responda ele desative/ative os pppoe-servers fazendo com que
os clientes desconectem (Na minha situação quando o concentrador não
tem comunicação com o freeradius o cliente também não tem) assim
quando estabilizar a comunicação todos irão reautenticar novamente.
Tenho isso até hoje, confesso que me sinto mais confortável, caso deseje
saber como ele é segue o script:
29 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
30 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 /system scheduler
2 add interval=5m name=checa-radius on-event="{ \r\
3 \n :local cont 0\r\
4 \n :local services [/interface pppoe-server server print count-only]\r\
5 \n /interface pppoe-server server print\r\
6 \n :if ([/ping 180.255.0.3 count=10] = 0) do={\r\
7 \n :log error message=\"COMUNICACAO RADIUS [ OFF ]\";\r\
8 \n :while (\$cont < \$services) do={\r\
9 \n /interface pppoe-server server disable numbers=\$cont\r\
10 \n /interface pppoe-server server enable numbers=\$cont\r\
11 \n :set cont (\$cont+1)\r\
12 \n }\r\
13 \n }\r\
14 \n}" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon
1 {
2 :local cont 0
3 :local services [/interface pppoe-server server print count-only]
4 /interface pppoe-server server print
5 :if ([/ping 180.255.0.3 count=10] = 0) do={
6 :log error message="COMUNICACAO RADIUS [ OFF ]";
7 :while ($cont < $services) do={
8 /interface pppoe-server server disable numbers=$cont
9 /interface pppoe-server server enable numbers=$cont
10 :set cont ($cont+1)
11 }
12 }
13 }
31 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 # vim /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf
1 ##allocate_find = "\
2 ## SELECT framedipaddress FROM ${ippool_table} \
3 ## WHERE pool_name = '%{control:Pool-Name}' \
4 ## AND expiry_time IS NULL \
5 ## ORDER BY \
6 ## RAND() \
7 ## LIMIT 1 \
8 ## FOR UPDATE"
1 allocate_find = "\
2 SELECT framedipaddress FROM ${ippool_table} \
3 WHERE ( \
4 CASE WHEN (SELECT COUNT(framedipaddress) FROM ${ippool_table} WHERE pool_name
5 (pool_name = '%{control:Pool-Name}' AND expiry_time IS NULL) \
6 ELSE \
7 (pool_name = 'pool_cgnat' AND expiry_time IS NULL) \
32 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
8 END) \
9 ORDER BY RAND() \
10 LIMIT 1 \
11 FOR UPDATE"
Você vai precisar adicionar agora todos seus IPs de CGNAT (cgnat.sql) ex.:
Autenticação Wireless
Conheço muitos provedores que tem apenas uma senha para todos seus
POPs, ou uma diferente para cada, mas são �xas e isso é muito
perigoso!!!
Vamos pensar agora só pelas piores possibilidades OK? Imagine um
funcionário seu que saiu da sua empresa sabendo a senha de todas as
setoriais de suas torres. Imaginou? Você pode até me dizer: “-Grande
coisa ele não vai saber meus usuários e senhas dos PPPoE.” Realmente
33 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
ele pode não saber (mas eu nem estou preocupado com isso, pois eu
prendo usuário ao MAC, agora se seu sistema não faz isso pode brotar
uns gatinhos ai na rede) mas o que realmente me preocupa é o fato das
“malvadezas” que podem serem feitas, vamos para primeira? Pego um
NanoStation e conecto em sua setorial (para piorar essa setorial esta em
bridge com mais alguma coisa… quem sabe com toda a rede?), agora que
estou “dentro” da rede posso criar um pppoe-server e autenticar todas as
solicitações (é só con�gurar para ignorar as senhas) toda vez q um um
cliente solicita uma conexão um pacote broadcast é enviado na rede e
quem responde primeiro ganha, posso ainda gerar um alto trafego
(DDoS) bagunçar. Ai você me diz: “-Mas aqui na minha cidade o pessoal
nem sabe fazer isso.” Realmente, mas se esse infeliz agora pegar e
conectar outro NanoStation e interligar um NanoStation no outro?
Precisa ser inteligente para fazer isso? (Putz posso estar dando idéias, não
faça isso com seu concorrente) Um loop esta feito, e toda essa rede vai
parar de funcionar. (Conheco uma galera que usa ONUs na sua rede
GPON em brid e esquece isso da para fazer também)… Parei se não vou
acabar ser acusado, mas o que quero alertar é que existe uma in�nidade
de possibilidades ao deixar uma pessoa maliciosa conectar em sua rede.
WPA-PSK
É por isso que uma autenticação com o radius para sua rede wireless é o
melhor caminho. Como isso funciona? Para cada dispositivo/antena que
34 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
for conectar você terá uma senha exclusiva só para ela, vou começar
explicando como fazer isso com senhas PSK com o atributo Mikrotik-
Wireless-PSK da Mikrotik.
Com base no nosso diagrama da rede vamos ver como seria para
autenticar o usuário joao@provedor.com, primeiramente vamos
con�gurar nosso AP-Mikrotik.
35 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 /interface wireless
2 set [ find default-name=wlan1 ] \
3 disabled=no mode=ap-bridge \
4 security-profile=WPA2-PSK-Radius \
5 ssid=SSID-PSK-Radius
Fizemos a nossa conexão com o radius, informando que vamos usar neste
caso apenas o serviço wireless.
1 /radius
2 add address=180.255.0.3 secret=SEU_SECRET service=wireless
Para você que está estudando é sempre deixar o radius parado e rado-lo
em modo debug com o comando freeradius -X e observar tudo que
rola. Para minha bancada estou usando um mikrotik hAp e vou tentar
conectar meu celular, sem cadastrar nada no radius ainda, logo em
algumas linhas veremos o seguinte:
36 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
37 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
WPA-EAP
No mikrotik:
Crie um novo pro�le de segurança, para diferenciar usarei o mac-
format=XXXXXXXXXXXX. Vale lembrar que tem outras formas de
con�gurar o EAP, mas para nosso lab podemos subi-lo da forma mais
simples.
38 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
4 name=WPA2-EAP-Radius radius-called-format=ssid \
5 radius-eap-accounting=yes radius-mac-format=XXXXXXXXXXXX\
6 supplicant-identity=MikroTik
1 /interface wireless
2 set [ find default-name=wlan1 ] disabled=no \
3 mode=ap-bridge security-profile=WPA2-EAP-Radius ssid=WPA2-EAP-Radius
Conecte ao radius.
1 /radius
2 add address=180.255.0.3 secret=SEU_SECRET service=wireless
No EAP não é necessariamente ser o MAC o usuário, mas �ca mais pratico
até para programar, logo precisamos de um usuário e senha e prender ele
39 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
ao tipo EAP. Eu particularmente NÃO uso EAP no mikrotik, por mais que
PSK seja mais facil quebrar com o uso do radius �ca muito complicado, e
além do mais �ca exclusivo ao MAC, já no EAP poderá autenticar com a
mesma senha em vários dispositivos.
Hotspot
Vamos falar primeiro do módulo contador (sqlcounter). O módulo
sqlcounter permite um contador de pacotes usando registros contábeis
gravados no banco de dados.
1 # ln -s /etc/freeradius/3.0/mods-available/sqlcounter /etc/freeradius/3.0/mods-enabled/sqlcount
40 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Restart o freeradius
41 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
42 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
43 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Vamos ao teste:
44 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
45 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 mariadb -p -u radius
1 USE radius;
2 ALTER TABLE `radacct`
3 ADD `framedipv6prefix` VARCHAR(41) NULL DEFAULT NULL AFTER `framedipaddress`,
4 ADD `delegatedipv6prefix` VARCHAR(41) NULL DEFAULT NULL AFTER `framedipv6prefix
46 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
1 # vim /etc/freeradius/3.0/mods-config/sql/main/mysql/queries.conf
Vou destacar as linhas que foram alteradas, ajuste seu arquivo: (linhas
208,262-264,292-294,331-333,382-384)
47 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
37 #
38 sql_user_name = "%{User-Name}"
39
40 #######################################################################
41 # Default profile
42 #######################################################################
43 # This is the default profile. It is found in SQL by group membership.
44 # That means that this profile must be a member of at least one group
45 # which will contain the corresponding check and reply items.
46 # This profile will be queried in the authorize section for every user.
47 # The point is to assign all users a default profile without having to
48 # manually add each one to a group that will contain the profile.
49 # The SQL module will also honor the User-Profile attribute. This
50 # attribute can be set anywhere in the authorize section (ie the users
51 # file). It is found exactly as the default profile is found.
52 # If it is set then it will *overwrite* the default profile setting.
53 # The idea is to select profiles based on checks on the incoming packets,
54 # not on user group membership. For example:
55 # -- users file --
56 # DEFAULT Service-Type == Outbound-User, User-Profile := "outbound"
57 # DEFAULT Service-Type == Framed-User, User-Profile := "framed"
58 #
59 # By default the default_user_profile is not set
60 #
61 #default_user_profile = "DEFAULT"
62
63 #######################################################################
64 # NAS Query
65 #######################################################################
66 # This query retrieves the radius clients
67 #
68 # 0. Row ID (currently unused)
69 # 1. Name (or IP address)
70 # 2. Shortname
71 # 3. Type
72 # 4. Secret
73 # 5. Server
74 #######################################################################
75
76 client_query = "\
77 SELECT id, nasname, shortname, type, secret, server \
78 FROM ${client_table}"
79
80 #######################################################################
81 # Authorization Queries
82 #######################################################################
48 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
49 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
50 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
51 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
221 - UNIX_TIMESTAMP(acctstarttime), \
222 acctterminatecause = '%{%{Acct-Terminate-Cause}:-NAS-Reboot}'
223 WHERE acctstoptime IS NULL \
224 AND nasipaddress = '%{NAS-IP-Address}' \
225 AND acctstarttime <= FROM_UNIXTIME(\
226 %{integer:Event-Timestamp})"
227 }
228
229 accounting-off {
230 query = "${..accounting-on.query}"
231 }
232
233 start {
234 #
235 # Insert a new record into the sessions table
236 #
237 query = "\
238 INSERT INTO ${....acct_table1} \
239 (${...column_list}) \
240 VALUES \
241 ('%{Acct-Session-Id}', \
242 '%{Acct-Unique-Session-Id}', \
243 '%{SQL-User-Name}', \
244 '%{Realm}', \
245 '%{NAS-IP-Address}', \
246 '%{%{NAS-Port-ID}:-%{NAS-Port}}', \
247 '%{NAS-Port-Type}', \
248 FROM_UNIXTIME(%{integer:Event-Timestamp}), \
249 FROM_UNIXTIME(%{integer:Event-Timestamp}), \
250 NULL, \
251 '0', \
252 '%{Acct-Authentic}', \
253 '%{Connect-Info}', \
254 '', \
255 '0', \
256 '0', \
257 '%{Called-Station-Id}', \
258 '%{Calling-Station-Id}', \
259 '', \
260 '%{Service-Type}', \
261 '%{Framed-Protocol}', \
262 '%{Framed-IP-Address}', \
263 '%{Framed-IPv6-Prefix}', \
264 '%{Delegated-IPv6-Prefix}')"
265
266 #
52 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
53 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
313 '%{Realm}', \
314 '%{NAS-IP-Address}', \
315 '%{%{NAS-Port-ID}:-%{NAS-Port}}', \
316 '%{NAS-Port-Type}', \
317 FROM_UNIXTIME(%{integer:Event-Timestamp} - %{%{Acct-Session
318 FROM_UNIXTIME(%{integer:Event-Timestamp}), \
319 NULL, \
320 %{%{Acct-Session-Time}:-NULL}, \
321 '%{Acct-Authentic}', \
322 '%{Connect-Info}', \
323 '', \
324 '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}'
325 '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}'
326 '%{Called-Station-Id}', \
327 '%{Calling-Station-Id}', \
328 '', \
329 '%{Service-Type}', \
330 '%{Framed-Protocol}', \
331 '%{Framed-IP-Address}', \
332 '%{Framed-IPv6-Prefix}', \
333 '%{Delegated-IPv6-Prefix}')"
334 }
335
336 stop {
337 #
338 # Session has terminated, update the stop time and statistics.
339 #
340 query = "\
341 UPDATE ${....acct_table2} SET \
342 acctstoptime = FROM_UNIXTIME(\
343 %{integer:Event-Timestamp}), \
344 acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \
345 acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' \
346 << 32 | '%{%{Acct-Input-Octets}:-0}', \
347 acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' \
348 << 32 | '%{%{Acct-Output-Octets}:-0}', \
349 acctterminatecause = '%{Acct-Terminate-Cause}', \
350 connectinfo_stop = '%{Connect-Info}' \
351 WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
352
353 #
354 # The update condition matched no existing sessions. Use
355 # the values provided in the update to create a new session.
356 #
357 query = "\
358 INSERT INTO ${....acct_table2} \
54 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
359 (${...column_list}) \
360 VALUES \
361 ('%{Acct-Session-Id}', \
362 '%{Acct-Unique-Session-Id}', \
363 '%{SQL-User-Name}', \
364 '%{Realm}', \
365 '%{NAS-IP-Address}', \
366 '%{%{NAS-Port-ID}:-%{NAS-Port}}', \
367 '%{NAS-Port-Type}', \
368 FROM_UNIXTIME(%{integer:Event-Timestamp} - %{%{Acct-Session
369 FROM_UNIXTIME(%{integer:Event-Timestamp}), \
370 FROM_UNIXTIME(%{integer:Event-Timestamp}), \
371 %{%{Acct-Session-Time}:-NULL}, \
372 '%{Acct-Authentic}', \
373 '', \
374 '%{Connect-Info}', \
375 '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}'
376 '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}'
377 '%{Called-Station-Id}', \
378 '%{Calling-Station-Id}', \
379 '%{Acct-Terminate-Cause}', \
380 '%{Service-Type}', \
381 '%{Framed-Protocol}', \
382 '%{Framed-IP-Address}', \
383 '%{Framed-IPv6-Prefix}', \
384 '%{Delegated-IPv6-Prefix}')"
385 }
386 }
387 }
388
389
390 #######################################################################
391 # Authentication Logging Queries
392 #######################################################################
393 # postauth_query - Insert some info after authentication
394 #######################################################################
395
396 post-auth {
397 # Write SQL queries to a logfile. This is potentially useful for bulk inserts
398 # when used with the rlm_sql_null driver.
399 # logfile = ${logdir}/post-auth.sql
400
401 query = "\
402 INSERT INTO ${..postauth_table} \
403 (username, pass, reply, authdate) \
404 VALUES ( \
55 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
405 '%{SQL-User-Name}', \
406 '%{%{User-Password}:-%{Chap-Password}}', \
407 '%{reply:Packet-Type}', \
408 '%S')"
409 }
Se quiser fazer uma doação para o café �carei muito feliz pelo seu
reconhecimento! (Esse deu trabalho!)
Abraço!
Fontes:
https://wiki.freeradius.org/guide/SQL-HOWTO
56 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
https://wiki.freeradius.org/modules/Rlm_sql
https://wiki.freeradius.org/modules/Rlm_sqlippool
https://wiki.freeradius.org/modules/Rlm_sqlcounter
Rudimar Remontti
Trabalho atualmente como Gerente de Redes em um Provedor de
Internet no Rio Grande do Sul.
12 1 7
57 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
14 RESULTADOS
Comentários 13 Pingbacks 1
58 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
password = <<>>
radius_db = “radius”
read_groups = yes
read_pro�les = yes
read_clients = yes
delete_stale_sessions = yes
sql_user_name = “%{User-Name}”
log�le = “/var/log/freeradius/radacct/sql.log”
default_user_pro�le = “”
client_query = “SELECT id, nasname, shortname, type, secret, server FROM
nas”
authorize_check_query = “SELECT id, username, attribute, value, op FROM
radcheck WHERE username = ‘%{SQL-User-Name}’ ORDER BY id”
authorize_reply_query = “SELECT id, username, attribute, value, op FROM
radreply WHERE username = ‘%{SQL-User-Name}’ ORDER BY id”
authorize_group_check_query = “SELECT id, groupname, attribute, Value, op
FROM radgroupcheck WHERE groupname = ‘%{SQL-Group}’ ORDER BY id”
authorize_group_reply_query = “SELECT id, groupname, attribute, value, op
FROM radgroupreply WHERE groupname = ‘%{SQL-Group}’ ORDER BY id”
group_membership_query = “SELECT groupname FROM radusergroup WHERE
username = ‘%{SQL-User-Name}’ ORDER BY priority”
simul_count_query = “SELECT COUNT(*) FROM radacct WHERE username =
‘%{SQL-User-Name}’ AND acctstoptime IS NULL”
simul_verify_query = “SELECT radacctid, acctsessionid, username,
nasipaddress, nasportid, framedipaddress, callingstationid, framedprotocol
FROM radacct WHERE username = ‘%{SQL-User-Name}’ AND acctstoptime IS
NULL”
59 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
safe_characters =
“@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_:
/”
auto_escape = no
accounting {
reference = “%{tolower:type.%{%{Acct-Status-Type}:-%{Request-Processing-
Stage}}.query}”
type {
accounting-on {
query = “UPDATE radacct SET acctstoptime = FROM_UNIXTIME(%
{integer:Event-Timestamp}), acctsessiontime = ‘%{integer:Event-Timestamp}’ –
UNIX_TIMESTAMP(acctstarttime), acctterminatecause = ‘%{%{Acct-Terminate-
Cause}:-NAS-Reboot}’ WHERE acctstoptime IS NULL AND nasipaddress =
‘%{NAS-IP-Address}’ AND acctstarttime <= FROM_UNIXTIME(%{integer:Event-
Timestamp})"
}
accounting-o� {
query = "UPDATE radacct SET acctstoptime = FROM_UNIXTIME(%
{integer:Event-Timestamp}), acctsessiontime = '%{integer:Event-Timestamp}' –
UNIX_TIMESTAMP(acctstarttime), acctterminatecause = '%{%{Acct-Terminate-
Cause}:-NAS-Reboot}' WHERE acctstoptime IS NULL AND nasipaddress =
'%{NAS-IP-Address}' AND acctstarttime <= FROM_UNIXTIME(%{integer:Event-
Timestamp})"
}
start {
query = "INSERT INTO radacct (acctsessionid, acctuniqueid, username, realm,
nasipaddress, nasportid, nasporttype, acctstarttime, acctupdatetime,
60 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
61 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
stop {
query = "UPDATE radacct SET acctstoptime = FROM_UNIXTIME(%
{integer:Event-Timestamp}), acctsessiontime = %{%{Acct-Session-Time}:-
NULL}, acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-
Input-Octets}:-0}', acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' << 32
| '%{%{Acct-Output-Octets}:-0}', acctterminatecause = '%{Acct-Terminate-
Cause}', connectinfo_stop = '%{Connect-Info}' WHERE AcctUniqueId = '%{Acct-
Unique-Session-Id}'"
}
}
}
post-auth {
reference = ".query"
log�le = "/var/log/freeradius/post-auth.sql"
query = "INSERT INTO radpostauth (username, pass, reply, authdate) VALUES (
'%{SQL-User-Name}', '%{%{User-Password}:-%{Chap-Password}}',
'%{reply:Packet-Type}', '%S')"
}
}
rlm_sql (sql): Driver rlm_sql_mysql (module rlm_sql_mysql) loaded and linked
porém não está logando os dados.. alguma dica a ser veri�cada nas con�gs?
Responder
Responder
62 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Responder
Responder
Algo como:
INSERT INTO radreply ( id , username , attribute , op , value ) VALUES
(NULL, ‘jose@provedor.com’, ‘Framed-IPv6-Pool’, ‘=’, ‘nome_da_pool6’);
Responder
63 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Responder
Responder
E queria fazer uma pergunta, uma vez vi em algum lugar que é possível setar
velocidades diferentes para os planos em horários especí�cos. Por exemplo:
das 1-7hrs da manhã o PLANO_X terá 100m/200m e nos outros horários ele
tem 50m/100m.
Att
Responder
64 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Responder
Responder
Responder
Conceitualmente o Burst não funciona dessa forma por ser estatístico. ( ref.:
https://wiki.mikrotik.com/wiki/Manual:Queues_-_Burst ).
Normalmente em todos sistemas ele segue esse padrão estatístico.
65 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Responder
Responder
DEIXE UM COMENTÁRIO
Comentário *
Nome * E-mail *
Site
66 of 67 02/01/2023 16:41
Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, ... https://blog.remontti.com.br/4085
Publicar comentário
CONSULTORIA PARTICULAR
Utilitários ➔
Gerador de Senhas
Meu IPv4
Meu IPv6
Converter Bytes
Gerador de CGNAT
Arquivos
Github
Remontti © 2018. Todos os direitos reservados.
67 of 67 02/01/2023 16:41