Seguridad – Batch Scripting – Permitir protocolo gre en WipFW 0.5.5.b y Establecer VPN vía consola o vía batch script
Posted in HelpDesk, Internet, Networking, Scripting, seguridad, Sistemas, soporte, Utilidades on Nov 5th, 2011
Referencias:
- http://www.javcasta.com/2011/10/14/script-bat-cmd-conectar-modem-3g-via-consola-o-via-batch-script/
- http://www.jessebowes.com/blog/vpn-batch-script/
- http://es.wikipedia.org/wiki/PPTP
- http://es.wikipedia.org/wiki/L2TP
- http://es.wikipedia.org/wiki/GRE
- http://en.wikipedia.org/wiki/Secure_Socket_Tunneling_Protocol
- http://es.wikipedia.org/wiki/Red_privada_virtual
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





























