AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1064433
Accepted
Lasse Michael Mølgaard
Lasse Michael Mølgaard
Asked: 2021-05-23 15:27:48 +0800 CST2021-05-23 15:27:48 +0800 CST 2021-05-23 15:27:48 +0800 CST

Como configurar um servidor proxy radius (FreeRadius 3)

  • 772

Estou tentando configurar um servidor proxy Freeradius que encaminha todas as solicitações para outro servidor Freeradius.

Para referência veja a imagem a seguir:

Servidor proxy radius via VPN

A razão para esta configuração é que eu quero que os usuários se conectem à LAN local via VPN, mas o site local não está acessível devido à implementação de NAT no ISP.

No entanto, sou capaz de fazer uma conexão VPN site2site da LAN local para o servidor VPN, portanto, quero que os usuários possam fazer uma conexão VPN com a rede local através do servidor VPN público, desde que sejam um usuário válido na rede local .

Eu tenho um servidor Freeradius em execução na LAN local que valida os usuários em um banco de dados - e essa parte está funcionando bem.

Configuração do lado do servidor VPN

Pelo que entendi a única coisa que preciso modificar no servidor é o arquivo proxy.conf.

Supondo que os nomes de usuário que fazem login na VPN estejam no formulário [email protected], eu só precisaria adicionar a seguinte entrada a proxy.conf:

realm example.com {
    type = radius
    secret = VeryS3cretPassw0rd

    authhost = local-radius.example.com:1812
    accthost = local-radius.example.com:1813

    nostrip
}

A nostripentrada garante que a solicitação com proxy não remova o @-postfix do nome de usuário.

Eu também precisaria adicionar o seguinte a /etc/hosts:

   # VPN Address of local-radius.example.com
 
   192.168.100.2   local-radius.example.com

Configuração do lado do servidor radius local

No servidor radius local eu preciso atualizar client.confpara que quaisquer consultas ao servidor radius local e originadas do endereço IP da VPN sejam permitidas. Como por exemplo esta entrada:

client vpn-net {

        # Allow requests originating from VPN subnet.

        ipaddr          = 192.168.100.0/24
        secret          = VeryS3cretPassw0rd
}

A execução do seguinte comando no servidor VPN funciona conforme o esperado:

radtest -t mschap [email protected] SecretPassword local-radius.example.com:1812 0 VeryS3cretPassw0rd

Recebo a seguinte resposta:

Sent Access-Request Id 108 from 0.0.0.0:47466 to 192.168.100.2:1812 length 148
        User-Name = "[email protected]"
        MS-CHAP-Password = "SecretPassword "
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "SecretPassword"
        MS-CHAP-Challenge = ....
        MS-CHAP-Response = ...
Received Access-Accept Id 108 from 192.168.100.2:1812 to 192.168.100.1:47466 length 84
        MS-CHAP-MPPE-Keys = ...
        MS-MPPE-Encryption-Policy = Encryption-Required
        MS-MPPE-Encryption-Types = 4

No entanto, a execução do seguinte comando no servidor VPN falha:

radtest -t mschap [email protected] SecretPassword localhost:18120 0 testing123

A saída do comando é:

Sent Access-Request Id 104 from 0.0.0.0:39558 to 127.0.0.1:18120 length 148
        User-Name = "[email protected]"
        MS-CHAP-Password = "SecretPassword"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "SecretPassword"
        MS-CHAP-Challenge = ...
        MS-CHAP-Response = ...
Received Access-Reject Id 104 from 127.0.0.1:18120 to 127.0.0.1:39558 length 20
(0) -: Expected Access-Accept got Access-Reject

A execução do comando freeradius -Xno servidor VPN fornece, entre outros, esta saída:

(0) mschap: Found MS-CHAP attributes.  Setting 'Auth-Type  = mschap'
(0)     [mschap] = ok
(0) suffix: Checking for suffix after "@"
(0) suffix: Looking up realm "example.com" for User-Name = "[email protected]"
(0) suffix: Found realm "example.com"
(0) suffix: Adding Realm = "example.com"
(0) suffix: Proxying request from user [email protected] to realm example.com
(0) suffix: Preparing to proxy authentication request to realm "example.com"
(0)     [suffix] = updated
(0) ntdomain: Request already has destination realm set.  Ignoring
(0)     [ntdomain] = noop
(0) eap: No EAP-Message, not doing EAP
(0)     [eap] = noop
(0)     [files] = noop
(0)     [expiration] = noop
(0)     [logintime] = noop
(0)     [pap] = noop
(0)   } # authorize = updated
(0) There was no response configured: rejecting request

Monitorar o freeradius na rede local indica que o servidor nunca foi chamado, do servidor vpn, então o que estou perdendo?

proxy freeradius freeradius2
  • 1 1 respostas
  • 3035 Views

1 respostas

  • Voted
  1. Best Answer
    Lasse Michael Mølgaard
    2021-05-25T07:53:44+08:002021-05-25T07:53:44+08:00

    Não tenho certeza do que aconteceu, mas depois de fazer uma reinstalação completa do Freeradius no servidor, não houve problemas com o proxy da solicitação.

    Para simplificar, você pode simplesmente apontar o servidor proxy para o endereço IP da VPN do servidor radius local e é basicamente isso.

    Supondo que você tenha uma instalação limpa do Freeradius, você só precisa modificar proxy.confcom a seguinte configuração:

    realm example.com {
        type = radius
        secret = VeryS3cretPassw0rd
    
        # Connect to the VPN IP adress of local radius server.
        authhost = 192.168.100.2:1812
        accthost = 192.168.100.2:1813
    
        nostrip
    }
    

    Além disso, ao testar o login do usuário com radtest: Não teste com relação ao teste localhost:18120, pois você está apenas testando o usuário local na VPN, pois ele é mapeado no inner-tunnelservidor virtual.

    Em vez disso, você deve testar em relação à localhost:1812medida que é mapeado em relação ao defaultservidor virtual.

    O teste no servidor proxy me deu, entre outros, a seguinte saída defreeradius -x

    (0) suffix: Checking for suffix after "@"
    (0) suffix: Looking up realm "example.com" for User-Name = "[email protected]"
    (0) suffix: Found realm "example.com"
    (0) suffix: Adding Stripped-User-Name = "user"
    (0) suffix: Adding Realm = "example.com"
    (0) suffix: Proxying request from user user to realm example.com
    (0) suffix: Preparing to proxy authentication request to realm "example.com"
    (0)     [suffix] = updated
    (0) eap: No EAP-Message, not doing EAP
    (0)     [eap] = noop
    (0)     [files] = noop
    (0)     [expiration] = noop
    (0)     [logintime] = noop
    (0)     [pap] = noop
    (0)   } # authorize = updated
    (0) Starting proxy to home server 192.168.100.2 port 1812
    (0) server default {
    (0) }
    (0) Proxying request to home server 192.168.100.2 port 1812 timeout 14.000000
    (0) Sent Access-Request Id 191 from 127.0.0.1:45143 to 192.168.100.2:1812 length 142
    (0)   User-Name = "user"
    (0)   NAS-IP-Address = 127.0.1.1
    (0)   NAS-Port = 0
    (0)   Message-Authenticator = ...
    (0)   MS-CHAP-Challenge = ...
    (0)   MS-CHAP-Response = ...
    (0)   Event-Timestamp = "May 24 2021 17:18:40 CEST"
    (0)   Proxy-State = 0x313133
    Waking up in 0.3 seconds.
    (0) Marking home server 192.168.100.2 port 1812 alive
    (0) Clearing existing &reply: attributes
    (0) Received Access-Accept Id 191 from 192.168.100.2:1812 to 192.168.100.1:45143 length 89
    (0)   MS-CHAP-MPPE-Keys = ...
    (0)   MS-MPPE-Encryption-Policy = Encryption-Required
    (0)   MS-MPPE-Encryption-Types = 4
    (0)   Proxy-State = 0x313133
    

    Considerações finais importantes

    Parece que a maneira como o proxy funciona está mudando a cada revisão importante do Freeradius.

    A sintaxe que usei é compatível com a versão 2 do Freeradius, mas considerada obsoleta na versão 3. Aqui, a maneira recomendada é apontar os domínios contra os home_server_poolsquais, por sua vez, aponta para um pool de um ou mais arquivos home_servers.

    Embora obsoleto - ainda funciona com a versão 3. :-)

    No entanto: Na versão 4 do Freeradius tudo mudou novamente ao configurar um servidor proxy e, como tal, precisamos aprender uma nova maneira de configurar o servidor.

    Para maiores informações. Por favor, acesse este link:

    https://wiki.freeradius.org/upgrading/version4/proxy

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve