Blog de Javier Castañón – JavCastaPosts RSS Comments RSS


Seguridad - Batch Scripting - Permitir protocolo gre en WipFW 0.5.5.b y Establecer VPN vía consola o vía batch script http://t.co/h2aY9XEk
@javcasta
Javier Castañón


Referencias:

Escenario: Windows 7 Ultimate SP1

Para establecer una conexión VPN vía consola o vía batch script, de una conexión de red VPN existente. Uso la utilidad rasdial.
El proceso es similar a como lo use para establecer una conexión ppp ( http://www.javcasta.com/2011/10/14/script-bat-cmd-conectar-modem-3g-via-consola-o-via-batch-script/ )

rasdial “Nombre-Conexión-de-red” usuario contraseña /PHONE:Servidor-VPN-o-su-Ip.com

si pones *, en lugar de la contraseña, te pedirá la contraseña por consola.

Lo practico del caso es que una vez tengas definida una conexión de red VPN en el panel conexiones de red, la puedes usar como modelo generico para mediante el modificador /PHONE:dominio-o-ip conectarte a un servidor de VPN a elección.
Al crear una conexión VPN en windows, se configura por defecto para que negocie y detecte automaticamente si va a establcer la VPN mediante:

  • PPTP
  • L2TP/IPsec
  • SSTP
  • IKEv2

O también puedes indicar que protocolo de tunel para establecer la vpn deseas:

conexion de red vpn > propiedades > seguridad > tipo de vpn

Hay que mencionar que, si usas PPTP debes de no capar en el firewall el puerto tcp1723 entre tu ip wan y la ip del servidor vpn.
A pesar de que este protocolo (PPTP) es inseguro ( http://es.wikipedia.org/wiki/PPTP#Vulnerabilidades_de_PPTP ), se sigue usando bastante …
L2tp, parece que es algo más seguro. Pero tampoco lo suficiente.

Una forma de dar mayor robustez a la seguridad de un tunel vpn mediante pptp o l2tp en un cliente windows, es usar sstp.
Que en definitiva es transportar el tráfico pptp o l2tp a través de SSL, con lo que el tráfico va encriptado de forma robusta y con chequeo de integridad.

Permitir protocolo gre en WipFW 0.5.5.b

Si usas PPTP, deberás permitir el protocolo gre:

GRE es un protocolo de capa 4 o de transporte: Generic Routing Encapsulation, que sirve para establecimiento de tuneles

Si usas IPsec deberá permitir el puerto udp500 en el firewall.

Por ejemplo, para el firewall WipFW 0.5.5b, un batch script que haga lo indicado, seria:

@echo off
REM sstp / IPsec
set mi-ip-wan=80.59.69.239
set servidorVPN=1.2.3.4
set dns=8.8.8.8
REM DNS
ipfw -q add check-state
ipfw -q add allow udp from any to %dns% 53 keep-state
ipfw -q add allow udp from %dns% 53 to any keep-state
REM udp500 - ipsec
ipfw -q add allow udp from %mi-ip-wan% to %servidorVPN% 500
REM gre (P:47), wipfw 0.5.5b no admite usar gre como indicativo del protocolo gre (P:47)
REM las reglas para permitir gre en ipfw de FreeBSD seria: 
REM ipfw -q add pass gre from %mi-ip-wan% to %servidorVPN%
REM ipfw -q add pass gre from %servidorVPN% to %mi-ip-wan%
REM Esto anterior,da error en WipFW 0.5.5b, por lo que una solución
REM es permitir todo el trafico entre tu host y el servidor vpn
REM suponiendo que sea un servidor vpn confiable (corporativo) ... : - )
ipfw -q add allow all from %mi-ip-wan% to %servidorVPN%
ipfw -q add allow all from %servidorVPN% to %mi-ip-wan%
REM pptp (tcp1723) tunel entre mi-ip-wan y servidorVPN (tras las reglas allow all, esto sobraria ...)
ipfw -q add allow tcp from %mi-ip-wan% to %servidorVPN% 1723
ipfw -q add allow tcp from %servidorVPN% 1723 to %mi-ip-wan%
REM established - navegación web vía tunel
ipfw -q add allow tcp from %mi-ip-vpn% to any established
REM tcp80,443 navegacion web solo para la vpn
ipfw -q add allow tcp from %mi-ip-vpn% to any 80,443 setup

Preparativos previos:

Vamos a centro de redes y recursos compartidos > Configurar una nueva conexión de red

Conectarse a un área de trabajo

Como no disponemos de una conexión existente, creamos una nueva conexión

Usaremos nuestra conexión a internet para conectarnos a la VPN

definimos la dirección del servidorVPN, ya sea su dominio o su ip

usuario, contraseña y si queremos que la recuerde

Vamos a conexiones de red y opciones en propiedades de la conexión de red VPN creada

desmarcamos mostrar progreso, pedir usuario:contraseña ya que lodefiniremos vía consola o script

Ejecutamos por consola:

rasdial “Nombre-Conexión-de-red” usuario * /PHONE:Servidor-VPN-o-su-Ip

Y comprobamos si nos ha asignado ip de una red privada virtual (VPN).

en mi caso observo que me asigna el servidor una IP privada de clase B ( 172.16.0.0/12 )

Un ejemplo de script:

conectaVPN.cmd

@echo off
set conexion=dial-VPN
set usuario=miusuario
set password=micontraseña
set servidorvpn=unservidorVPN.com
echo nos desconectamos de la vpn
rasdial "dial-VPN" /disconnect
echo Nos conectamos a la VPN
rasdial "%conexion%" %usuario% %password% /PHONE:%servidorvpn%
REM comprobamos parametros tcp/ip
@ipconfig /all
pause

Y voila :-)

Share
Clika en el altavoz para oir el postAltavoz


Leave a Reply

Los enlaces en los comentarios pueden encontrarse libres de nofollow.

?>