Restringir clientes FreeRADIUS para acessar serviço de diferentes LANs com o mesmo usuário e senha

2

Eu tenho FreeRADIUS instalado no meu servidor e também tenho duas LANs (ou podem ser mais) gerenciadas por este servidor. Digamos que LAN A: 192.168.1.0 e LAN B: 192.168.2.0 . Estou usando FreeRADIUS em combinação com postgres database. Na minha tabela radcheck , inseri a seguinte linha:

userbane='myuser', attribute='Password', op=':=', value='mypass' .

Agora quero permitir que os clientes que solicitam serviços do meu FreeRADIUS possam se autenticar com esse nome de usuário e senha somente se fizerem parte da LAN B.

Pergunta : Alguém pode me sugerir como fazer isso?

Eu tentei colocar na linha radcheck mais: username='myuser', attribute='NAS-IP-Address', op=':=', value='192.168.2.1' , mas sem sucesso.

Qualquer ajuda seria apreciada.

    
por artaxerxe 18.06.2012 / 14:46

2 respostas

3

Eu não usei um banco de dados antes, mas usando os usuários arquivo a regra seria algo como isto:

myuser  Cleartext-Password := "mypass", NAS-IP-Address == "192.168.2.1"

Com base nisso, acho que você precisa de duas entradas na tabela radcheck :

usernane='myuser', attribute='Password', op=':=', value='mypass'
username='myuser', attribute='NAS-IP-Address', op='==', value='192.168.2.1'
    
por 18.06.2012 / 19:13
1

Usando um banco de dados SQL, resolvi isso por:

1) Adicionando uma linha especial (site_id)

ALTER TABLE radcheck ADD site_id VARCHAR(30) NOT NULL default '0.0.0.0' AFTER value;

2) Modificando o /etc/freeradius/sql/mysql/dialup.conf como segue

authorize_check_query = "SELECT id, username, attribute, value, op, site_id, valid_from, valid_until \
  FROM ${authcheck_table} \
  WHERE username = '%{SQL-User-Name}' AND site_id='%{NAS-Identifier}' \
  ORDER BY id"

No meu caso, usei o NAS-Id, mas substituir% {NAS-Identifier} por% {NAS-IP-Address} e, opcionalmente, site_id por site_ip fará o truque com um endereço IP

    
por 12.08.2013 / 09:58