Requisits previs
Instal·lació de programari al costat del servidor
Generació i configuració de certificats
Configuració del servidor
Temps de prova!
AnyConnect és una solució d'accés remot desenvolupada per Cisco. Conegut per la seva portabilitat i estabilitat, especialment per la seva capacitat DTLS, AnyConnect és utilitzat per moltes empreses. Utilitzarem una versió de codi obert, ocserv, que és compatible amb el protocol.
També implementarem la verificació del certificat. El servidor identificarà els clients comprovant que si el certificat del client és emès per la CA configurada. Això simplifica molt la configuració dels clients, ja que només haurem d'importar el certificat al client (la majoria de vegades un fitxer pkcs12 ( .pfxo .p12)) i no calen contrasenyes. Això també és més segur ja que cap contrasenya no viatja per Internet.
Comencem.
Requisits previs
- Un servidor CentOS 7 de nova creació amb IPv6 habilitat
- Un ordinador que funcioni (pot ser el propi servidor; però obsolet (vegeu més avall)) vegeu la nota 1
- Alguns clients amb programari client AnyConnect (o OpenConnect) instal·lat, vegeu la nota 2
Notes:
Tot i que és possible (i més aviat convenient) fer-ho tot al servidor, el procés de desplegament consisteix a generar claus privades utilitzades per a la signatura i, per problemes de seguretat, aquest procés s'ha de fer al vostre ordinador.
A causa de problemes de llicència, no proporcionaré enllaços per descarregar el programari del client. Tanmateix, trobar-los per al vostre client és bastant fàcil. AnyConnect és una aplicació a les botigues d'aplicacions a les principals plataformes mòbils (iOS, Android, BlackBerry OS (v10 o superior), UWP) respectivament i una simple cerca us els portarà. Per a les plataformes de PC, alguns Google us presentaran el programari adequat.
Instal·lació de programari al costat del servidor
Les màquines CentOS 7 de Vultr estan configurades amb el repositori EPEL. Només instal·lem ocservamb yum:
yum update
yum install ocserv
Necessitarem un certificat de servidor perquè les coses funcionin. Si teniu un nom de domini, Let's Encrypt serà l'opció més fàcil.
yum install certbot
certbot certonly
Trieu "engegar un servidor web temporal" per autenticar-vos amb ACME CA. Si no teniu un domini, més endavant s'emetrà un certificat autofirmat.
Generació i configuració de certificats
La PKI tradicional és bastant incòmode d'utilitzar, de manera que farem servir la easyrsautilitat del projecte OpenVPN. Instal·leu git a la vostra màquina de treball i cloneu el repositori:
git clone https://github.com/OpenVPN/easy-rsa
cd easy-rsa/easyrsa3
Construirem la CA i emetrem certificats. Feu el següent i escriviu la contrasenya PEM que hàgiu establert en algun lloc:
./easyrsa init-pki
./easyrsa build-ca
Mantingueu-vos pki/private/ca.keyen un lloc segur. Fuga que farà que tota la vostra infraestructura sigui inútil.
Si trieu utilitzar un certificat de servidor autofirmat, feu el següent:
./easyrsa gen-req server
I introduïu l'adreça IP del vostre servidor com a nom comú.
./easyrsa sign-req server server
Això signarà un certificat per al servidor. Transferiu pki/issued/server.crti cap pki/ca.crta /etc/ssl/certsi pki/private/server.keycap /etc/ssl/privateal vostre servidor.
A continuació, crearem certificats de client. Feu el següent:
./easyrsa gen-req client_01
./easyrsa sign-req client client_01
Trieu un nom del client i ompliu-lo al camp del nom comú. Recordeu la contrasenya!
A continuació, exportarem el certificat en format pkcs12 per utilitzar-lo en plataformes mòbils. Fes:
./easyrsa export-p12 client_01
Trieu una contrasenya d'exportació que se us demanarà que introduïu quan importeu el certificat al telèfon. Transferiu pki/private/client_01.p12-lo al vostre telèfon i importeu-lo.
Configuració del servidor
Omplirem la informació del certificat.
vim /etc/ocserv/ocserv.conf
Localitza la server-certsecció i omple el següent:
# If you use Let's Encrypt
server-cert = /etc/letsencrypt/live/example.com/fullchain.pem
server-key = /etc/letsencrypt/live/example.com/privkey.pem
# If you use self-signed server certificate
server-cert = /etc/ssl/certs/server.crt
server-key = /etc/ssl/private/server.key
ca-cert = /etc/ssl/certs/ca.crt
Tingueu en compte que si feu servir un certificat autofirmat, recordeu d'eliminar primer la frase de contrasenya openssl rsa -in server.key -out server-new.keyperquè ocservpugueu utilitzar la clau privada.
Localitza la authsecció. Activa aquesta línia:
auth = "certificate"
I comenta totes les altres authlínies.
Descomenteu aquesta línia:
cert-user-oid = 2.5.4.3
Localitzeu ipv6-networki ompliu el bloc ipv6 del vostre servidor. Aquest és el bloc des del qual el servidor donarà contractes d'arrendament.
ipv6-network = 2001:0db8:0123:4567::/64
ipv6-subnet-prefix = 124
Configura els servidors DNS.
dns = 8.8.8.8
dns = 8.8.4.4
Habiliteu la compatibilitat amb els clients de Cisco.
cisco-client-compat = true
Obrir els ports que estableixi en tcp-porti udp-porti permetre mascarada per IPv4 i IPv6 en firewalld.
Inicieu el servidor.
systemctl enable ocserv
systemctl start ocserv
Temps de prova!
El servidor s'ha configurat correctament. Creeu una connexió al vostre client i connecteu-vos. Si les coses van malament, utilitzeu aquesta ordre per depurar:
journalctl -fu ocserv
A més, IPv6 hauria de funcionar al costat del client si el programari del vostre client admet ipv6 encara que la xarxa del vostre client no us proporcioni una adreça. Aneu a aquest lloc per provar.
Llest! Gaudeix del teu nou servidor VPN compatible amb AnyConnect!