ConnMan: Como configurar o OpenConnect VPN com o CSD-Wrapper corretamente?

3

Eu quero acessar minha unidade de rede pessoal na minha universidade via VPN de casa. No passado eu tenho usado NetworkManager para isso, o que funcionou completamente bem. No entanto, recentemente mudei-me para ConnMan e não sei muito bem como configurá-lo lá.

Graças a GAD3R eu descobri que há uma máscara de entrada gráfica disponível para configurar uma conexão VPN em ConnMan interface CMST .

A configuração de VPN anterior (que funcionava com sucesso) de NetworkManager ficou assim:

[openconnect]
Description=My Company
Host=vpngw2-out.net.provider.com
CACert=(null)
Protocol=anyconnect
Proxy=
CSDEnable=1
CSDWrapper=/home/user/.cisco/csd-wrapper.sh
UserCertificate=(null)
PrivateKey=(null)
FSID=0
StokenSource=disabled
StokenString=

No entanto, essa configuração de VPN com êxito em funcionamento de NetworkManager estava usando o chamado CSD-wrapper da Cisco.

O desafio em ConnMan agora é: Ao criar o arquivo de provisionamento VPN necessário, que variante do OpenConnect devo selecionar para corresponder às especificações superiores? Ao criar o novo arquivo de provisionamento por meio de ConnMan - CMST , há várias OpenConnect -options disponíveis:

  • Provider OpenConnect
  • OpenConnect.ServerCert
  • OpenConnect.CACert
  • OpenConnect.ClientCert
  • OpenConnect.MTU
  • OpenConnect.Cookie
  • OpenConnect.VPNHost

Qual deles devo escolher para corresponder à configuração anterior do NetworkManager config? Preciso mencionar algo especial para incluir o arquivo CSD-Wrapper em ConnMan ?

    
por Dave 11.06.2018 / 20:07

1 resposta

2

Graças a um comentário do GAD3R e ao Connman lista de discussão de desenvolvedores , um amigo descobriu como configurar a conexão VPN. Embora ainda exista um pequeno erro, conseguimos que funcionasse principalmente.

1. Situação inicial

Os seguintes pacotes devem ser instalados em sua máquina cliente de onde você deseja acessar o servidor host:

  • connman
  • connman-vpn
  • cmst
  • openconnect

Além disso, o script csd-wrapper.sh foi executado em seus clientes /home -directory e criou o diretório /home/.cisco com vários arquivos de autenticação de sua máquina.

2. Gerando as informações de autenticação necessárias da VPN, acionando OpenConnect

Em uma segunda etapa, você precisa executar a solicitação de autenticação OpenConnect para obter o certificado do servidor ( FINGERPRINT ) e um COOKIE que Connman usará para se conectar à VPN. Essas informações serão criadas utilizando o pacote OpenConnect , que exibirá posteriormente um certificado do servidor e um cookie no terminal. Nós geramos essa informação no terminal executando

$ sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user <username> <hostname>

Depois, esse comando exibirá quatro variáveis: POST , COOKIE , HOST e FINGERPRINT . Por este meio, a impressão digital (começando com sha256:... ) atua como um certificado do servidor enquanto o COOKIE é o que parece.

3. Criando o arquivo de provisionamento da VPN para Connman

Em contraste com NetworkManager , o Connman está usando os chamados arquivos de provisionamento VPN para cada conexão VPN, de onde obtém as informações sobre como se conectar ao host VPN. Portanto, em uma terceira etapa, os dados de autenticação gerados anteriormente devem ser colados nesse arquivo de provisionamento de VPN que o Connman utilizará para se conectar ao servidor. Para fazer isso, criamos o arquivo /var/lib/connman-vpn/<connection-name>.config com base na seguinte estrutura:

[global]
Name = VPN name, for example "My Company VPN" (without quotes)

[provider_openconnect]
Type = OpenConnect
Name = VPN Provider name, for example "My Company Cisco VPN" (without quotes)
Host = <VPN host IP address>
Domain = <VPN host domain>
OpenConnect.ServerCert = <paste the output of FINGERPRINT from the previous openconnect command>
OpenConnect.Cookie = <paste the output of COOKIE from the previous openconnect command>

Depois salve e feche o arquivo.

4. Reinicie sua máquina e verifique a conexão VPN

Reinicialize seu sistema e você encontrará a conexão VPN agora criada listada na GUI do% riderVPN da bandeja do sistema Connman ( CMST ). Marque, clique em "conectar" e depois de alguns segundos, a conexão VPN para o seu host VPN será estabelecida. Agora você pode acessar facilmente o host VPN dentro do gerenciador de arquivos de sua escolha.

5. Eyesore: O cookie gerado é válido apenas por algumas horas

Após algumas horas, sua conexão VPN já funcionando com sucesso não funcionará mais. Ao verificar /var/log/syslog , a abordagem de conexão irá reclamar da falha na verificação do certificado do servidor:

Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 2 ipconfig method 1
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {create} index 23 type 65534 <NONE>
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {update} flags 4240 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {newlink} index 23 address 00:00:00:00:00:00 mtu 1500
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {newlink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {create} index 23 type 65534 <NONE>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {update} flags 4240 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {newlink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 2 ipconfig method 1
Aug 24 00:14:51 <hostname> openconnect[4476]: Connected to <VPN server IP>:443
Aug 24 00:14:51 <hostname> openconnect[4476]: SSL negotiation with <VPN server IP>
Aug 24 00:14:51 <hostname> openconnect[4476]: Server certificate verify failed: signer not found
Aug 24 00:14:51 <hostname> openconnect[4476]: Connected to HTTPS on <VPN server IP>
Aug 24 00:14:51 <hostname> openconnect[4476]: Got inappropriate HTTP CONNECT response: HTTP/1.1 401 Unauthorized
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {dellink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: (null) {remove} index 23
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {dellink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {remove} index 23
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 7 ipconfig method 1
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 6 ipconfig method 1
Por meio desta, a autenticação inicial COOKIE foi alterada, portanto, o cookie gerado anteriormente não é mais válido. Portanto, você deve repetir o procedimento superior todas as horas para criar um novo COOKIE e colar esse novo no seu arquivo de provisionamento VPN ( /var/lib/connman-vpn/<yourvpnname>.config ) enquanto sobrescreve o cookie antigo. Depois reinicie Connman e sua VPN funcionará bem novamente nas próximas horas.

Importante:

Parece que NetworkManager pode alterar sozinho a recriação do novo COOKIE , enquanto Connman precisa ser alimentado com o novo cookie em seu arquivo de provisionamento VPN. Provavelmente Connman está faltando algum tipo de interface para iniciar o comando OpenConnect sozinho.

6. Solução alternativa para tornar a recriação do novo cookie um pouco mais confortável

Você pode usar um script bash para gerar o novo cookie e sobrescrever o antigo. Basta copiar o seguinte texto em um arquivo *.sh , torná-lo executável e executá-lo. O novo cookie será colocado em /var/lib/connman-vpn/vpnname.config na posição correta automaticamente. Depois reinicie Connman e a VPN funcionará bem novamente.

#!/bin/bash

sed -i "s/^OpenConnect.Cookie =.*$/$( echo '<YOUR-VPN-PASSWORD>' | openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user=<USERNAME> --authgroup="<YOURGROUP>" --passwd-on-stdin <VPN-HOST-DOMAIN> | grep 'COOKIE=' | sed "s/COOKIE='//; s/'//g; s/^/OpenConnect.Cookie = /")/" <EXTERNAL-FILENAME>

Este script irá:

  1. Inicie o OpenConnect e execute a solicitação de autenticação OpenConnect para obter o certificado do servidor ( FINGERPRINT ) e um COOKIE
  2. Insira seu username no prompt do usuário
  3. Insira seu password no prompt do usuário
  4. Insira o group desejado no prompt do usuário
  5. Gere um novo cookie
  6. Substitua o antigo cookie in /var/lib/connman-vpn/vpnname.config pelo novo cookie

Depois, você pode se reconectar ao seu host VPN sem problemas. Graças a este script, é mais fácil e mais rápido recriar o novo cookies quando necessário.

    
por 23.08.2018 / 16:38