Problema com strongSwan

3

Eu tenho um servidor VPN com o protocolo Ubuntu e IKEv2 usando strongSwan.

Criamos clientes usando o script bash user.sh , mas temos um problema como mostrado abaixo.

Quando o número de clientes aumenta - para mais de 1.000 usuários - eles não se conectam ao servidor enquanto o servidor criará as contas pelo comando mencionado corretamente.

Enquanto isso, abaixo do conteúdo do arquivo user.sh :

#!/bin/bash
#copyright all right reserved by hjyy
YOUR_VPN_USERNAME=''
YOUR_PASSWORD=''
YOUR_USER_ID=''
[ -n "$VPN_USERNAME" ] && VPN_USER="$YOUR_VPN_USERNAME"
[ -n "$PASSWORD" ] && VPN_PASSWORD="$YOUR_PASSWORD"
[ -n "$USER" ] && USER_ID="$YOUR_USER_ID"
if [ -z "$VPN_EMAIL" ] && [ -z "$VPN_USER" ] && [ -z "$VPN_PASSWORD" ];    then
  echo "VPN credentials not set by VPN_USER. Generating random  password..."
  echo
  VPN_USER="$(LC_CTYPE=C tr -dc 'a-z2-9' < /dev/urandom | head -c 5)"
  VPN_PASSWORD="$(LC_CTYPE=C tr -dc '2-9' < /dev/urandom | head -c 5)"
  USER_ID="$(LC_CTYPE=C tr -dc '1-9' < /dev/urandom | head -c 8)"

fi

if [ -z "$VPN_USER" ] || [ -z "$VPN_PASSWORD" ]; then
  exiterr "All VPN credentials must be specified. Edit the script and re-enter them."
fi
echo "Adding VPN_USER setup in progress... Please be patient."  
echo
cd /etc/ || exiterr "Cannot enter /etc/strongswan/."
sudo sh -c "echo ' : RSA ike.ovpadd.com.key
$VPN_USER  : EAP \"$VPN_PASSWORD\"' >>  /var/lib/strongswan/$VPN_USER.secrets.inc"
sudo sh -c "echo 'include /var/lib/strongswan/$VPN_USER.secrets.inc' >>      /etc/ipsec.secrets"
chmod -Rf 775 include /var/lib/strongswan/$VPN_USER.secrets.inc
echo "Copyright all right reserved by securedv.net"
echo "username is: $VPN_USER and password is :$VPN_PASSWORD"
echo "please run this code for delete user after <time> : bash d.sh     /var/lib/strongswan/$VPN_USER.secrets.inc <time> "
sudo service strongswan restart
exit 0)

Há algum erro no roteiro?

Como expliquei, não há problemas na criação de contas usando o comando mencionado, mas quando o valor aumenta, nenhum deles é capaz de se conectar ao servidor; Eu tenho que usar o último backup para resolver o problema, mas neste caso eu perco os usuários recém-criados.

Você aconselharia sobre a causa do problema?

    
por Hooman 13.11.2016 / 13:36

1 resposta

2

De acordo com o comportamento que você descreve sobre strongSwan não conectando novos usuários ou não conectando usuários quando ipsec.secrets cresce muito, podemos dizer com segurança que o problema é não haver erros nos scripts.

Parece que você está atingindo um limite de arquivo / buffer / memória. A verdadeira questão é que sua base de usuários superou sua configuração atual, por exemplo, sua configuração talvez seja a ideal para uma base de usuários menor, mas não indicada para muitos usuários.

Como um trabalho temporário, considere a possibilidade de dividir a lista de usuários em vários servidores VPN.

No entanto, a médio / longo prazo, aconselho a configuração de um servidor de autenticação central, seja RADIUS, LDAP, MySQL ou Active Directory, em vez de criar usuários na configuração ipsec.secrets , e criar uma nova infra-estrutura para permitir que o StrongSwan seja autenticado.

A documentação ainda classifica o plugin SQL como experimental. Há também plugins para o PAM, mas eu não os recomendaria.

O FreeRadius também fala com uma configuração LDAP de backend e compreende mais protocolos se configurado adequadamente (ou seja, PAP, MSCHAPv2, EAP-PAP e EAP-MSCHAPv2). Usar um protocolo RADIUS também traz a vantagem adicional de ter os dados contábeis em um ponto central. Com uma configuração adequada (ou seja, o FreeRadius despejando a contabilidade no MySQL, que é uma configuração opcional), você pode facilmente ter listagens do uso da VPN pelos usuários.

Como tal, embora mais complicado eu recomendaria para um serviço do seu tamanho, ter StrongSwan conversando com FreeRADIUS e FreeRADIUS falando com um LDAP backend com seus usuários e senhas.

De acordo com a documentação oficial:

Autenticação com o RADIUS (com o FreeRadius, por exemplo)

EAP-Radius The eap-radius plugin does not implement an EAP method directly, but it redirects the EAP conversation with a client to a RADIUS backend server. On the gateway, the EAP packets get extracted from the IKE messages and encapsulated into the RADIUS protocol, and vice versa. The gateway itself does not need special support for a specific EAP method, as it handles the EAP conversation between the client and the RADIUS backend more or less transparently.

RADIUS servers The plugin should work with any RADIUS server, we tested it successfully with FreeRADIUS and the NPS Server included with Windows Server 2008 R2.

For EAP methods providing an MSK, the RADIUS server must include the key within the MPPE-Send/Receive Keys; Unfortunately, FreeRADIUS before 2.1.10 did not include these attributes when used with EAP-MSCHAPv2.

Alternativa você também pode usar o pfSense , que é um firewall de código aberto baseado no FreeBSD que possui uma interface gráfica web; você ainda terá o problema de classificar um back-end escalável e sustentável.

Também adicionarei como exemplo, que estou gerenciando algumas VPNs IPsec pfSense para vários milhares de usuários que se autenticam no FreeRadius + Active Directory. Eles estão usando os clientes VPN nativos do Windows 7 a 10, MacOS, iOS, Linux e Android.

Também no que toca à integração com WHMCS: disclaimer - Eu não estou familiarizado com WHMCS . No entanto, parece-me que só diz respeito ao faturamento em uma solução VPN. Eu suspeito que depois de ter uma configuração RADIUS unificada colocando o uso no MySQL, ainda há algum desenvolvimento de software para integrar o uso / faturamento com o WHMCS. Se não for assim, é muito mais complicado fazer o trabalho pesado de extrair de diferentes plataformas os registros de uso do cliente.

    
por 13.11.2016 / 14:45