Apple iOS possui função "VPN On Demand". Com esta função a conexão VPN é feita sempre que o dispositivo tenta se conectar a determinados domínios ou à internet. iOS suporta "VPN On Demand" apenas com autenticação baseada em certificado.
Para fornecer "VPN On Demand" para usuários iOS do servidor VPN do meu escritório, estamos usando a próxima solução IPSec:
- Ubuntu 14.04 - o sistema operacional do servidor VPN.
- strongSwan 5.1.2 - daemon IKE.
- Para cada par, estou gerando uma chave privada individual e emito um certificado correspondente. O cliente (iOS IKEv1) autentica usando RSA e Xauth.
- iPhone e iPad não podem usar IPSec sem Xauth (chamado Cisco IPSec). E "VPN On Demand" não pode usar o perfil VPN que requer inserção de senha, mas nome de usuário/senha geralmente são exigidos pelo Xauth. Para lidar com esse problema, estamos usando xauth-noauth - falso autenticador Xauth que permite qualquer nome de usuário e senha. Neste caso estamos usando apenas certificado de cliente para autenticá-lo.
Esta solução está funcionando bem para nós. Mas temos um novo requisito - configurar vários servidores VPN com um banco de dados de usuários e contabilizar o uso da VPN.
Esta é uma prática comum para esta tarefa usar RADIUS e o strongSwan possui um plugin para isso. Mas o strongSwan com IKEv1/Xauth usa nome de usuário/senha para autenticar o usuário no servidor RADIUS backend. nome de usuário/senha não está sendo usado na minha solução.
Minhas perguntas:
- Como usar a contabilidade Radius se o Xauth não estiver usando nome de usuário/senha?
- É possível delegar a verificação de autenticação RSA ao servidor RADIUS?
PS A maioria dos meus clientes iOS usa iOS 8, que suporta IKEv2. Existe EAP-TLS no IKEv2. Posso usar o EAP-TLS para delegar a verificação de autenticação RSA ao servidor RADIUS? Ou estou indo na direção errada com o EAP-TLS?
PSPS Minha segunda coisa foi sobre a interface VICI do strongSwan. Eu deveria receber notificações sobre cada nova conexão IPSec, mas parece que o VICI funciona de maneira diferente.
Responder1
RADIUS Contabilidade noraio eapplugin não requer autenticação XAuth. Na verdade funciona com qualquer tipo de autenticação, via RADIUS ou não, desde que o cliente solicite um endereço IP virtual (para IKEv2 até esse requisito pode ser desabilitado). No entanto, com alguns clientes IKEv1, existem alguns problemas em caso de reautenticação (consulte o problema#937e relacionado).
O EAP-TLS possibilita delegar a autenticação do certificado para clientes IKEv2 ao servidor AAA, mas isso não está relacionado à Contabilidade RADIUS.
Responder2
Graças à ecdsa, encontrei várias soluções para o meu problema.
- Use a contabilidade RADIUS sem autenticação RADIUS.
Se o plugin eap-radius estiver habilitado com a opçãocontabilidade = sim, o strongSwan enviará uma mensagem RADIUS para iniciar a contabilidade, mesmo se eap-radius não for usado no arquivo ipsec.conf. No meu caso, esta mensagem RADIUS é assim:
Acct-Status-Type = Start
Acct-Session-Id = 1434531934-1
NAS-Port-Type = Virtual
Service-Type = Framed-User
NAS-Port = 1
NAS-Port-Id = ios-ikev1-fakexauth
NAS-IP-Address = <nas_ip>
Called-Station-Id = <nas_ip>[4500]
Calling-Station-Id = <client_ip>[4500]
User-Name = "C=CH, O=strongSwan, [email protected]"
Framed-IP-Address = 172.20.1.1
NAS-Identifier = strongSwan
Posso obter o certificado CN da mensagem e basta-me fazer a contabilidade adequada. Se eu quiser rejeitar o acesso para algum CN, posso simplesmente rejeitar a mensagem RADIUS do stronSwan e a conexão ipsec será interrompida.
- Faça contabilidade e verificação de acesso nocima baixoscript em vez de usar RADIUS.
Também gostaria de usar o plugin strongSwan curl para acessar a lista de revogação de certificados. Mas descobri falta de documentação sobre este plugin. Estou esquecendo de algo?