Hoy vamos a ver una demostración en ambiente de prueba de una acceso VPN usando protocolo SSTP (Secure Socket Tunneling Protocol).
SSTP es una novedad en ambiente Windows desde Vista, y por supuesto que está presente en Windows 7 – Windows Server 2008-R2, y tiene una ventaja fundamental sobre otros protocolos como PPTP o L2TP+IPSec.
El protocolo SSTP encapsula tráfico en un canal SSL del protocolo HTTPS. Esto es nos permite encapsular el tráfico en HTTS, usando TCP-443 que es un puerto generalmente abierto en todos los cortafuegos, por lo cual no debemos hacer o pedir cambios en la en la configuración del cortafuegos.
Partiré de que ya tenemos instalada una configuración básica de Dominio:
Dominio: GuillermoD.corp
Controlador de Dominio: DC1.GuillermoD.corp (192.168.1.200/24). Con DNS instalado, y Default Gateway 131.168.1.100
Servidor VPN: VPN.GuillermoD.corp (192.168.1.100/24 y 131.107.2.1/16)
Cliente: CL en grupo de trabajo (131.107.2.2/16)
La red 192.168.1.0/24 será nuestra red interna, y la 131.107.0.0/16 representará una red pública tal como Internet.
Lo primero a hacer es crear un usuario de dominio, con autorización de acceso remoto, así que creamos en el dominio el correspondiente usuario que yo llamaré VPNUser, y le asignaremos el permiso de acceso remoto
Como SSTP utiliza HTTPS es necesario disponer de un certificado de máquina en el servidor VPN. En este caso instalaré en el mismo una Autoridad Certificadora de tipo Standalone, permitiendo el acceso a través de web.
El acceso web para obtener el certificado es el que necesita el IIS; la conexión por SSTP no lo necesita.
En el servidor VPN ejecutamos la configuración de acuerdo a las figuras que siguen:
Cuando seleccionemos Certification Authority Web Enrollment nos dirá los adicionales
Ahora que tenemos instalada la Autoridad Certificadora, en el mismo servidor VPN vamos a obtener un certificado. Para poder hacerlo por web debemos bajar la configuración de seguridad del Internet Explorer para la zona Local Intranet
Y accedemos localmente para solicitar el certificado, seleccionando las siguientes opciones. Aclaración cuando salgan advertencias sobre controles ActiveX permitir la ejecución.
Ahora debemos otorgar el certificado solicitado. Para eso desde Herramientas Administrativas abrimos Autoridad Certificadora, vamos a la carpeta Pending Requests, y con botón derecho sobre el pedido de certificado lo otorgamos (Issue)
Volvemos con el explorador a http://localhost/certsrv, y buscamos e instalamos el certificado
Por seguridad, Windows 7 instala el certificado “por Usuario”, pero en nuestro caso necesitamos que se almacene “por máquina” así que lo exportaremos de la parte de usuario, y lo importaremos en la parte de máquina.
Para eso creamos una consola MMC donde cargamos el complemento Certificates dos veces, primero por usuario y luego por máquina.
El procedimiento en las siguientes figuras
Buscamos en la carpeta Personal de la parte de usuario al certificado y con botón derecho accedemos a la opción de exportarlo de acuerdo a las figuras siguientes. No se olviden de marcar exportar la Private Key
Ahora vamos a importarlo en la parte de máquina, así que abrimos en la parte de máquina la carpeta Personal, y con botón derecho sobre Certificates, elegimos Import, procediendo de la siguiente forma
Ahora nos toca instalar Enrutamiento y Acceso Remoto (Routing and Remote Access) que lo haremos en el servidor VPN de la forma clásica de agregar de roles. Debemos agregar el rol Network Policy and Access Services, marcando solamente el role service Routing and Remote Access
Una vez instalado en Herramientas Administrativas abrimos la consola de Routing and Remote access, y con botón derecho comenzamos la configuración de servidor VPN
Podríamos usar asignación por DHCP teniendo uno instalado, pero perosnalmente prefiero asignar un rango en una red diferente, ya que de esta manera se puede controlar mejor el tráfico entre redes. El rango que quieran con tal que sea válido.
Como estamos haciendo una configuración a los fines demostrativos y no estamos usando una Autoridad Certificadora comercial, por lo tanto debemos instalar el certificado de la Autoridad Certificadora Raíz en el cliente. Entonces desde el cliente debemos aceder por web para obtener este certificado, y por lo tanto debemos permitir el acceso HTTP en el servidor VPN
Para esto debemos permitir tráfico entrante y saliente a TCP-80 de VPN. Para esto agregaremos las correspondientes entradas en los filtros de entrada y salida.
Por las dudas, reiniciemos el servicio RRAS desde la propia consola, con botón derecho sobre el sevidor…
Ahora ya tenemos todo listo. Nos falta sólo la configuracion en el cliente CL que haremos con una cuenta de usuario que sea administrador local.
Como no estamos usando realmente Internet, y no nos vamos a complicar instalando un servidor DNS, deberemos hacer una entrada manual en el archivo HOSTS del cliente.
Recordar que lo debemos editar ejecutando Notepad como administrador, y agregaremos la entrada correspondiente al servidor VPN y su correspondiente dirección IP externa.
Y para instalar el certificado de la Autoridad Certificadora, ingresamos a http://vpn.guillermod.corp/certsrv
Análogamente al caso anterior debemos mover el certificado de la parte de usuario a la de máquina. Así que igual que en el caso anterior creamos una MMC con el complemento de certificados, tanto de usuario como de máquina.
Encontraremos el certificado, en la parte de usuario, carpeta Certificates de Intermediate Certification Authorities. Con botón derecho sobre el certificado elegimos Copy.
Y lo pegamos (Paste) en la parte de máquina, carpeta Certificates de Trusted Root Certification Authorities
Vamos a probar, para eso en CL creamos una conexión de red tipo VPN con la configuración mostrada a continuación.
Por omisión va a seleccionar automáticamente un protocolo, y nosotros queremos que específicamente utilice SSTP, así que entramos en las propiedades de la conexión, ficha Seguridad y elegimos el protocolo correspondiente
Por el ambiente de prueba que estamos utilizando deberemos hacer una concesión para facilitar la conexión. En ambiente normal de trabajo seguramente usaríamos una Autoridad Certificadora comercial, por lo cual el cliente podría consultar sin problemas la lista de revocación de certificados (CRL).
En nuestro caso aunque hemos creado una Autoridad Certificadora propia no he publicado la CRL para no hacer aún más largo y complejo esta demostración.
Si usáramos como cliente XP no tendríamos problemas pues éste, aunque no pueda consultar la CRL considerará el certificado como válido, pero no es así si el cliente es Windows 7
Así que vamos a modificar el registro de cliente para que no lo haga. Abrimos REGEDIT.EXE y vamos a:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesSstpsvcParameters
Y agregamos un valor DWORD (32 bit) Value, llamado NoCertRevocationCheck =1
Y ahora sí, a conectarse
Observamos que nos conectamos por SSTP
Inclusive podemos observar al cliente en VPN, consola RRAS
Con esto damos por finalizada la prueba
Comments
Fatal error: Uncaught Error: Call to undefined function ereg() in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php:333 Stack trace: #0 F:\blogs.itpro.es\wp-content\themes\notesil\functions.php(35): notesil_commenter_link() #1 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(179): notes_comments(Object(WP_Comment), Array, 1) #2 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(145): Walker_Comment->start_el('', Object(WP_Comment), 1, Array) #3 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(139): Walker->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #4 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(387): Walker_Comment->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #5 F:\blogs.itpro.es\wp-includes\comment-template.php(2174): Walker->paged_walk(Array, '5', 0, 0, Array) #6 F:\blogs.itpro.es\wp-content\themes\notesil\comments.php(25): wp_list_comments('type=comment&ca...') #7 F:\blogs.itpro.es\wp-includes\comment-template.php(1512): require('F:\\blogs.itpro....') #8 F:\ in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php on line 333