En tutoriales anteriores, agregamos contraseñas de un solo uso a OpenVPN y creamos un servidor WiKID usando Packer. En este tutorial creamos un servidor combinado OpenVPN/WiKID usando Packer. Packer nos permite crear imágenes de VMware, VirtualBox, EC2, GCE, Docker, etc. mediante código. Tenga en cuenta que combinar su servidor de autenticación de dos factores y el servidor VPN en una sola caja puede o no ser la mejor solución para usted. Por lo general, nos gusta la separación de funciones por seguridad y flexibilidad. Sin embargo, si necesita algo rápido, los auditores de PCI llegan el lunes, o si se encuentra en un estado represivo y solo necesita una conexión de salida segura por un corto período de tiempo. Y todavía tienes algo de flexibilidad. Puede agregar más servicios al servidor WiKID. Puede deshabilitar el servidor OpenVPN y, en su lugar, cambiar a una VPN diferente.
Construir el Servidor Combinado
Primero, descargue e instale Packer.
Consulte nuestros scripts de Packer de GitHub. Los scripts consisten en un archivo JSON principal que le dice a Packer qué hacer, un directorio http con scripts de compilación de Anaconda, un directorio de archivos que se carga en la imagen y aprovisionadores que se ejecutan después de compilar la imagen. Básicamente, Packer comienza con alguna fuente, como una ISO o una AMI, construye el servidor basado en Anaconda (al menos para CentOS), carga cualquier archivo y luego ejecuta los aprovisionadores. Packer está orientado principalmente a la creación de servidores idempotentes. En nuestro caso, lo usamos para ejecutar los comandos, lo que nos permite ejecutar un comando en lugar de unos 50 (solo para el aprovisionamiento).
Antes de construir, necesita editar algunos archivos. Primero, edite /files/vars . Este es el archivo vars estándar para crear los certificados de OpenVPN. Simplemente ingrese sus valores para los campos de certificado.
# These are the default values for fields # which will be placed in the certificate. # Don't leave any of these fields blank. export KEY_COUNTRY="US" export KEY_PROVINCE="GA" export KEY_CITY="Atlanta" export KEY_ORG="WiKID Systems Inc" export KEY_EMAIL="[email protected]" export KEY_OU="WiKID Systems, Inc"
A continuación, debe editar el secreto compartido en /files/server . Este archivo le indicará a PAM qué servidor RADIUS usar. En este caso, está hablando directamente con el servidor WiKID. El secreto compartido se utiliza para codificar el tráfico de radio. Dado que WiKID se ejecuta en el mismo servidor, mantenga el host local como servidor:
# server[:port] shared_secret timeout (s) 127.0.0.1 secret 3
Necesitará este secreto compartido más adelante.
Eche un vistazo en centos-6-x86-64.json . Puede ejecutarlo tal como está, pero es posible que desee editar algunas cosas. Debe confirmar source_ami (la ami enumerada se encuentra en el este de EE. UU.) o cambiarla a una de sus AMI de CentOS preferidas. Si está construyendo en VMware o VirtualBox, querrá cambiar iso_url a la ubicación de CentOS ISO en su disco duro y actualizar MD5Sum. Es posible que desee editar los nombres y las descripciones. También es posible que desee cambiar la región EC2. Lo más importante es que puede cambiar ssh_password, que es la contraseña de root.
Una vez que esté satisfecho con el archivo JSON, puede verificarlo con Packer:
$packer_location/packer verify centos-6-x86-64.json
Si eso funciona, constrúyelo. Puede especificar la plataforma de destino en la línea de comando:
$packer_location/packer build --only=virtualbox-iso centos-6-x86-64.json
Si compila para EC2, ingrese las credenciales requeridas en la línea de comando:
$packer_location/packer build -var 'aws_access_key=XXXXXXXXXXXXXXXXXXXX' -var 'aws_secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' --only=amazon-ebs centos66.json
¡Si observa la ejecución de los comandos, verá que se está construyendo un servidor OpenVPN completo con certificados nuevos!
Configurar el servidor de autenticación de dos factores WiKID
Una vez creada, deberá iniciar la AMI o importar la máquina virtual. Inicie VirtBox y seleccione Archivo, Importar dispositivo. Apúntelo al directorio output-virtualbox-iso creado por el comando de compilación y abra el archivo OVF. Realice los cambios que desee en la máquina virtual (por ejemplo, memoria o red) e inicie el servidor.
Inicie sesión usando root/wikid o lo que sea que haya establecido como contraseña de root como en el archivo JSON. Configuraremos el servidor WiKID utilizando la opción de configuración de inicio rápido. Copie el archivo al directorio actual:
cp /opt/WiKID/conf/sample-quick-setup.properties wikid.conf
Edite wikid.conf según esas instrucciones. Utilice la dirección IP externa de su servidor o instancia EC2 con relleno cero como código de dominio. Entonces, 54.163.165.73 se convierte en 054163165073. Para el host RADIUS, use el host local y el secreto compartido que creó en /files/server arriba:
information for setting up a RADIUS host radiushostip=127.0.0.1 radiushostsecret=secret ; *NOTE*: YOU SHOULD REMOVE THIS SETTING AFTER CONFIGURATION FOR SECURITY
Si está en una máquina virtual, puede configurar la red ejecutando:
wikidctl setup
En EC2, solo puede configurar el servidor WiKID:
wikidctl quick-setup configfile=wikid.conf
Verá pasar la información de configuración. Inicie el servidor WiKID:
wikidctl start
Se le pedirá la frase de contraseña que configuró en wikid.conf. Vaya a la interfaz WIKIDAdmin en https://yourserver.com/WiKIDAdmin/ y debería ver su dominio creado, su cliente de red de radio configurado y todos los certificados requeridos completados.
Antes de abandonar el servidor, debe agregar su nombre de usuario como una cuenta en el servidor con 'useradd $username'. No es necesario agregar una contraseña.
Registrar el token del software WiKID
Descargue un token de software WiKID o instale uno para iOS o market://search?q=pname:com.wikidsystems.android para Android desde las tiendas de aplicaciones.
Inicie el token y seleccione "Agregar un dominio". Ingrese el código de identificación de dominio que configuró en wikid.conf y se le pedirá dos veces que configure su PIN. Hágalo y obtendrá un código de registro. Vaya a la interfaz de usuario web de WiKIDAdmin y haga clic en la pestaña Usuarios, luego valide manualmente un usuario. Haga clic en su código de registro e ingrese su nombre de usuario. Este proceso asocia el token (y las claves que se intercambiaron) con el usuario.
Configurar el cliente VPN
Descargue el ca.crt al cliente:
scp -i ~/Downloads/wikid.pem [email protected]:/etc/openvpn/ca.crt .
Edite el archivo openVPN client.conf. Configure el servidor remoto como su servidor WiKID/OpenVPN combinado:
# The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote yourserver.com 1194
Comente las líneas para el certificado y la clave. Dejando solo la CA. Dado que usamos WiKID para autenticar e identificar al usuario, no son necesarios.
ca ca.crt #cert client.crt #key client.key
En la parte inferior del archivo, dígale al cliente que solicite una contraseña:
auth-user-pass
Ahora inicie el cliente OpenVPN:
sudo openvpn client.conf
Se le pedirá un nombre de usuario y una contraseña. Solicite un código de acceso de su token WiKID e ingréselo en el campo de contraseña. Se le deben otorgar accesos.
Relacionado:
- WiKID - Servidor de autenticación de dos factores
- OpenVPN
- Empaquetador