Google EL TIPO DE INFORMATICA: How-To
Mostrando entradas con la etiqueta How-To. Mostrar todas las entradas
Mostrando entradas con la etiqueta How-To. Mostrar todas las entradas

jueves, 29 de diciembre de 2016

Configurar Mobile IPSec VPN con XAuth (Active Directory) en pfSense

En este post veremos como configurar una VPN para usuarios móviles en pfSense y autenticando con un dominio Active Directory a través de LDAP. De esta forma los usuarios podrán utilizar sus credenciales del dominio para acceder a la VPN, y podrán conectarse a la red utilizando tanto sus computadoras como sus dispositivos móviles, ya sean Android o iOS.

Servidor de Autenticacion


Lo primero que necesitamos es agregar nuestro controlador de dominio como "Autentication Server" o Servidor de Autenticacion en pfSense. Para este ejemplo, supongamos que tenemos un dominio llamado "midominio.com", que todos los usuarios están en el contenedor por defecto para usuarios de Active Directory "Users" y que nuestro controlador de dominio tiene la IP 10.0.0.10. Para agregarlo nos movemos a "System --> User Manager" y en esta ventana nos vamos a "Authentication Servers".

Autentication Servers

En esta ventana hacemos clic en "Add" para agregar los datos del controlador de dominio que autenticara los usuarios. Completamos los datos de esta ventana de esta manera:

  • Descriptive Name: Nombre con el que identificaremos el servidor, por ejemplo, MyDominio
  • Type: LDAP
  • Hostname or IP: Nombre del host o dirección IP del controlador de dominio, en el caso de este ejemplo, 10.0.0.10
  • Port Value: 389
  • Transport: TCP - Standard
  • Protocol version: 3
  • Server Timeout: 25
  • Search scope: One Level
  • Base DN: DN Base del dominio, por ejemplo: "DC=midominio,DC=com"
  • Autentication containers: aqui insertamos el contenedor o la OU donde están los usuarios a los cuales les permitiremos el acceso, por ejemplo, el contenedor Users: "CN=Users,DC=midominio,DC=com".
  • Extended queryhacemos clic en la opción "Enable Extended query" y se habilitara la siguiente opción:
  • Query: acá agregamos lo siguiente: "&(objectClass=user)" (sin las comillas). Con esto le decimos al sistema que solo consulte objetos que sean del tipo usuario.
  • Bind anonymous: Esta opción debemos desactivarla para poder indicar un usuario del dominio que pfSense utilizara para conectarse al Controlador de Dominio y hacer la consulta. Al quitar la selección de este punto se habilitara la siguiente opción:
  • Bind Credentials: acá indicamos el usuario y password que se utilizara para hacer la consulta en el controlador de dominio. En "User DN:" escribimos un usuario del dominio (puede ser un usuario creado para este fin, no necesita ningún privilegio especial), y lo insertamos en el formato dominio\usuario, por ejemplo: mydominio\pfsense. Luego en el campo "Password" como ya se imaginaran, se inserta el password para el usuario que indicamos previamente.
  • Initial Template: Aquí seleccionamos "Microsoft AD".
Las demás opciones se dejan por defecto. 

Configuracion pfSense

Para probar la conexión al controlador de dominio, podemos hacer clic en el botón "Select a Container", si todos los parámetros están correctos debería abrir una ventana mostrando los demás contenedores y unidades organizativas (OU) que tenga definido el dominio. Luego para probar la autenticacion, hacemos clic en el menú superior en "Diagnostic --> Authentication". En "Authentication Server" seleccionan el servidor de autenticacion que acabamos de agregar (MiDominio) y luego insertamos las credenciales de algún usuario del dominio. Si pfSense puede autenticar correctamente el usuario verán una ventana como la siguiente:



En caso de que les presente un error autenticando, deben asegurarse de que el usuario que estén probando pertenezca al contenedor que se selecciono en la configuración del servidor de autenticacion. O sea, que se encuentre, por ejemplo, en el contenedor "Users" o en el OU que hayan seleccionado.

Configuración Mobile VPN

Una vez hemos definido nuestro servidor de autenticacion, nos movemos en el menu superior a "VPN --> IPsec" y luego hacemos clic en "Mobile Clients. En esta ventana completaremos de la siguiente manera:

  • IKE Extension: Seleccionamos "Enable IPSec Mobile Client Support"
  • User Authentication: Hacemos clic encima del servidor de autenticacion que definimos, para el caso de este ejemplo, seleccionamos "MiDominio". 
  • Group Authentication: None
  • Vritual Address Pool: Seleccionamos "Provide a virtual IP address to clients" e indicamos mas abajo el rango IP que asignaremos a los usuarios que se conecten via VPN, por ejemplo, 10.0.2.0 y en el campo de al lado seleccionamos 24
  • Network List: Seleccionamos "Provide a list of accessible networks to clients"     
  • DNS Default Domain: Seleccionamos "Provide a default domain name to clients",y mas abajo indicamos el nombre de nuestro dominio Active Directory, en el caso de este ejemplo seria "midominio.com"
  • DNS Servers: Seleccionamos "Provide a DNS server list to clients" y mas abajo insertamos las direcciones IP's de los servidores DNS de nuestra red, por lo general sera la misma del controlador de dominio que agregamos como Servidor de Autenticacion.
Al hacer clic en "Save" veremos un mensaje como el siguiente, donde se nos indica que debemos crear los parametros de fase 1 (Phase 1) de IPSec para el VPN que acabamos de crear, haremos clic en el boton "Create Phase 1"


En esta ventana solo necesitamos modificar las siguientes propiedades:

  • Description: Descripción o nombre para el tunel, podemos usar por ejemplo "VPN Usuarios"
  • Authentication Method: Seleccionamos "Mutual PSK + Xauth"
  • Negocitation Mode: Aggressive
  • My Identifier: Podemos usar la opcion "IP Address" e indicar la IP externa de nuestro firewall, en este ejemplo usaremos "100.50.25.5".
  • Peer identifier: Aqui indicamos como el usuario se identificara incialmente con el Firewall, podemos seleccionar "KeyID tag" y en el campo de al lado insertar "vpn-users"
  • Pre-Share Key: El Firewall y el usuario se autenticaran mutuamente utilizando un password compartido o "Pre-Share Key", en esta sección indicamos este password. Para el caso de este ejemplo utilizaremos "MySuperPassword".
Las demas opciones las dejamos por defecto, pero necesitaremos conocerlas para configurar los clientes:
  • Encription Algorithm:    AES - 256 bits
  • Hash Algorithm:             SHA1
  • DH Group:                      2 (1024 bit)
  • Lifetime (Seconds):        28800
  • Dead Peer Detection:      Enable DPD
pfSense Phase 1

Al hacer clic en "Save" iremos a la pantalla "Tunnels", veremos el tunel que acabamos de crear. Aquí haremos clic en el boton "Show Phase 2 Entries", luego en boton "Add P2" para agregar las opciones de la fase 2 de IPSec.


En esta sección seleccionaremos los siguientes parametros:

  • Mode: Tunnel IPv4
  • Local Network: LAN subnet
  • NAT/BINAT Translation: None
  • Description: Nombre para el tunel, podemos agregar "VPN-Usuarios"
  • Protocol: ESP
  • Encryption Algorithms: AES-256 bits
  • Hash Algorithm: SHA1
  • PFS key group: 2 (1024)
  • Lifetime: 3600


Hacemos clic en "Save" y luego en el boton "Apply Changes" para aplicar los cambios. Al finalizar esta parte deberíamos ver ambas fases de la siguiente manera:


Con esto ya tenemos configurado el VPN en nuestro pfSense, ahora solo tenemos que configurarlo del lado de los clientes o usuarios. 

Configuración Cliente VPN en Windows

Para los usuarios Windows, usaremos el cliente IPsec de Shrew Soft que pueden descargar aqui. Este cliente IPsec es gratuito y muy fácil de instalar, básicamente es solo next, next, next. Pero tengan en cuenta seleccionar durante la instalación la edición "Standard", ya que la Professional requiere licencia y solo les funcionara por 30 dias. Una vez instalado el cliente, al hacer doble clic sobre "VPN Access Manager" verán la siguiente ventana:


VPN Access Manager

Haremos clic en el boton "Add" para definir una nueva conexion. Los parametros que usaremos aqui son los mismos parametros que definimos en la configuracion del VPN en pfSense. En el primer tab de esta ventana insertaremos la IP publica del firewall, en este ejemplo utilizamos 100.50.25.5



Nos movemos al tab "Client", podemos dejar los valores por defecto que tiene:


El tab "Name Resolution" podemos dejarlo también con los valores por defecto que trae, y nos movemos al tab "Authentication". En "Authentication Method" seleccionamos "Mutual PSK+XAuth". En esta misma ventana, en el tab "Local Identity", como "Identification Type" seleccionamos "Key Identifier", esta fue la forma que indicamos en la configuración del VPN, e insertamos aquí el nombre "vpn-users". En esta misma ventana nos movemos al tab "Remote Identity" y seleccionamos "any", por ultimo nos movemos al tab "Credentials". En esta tab nos movemos a la sección "Pre-Shared Key", aqui escribiremos el password compartido que definimos en la configuración del VPN de pfSense, en este ejemplo utilizamos "MySuperPassword".




Luego nos movemos al tab superior "Phase 1". Aquí indicaremos los parámetros de la fase 1 que configuramos previamente en pfSense (Exchange Type: Aggressive, DH Exchange: group 2, Cipher Algorithm: aes, Cipher Key Length: 256, Hash Algorithm: sha1). Lo mismo hacemos en el tab "Phase 2" (Transform Algorithm: esp-aes, Transform Key Length: 256, HMAC Algorithm: sha1, PFS Exchange: group 2).


Por ultimo, nos movemos al tab "Policy". En este tab se indican las redes o equipos que accederemos a través de la VPN. Como le indicamos a pfSense que envíe el listado de redes, seleccionamos la opción "Obtain Topology Automatically or Tunnel All".


Hacemos clic en "Save" y con esto ya creamos nuestra conexión IPsec. Volveremos entonces a la ventana principal, pero ahora veremos un pequeño icono con la dirección IP publica del pfSense. Hacemos doble clic encima y veremos la ventana de conexión. Aquí insertamos nuestro usuario y password del dominio y hacemos clic en Connect.


Si todo esta bien, veremos una ventana como la siguiente. Al hacer la conexión el botón de "Connect" cambiara a "Desconect"


Con esto ya podremos tener acceso a los recursos de la red. Recuerden que deben habilitar una regla de Firewall que permita el trafico desde la red interna del firewall y el rango de direcciones que se asignara a los usuarios VPN. En el próximo post veremos como configurar el VPN en equipos Android y Iphones. Como siempre espero que esta información les haya sido de ayuda. 

Hasta el Próximo!

lunes, 17 de agosto de 2015

Inspeccion de Trafico HTTPS con WatchGuard XTM

Con WatchGuard podemos crear reglas de Proxy HTTP que inspeccionan el trafico de negación de los usuarios y nos permiten analizar el contenido. Esta inspección permite analizar los headers HTTP, el contenido de las paginas, aplicar antivirus, reglas de DLP que podría buscar patrones o palabras especificas en contenido de las paginas, etc., mas adelante se muestra la ventana de configuracion de una regla de proxy HTTP donde se muestra los diferentes chequeos que hace el equipo en el trafico HTTP. 

Opciones de análisis de trafico HTTP en reglas de Proxy

Pero con el trafico HTTPS es distinto. Como este trafico es encriptado, el equipo no puede hacer este tipo de análisis una vez se realiza la conexion. Lo único que podemos hacer es permitir o denegar el acceso a sitios Web en base al nombre de dominio, porque es la única información que el equipo puede ver, el nombre del site al que el usuario solicita la conexion. Así que el equipo permitirá la conexion al sitio pero no tendrá idea de lo que se este transfiriendo. 

  • Inspección de Trafico HTTPS

Para prevenir esto, se utiliza la inspección de trafico HTTPS. Como la encriptacion se realiza utilizando el certificado SSL que envía el servidor al cliente (el certificado contiene la clave publica del servidor, que se utilizara para negociar la clave simétrica para encriptacion de todo el trafico), lo que hace el equipo al activarse esta opción es capturar este certificado que envía el servidor al cliente, generar el mismo otro certificado para el dominio que solicito el usuario y pasarlo al usuario como que es el certificado original. El computador cliente empieza entonces la negociación de encriptacion del trafico en base al certificado que le envío el Firewall. De esta forma el trafico se encripta entre el cliente y el Firewall, donde este entonces puede desenciptar porque es con su propio certificado que se encripto, y realizar el análisis al trafico. Luego el Firewall hace la conexion al servidor remoto utilizando el certificado original. El cliente cree que esta hablando con el servidor remoto, y el servidor remoto cree que esta hablando con el cliente. 

Para activar esto en WatchGuard, solo tenemos que editar la regla de proxy HTTPS y seleccionar la opcion "Enable deep inspection of HTTPS content" como se muestra a continuación. 

En la regla, hacer clic en el botón de edición del proxy

Una vez en la ventana de edicion de la regla de proxy HTTPS, se activa la opción "Enable deep inspection....", pueden seleccionar la opcion "Allow SSLv3". También verán que se activa una drop box llamado "Proxy Action", esto es para seleccionar la regla de proxy HTTP que se le aplicara al trafico una vez se desencripte. En el caso de este ejemplo la regla que seleccione se llama "ACCESO_INTERNET_NORMAL". Al trafico HTTPS de esta regla se le aplicaran los análisis que se definan en esta regla HTTP.

Activación inspección trafico HTTPS

  • Importar Certificado CA WatchGuard
Al aplicar salvar la regla que modificamos anteriormente y aplicarla notaran que cuando intentan acceder cualquier sitio HTTPS les aparece un mensaje como el siguiente en el navegador:

Error de Certificado SSL en Internet Explorer
Esto significa que el cliente recibió el certificado SSL que genero el WatchGuard, pero no confía en este certificado. Si hacemos clic en "Continue to the website..." podremos acceder al site, pero esto no es algo que queremos que todos los usuarios tengan que hacer. Además, si utilizan Chrome, no tendrán esa opción de continuar. Para corregir esto lo que tenemos que hacer es importar el certificado que usa Watchguard para firmar los certificados que crea para cada dominio, el certificado CA. Para esto, una vez dentro de un sitio HTTPS, hacemos clic en la barra de navegación encima de "Certificate Error" y luego hacemos clic en "View certificates":



Esto nos mostrara información del certificado SSL que genero el Firewall para este site. Como podrán ver, indica el sitio para el cual se genero (en este caso *.google.com.do) y nos dice que el certificado no puede ser verificado con una autoridad certificadora de confianza. 


Como pueden ver, podemos instalar el certificado en el equipo haciendo clic en "Install Certificate", pero si instalamos este certificado, el mensaje de error dejara de aparecer solo para este dominio, para todos los demás sitios HTTPS seguirá apareciendo. Lo que necesitamos es agregar el certificado que usa WatchGuard para firmar todos estos certificados que genera como un CA de confianza, así que en la ventana anterior haremos clic en "Certification Path", donde podremos ver el certificado del CA:


Aquí podemos ver el certificado CA que uso el equipo Watchguard para generar y firmar, hacemos clic encima de el y luego hacemos clic en el boton "View Certificate", se nos mostrara una ventana similar a la del certificado para google.com.do, pero en este caso si haremos clic en "Install Certificate":


Al hacer clic en "Install Certificate" se abrirá el wizard para la importación de certificados. Hacemos clic en next en la primera ventana y luego hacemos clic en "Browse", donde indicaremos donde almacenaremos el certificado. Como queremos agregarlo como una CA de confianza, seleccionaremos "Trusted Root Certification Authorities": 


Al seleccionar la ubicación del certificado en la ventana "Select Certificate Storage", hacemos clic en OK y luego en Next. En la próxima ventana hacemos clic en "Finish", se nos presentara una ventana como la siguiente de confirmación de importación del certificado, donde haremos clic en "Yes":


Con esto ya hemos importado en este equipo el certificado CA de nuestro equipo WatchGuard, si cerramos el Internet Explorer y abrimos nuevamente algún sitio HTTPS veremos que ya no saldrá la alerta de que el certificado no es confiable:


En este punto, ya tenemos nuestro proxy HTTPS inspeccionando trafico cifrado y nuestro equipo confía en el certificado que le envía el WatchGuard, pero hay que tener en cuenta que por ahora solo este equipo confía en este certificado, los demás equipos de la red continuaran presentando la alerta de que no confía en este certificado. Lo que resta ahora es publicar este certificado a todas las computadoras del dominio con una Política de Grupo (GPO) para no tener que hacer este procesamiento en cada equipo de la red. En el próximo post veremos entonces como exportar este certificado y propagarlo mediante una GPO a todos los equipos del dominio.

lunes, 24 de marzo de 2014

Crear un Access Point (Rogue AP) en Mac OS X y Captura de Datos con SSLStrip

En esta entrada veremos como crear un punto de acceso a Internet falso (o Rogue AP) en Mac OS Mavericks, usando la herramienta nativa de este sistema operativo para compartir Internet para crear una red Inalámbrica, configuraremos el Firewall del sistema para redireccionar todo el trafico que salga a traves de esta conexión a un puerto especifico en el equipo donde tendremos entonces la herramienta SSLStrip capturando el trafico. La función principal de SSLStrip no es solo la captura del trafico, sino mas bien permitir capturar datos en forma plana que generalmente se enviarían encriptados con SSL. Esto lo hace de la siguiente manera, cuando en una pagina, por ejemplo Facebook, hacemos clic en "Login" o "Acceder", se gestiona una sesión segura usando SSL (HTTPS) antes de enviar los datos digitados, lo que hace SSLStrip es que captura esa solicitud y evita que se establezca la sesión SSL, por lo que la conexión se mantiene en texto plano. Claro esto no siempre funciona, algunos sitios no permiten hacer el login si la conexión no es segura. La idea es mostrar porque debemos tener cuidado al conectarnos a una red Wireless abierta que encontremos, bien, habiendo dicho esto podemos empezar.

Creando la Red Wireless

Lo primero que haremos sera crear la red inalámbrica a la que queremos que las personas se conecten. Para esto compartiremos una conexión a Internet, esta conexión puede ser, por ejemplo, via un cable de red, o como en mi caso, puede ser a traves de un telefono celular via USB. Para esto iremos a System Preference --> Sharing. Veremos la siguiente ventana:

Comparitr Conexion Internet

Antes de activar la opción "Internet Sharing" de la sección de la izquierda debemos indicar cual sera la conexión que compartiremos y a traves de que medio la compartiremos. En nuestro caso, yo estoy compartiendo la conexión a Internet del Iphone a traves del cable USB, y la compartire a traves de la tarjeta Wi-Fi. Luego haremos clic en el boton "Wi-Fi Options..." para configurar el nombre de la red inalámbrica que crearemos y el password, como lo que queremos es hacer una red llamativa para que las personas se conecten, elegiremos como nombre "OPEN_INTERNET" o "OPEN_WIFI" y la configuraremos sin password, como se muestra en la próxima ventana:


Hacemos clic en OK y volveremos a la ventana anterior, donde seleccionaremos el recuadro "Internet Sharing" para habilitar esta conexión, con esto ya estaremos compartiendo nuestra conexión a Internet y regalando Internet al publico. Necesitamos ahora ver la interface que se creo para esta conexión Wireless y ver la dirección IP que tiene esta y que asignara a los usuarios, para esto ejecutamos en el comando "ifconfig" en una ventana Terminal, veremos algo como esto:



Como pueden ver, tengo ahora una interface llamada "bridge100", con la dirección IP 192.168.2.1, las computadoras que se conecten a esta red inalámbrica se le asignaran IP's en este mismo rango. Esta información la usaremos mas adelante cuando estemos configurando el Firewall.

UPDATE:

Si al habilitar "Internet Sharing" no les funciona (no ven que el icono del Wireless cambia en la barra), es posible que esten utilizando Mavericks o Yosemite. En mi caso, cuando migre a estas versiones dejo de funcionarme el Internet Sharing, pero se corrigio con "El Capitan" (10.11.1).

Configuración Firewall Mac OS

Bien, en este punto ya debemos tener personas conectadas a nuestra red, ahora necesitaremos redirigir todo el trafico HTTP o HTTPS que salga por esta conexión hacia el puerto en que estará escuchando SSLStrip. Para esto configuraremos algunas reglas en el Firewall de Mac OS, que a partir de Lion se maneja con el con pf, este manejador de paquetes viene de FreeBSD. La configuración de pf se encuentra en /etc/pf.conf,  pero las reglas del Firewall no se encuentran directamente en este archivo,  sino que que indican aqui los archivos que contienen las reglas. A estos archivos se les llama "Anclas" (anchor en ingles). Así que lo que haremos sera crear nuestro propio archivo ancla donde definiremos las reglas necesarias, y luego haremos referencia a ellos en pf.conf. Estos archivos "ancla" se crean generalmente en "/etc/pf.anchors/", el archivo que crearemos lo llamaremos "rdr.proxy" y lo crearemos ejecutando "sudo vim /etc/pf.anchors/rdr.proxy", el contenido de este archivo sera el siguiente:


rdr pass on bridge100 inet proto tcp from any to any port 80 -> 192.168.2.1 port 8080
rdr pass on bridge100 inet proto tcp from any to any port 443 -> 192.168.2.1 port 8080

pass in log quick on bridge100 proto { tcp, udp } from any to 192.168.2.1 port 8080 keep state
pass in log quick on bridge100 proto { udp } from any to 192.168.2.1 port 53 keep state
pass in log quick on bridge100 proto { icmp } from any to any keep state
pass out inet proto tcp from any to any keep state
pass out inet proto udp from any to any keep state

Con las primeras 2 reglas configuramos el "Redirect" del trafico hacia el puerto 8080, como ven indicamos a cual interface se aplicaran estas reglas que en este caso es a la interface que se creo cuando activamos el "Internet Sharing", que como vimos fue la interface "bridge100".  Las siguientes reglas lo que permiten es el acceso o abrir el acceso al puerto 8080 donde esperara SSLStrip por el trafico de las personas que usen esta red, tambien permitimos el acceso al puerto UDP 53 para que los equipos puedan hacer consultas DNS. Luego que hayamos copiado estas lineas en el archivo podemos guardarlo e irnos al archivo /etc/pf.conf, donde agregaremos las siguientes lineas:

rdr-anchor "rdr.proxy"
load anchor "rdr.proxy" from "/etc/pf.anchors/rdr.proxy"

Como ven primero definimos el archivo con la linea "rdr-anchor..." y luego le indicamos cargue este archivo y le indicamos la ubicación donde se encuentra. Al hacer estas modificaciones, el archivo /etc/pf.conf se veria de esta manera:


Archivo pf.conf

El Firewall del Mac OS  (pf) viene desactivado por defecto, así que aun no estarán habilitadas las reglas que acabamos de agregar, para esto tendremos que ejecutar el siguiente comando:

#sudo pfctl -ef /etc/pf.conf

Cuando ejecutemos este comando, habremos cargado las reglas y activado pf en el sistema. Hay que tener en cuenta que al habilitar esto, todo el trafico de las personas que esten conectadas a la red inalámbrica que acabamos de crear se estará redireccionando al puerto 8080, y como aun no tenemos SSLStrip corriendo en el sistema no podrán navegar. Así que seria mejor ejecutarlo cuando ya este instalado y corriendo SSLStrip, así que pasemos al siguiente paso.

Instalando SSLStrip 

Ya entramos en la ultima parte, ahora solo nos resta instalar SSLStrip para hacer la captura de los datos. Lo pueden descargar desde este link. Esta herramienta esta desarrollada en Python, pero para ejecutarla en Mac OS sera necesario instalar algunos componentes. Esto podemos instalarlo usando MacPorts, que es un manejador de paquetes similar a APT-GET en Linux. Si no lo tienen pueden descargarlo desde este link y seguir las instrucciones (su instalación es sencilla). Una vez lo tengan instalado solo debemos ejecutar:

$ sudo port install py-twisted-web2
$ sudo port install py-openssl

SSLStrip requiere Python 2.5 o superior, si tienen varias versiones de Python en el sistema, es posible que necesiten ejecutar los comandos anteriores indicando la version al lado de "py", por ejemplo "sudo port install py25-twisted-web", una vez instalados estos componentes, nos movemos a la carpeta donde descargamos SSLStrip y entonces ejecutamos:

$ sudo python sslstrip.py -l 8080 -w captura.log

Con esto iniciamos sslstrip escuchando en el puerto 8080 (con la opción -l) y le indicamos que todo lo que capture lo guarde a un archivo llamado "captura.log". Cuando ejecutemos este archivo sslstrip se mantendrá corriendo y capturando hasta que lo cancelemos, se vera como se muestra a continuación:

Ejecutando SSLStrip.py

Ahora solo tenemos que esperar que las personas que esten cerca se conecten a nuestro AP y SSLStrip empezara a capturar sus logins y passwords. Como los datos se van copiando al archivo "captura.lo", podemos abrir otra ventana de Terminal y ejecutar "tail -f captura.log" para ir viendo los datos según van siendo capturados. Entonces, cuando una persona se conecte, por ejemplo a Facebook, veremos los datos que introduce aparecer en el archivo captura.log como se muestra a continuación:



Como ven, el incauto conectado a mi red intento conectarse a facebook, y como vemos SSLStrip nos trajo el username que utilizo (usuario-conectado) y el password (misuperpassword01). A parte de SSLStrip se puede utilizar un proxy, como Burp Proxy (del cual les hable en este post) y así se podría incluso tener mas control sobre el trafico de las personas que se conecten. Bueno, hasta aqui este post, espero que les sea de utilidad y lo piensen mejor la próxima vez que vayan a conectarse a una red inalámbrica publica o que no sea de confianza (... y aunque sea de confianza).

jueves, 6 de marzo de 2014

IPSec Site-to-Site VPN entre WatchGuard XTM y Linux OpenSwan

Supongamos que tenemos que conectar 2 oficinas a traves una conexión VPN, en una de las oficinas tenemos un equipo WatchGuard XTM como Gateway y en la otra tenemos un equipo Linux con OpenSwan (que es una implementación de IPSec para Linux). Podemos hacer la conexión VPN entre estos 2 equipos (y la red detras de ellos) usando IPSec, solo tenemos que asegurarnos de configurar correctamente los parámetros de  IPsec para cada fase, de manera que en la negociación de los algoritmos criptograficos a utilizar ambos equipos puedan elegir protocolos compatibles. Hay que tener en cuenta que basicamente la conexión IPSec en modo tunel (que es el modo a utilizar cuando queremos crear un VPN) se realizara en 2 fases: en la primera fase (llamada "Main Mode") los 2 puntos se autenticaran uno a otro mediante una clave compartida  o certificados y negociaran los algoritmos de encriptacion a utilizar durante el intercambio de esta clave, y en la segunda fase se negociara la politica IPSec que utilizaran, por ejemplo, el tipo de trafico y las direcciones o segmentos de red en ambos lados que utilizaran el tunel. Esta es una explicación bastante resumida de todo lo que hace IPSec (a mi entender), si quieren entender mejor todo lo que hace IPSec les recomiendo visitar este link.

Para la autenticación entre los puntos de nuestro VPN utilizaremos una clave compartida o "Shared Key", e identificaremos cada punto por la IP externa de cada uno. Vamos a llamar al punto donde esta el WatchGuard XTM el punto A, y su IP sera la 6.6.6.6, la red que estará detrás de este equipo sera la 192.168.1.0/24. El punto donde esta el equipo Linux con OpenSwan sera el punto B y su IP sera 7.7.7.7, la red detras de este sera 192.168.2.0/24. La clave compartida que utilizaremos para autenticarlos sera "MiClaveVpn". Así que el escenario se veria mas o menos de esta forma:

Dagrama Conexion VPN


Como ven, incluyo en el diagrama los routers instalados por el suplidor de Internet en ambos lados, mas adelante veran porque. Ya que tenemos claro el escenario, vamos a empezar la configuración desde el equipo WatchGuard, así que abriremos el "Policy Manager", en el menu superior hacemos clic en "VPN" y seleccionamos "Brach Office Gateways...":

WatchGuard VPN

En la ventana de "Gateways" que abrira, haremos clic en "Add" y nos abrira la siguiente ventana. En esta pondremos el nombre para esta conexión, para este ejemplo le puse "VPN01", insertaremos tambien aqui la clave compartida que definimos para esta conexión (MiClaveVPN). Luego haremos clic en el boton "Add" mostrado mas abajo:


En esta próxima ventana (mostrada en el siguiente grafico) insertaremos la información sobre los dos gateways, como la IP del punto remoto (OpenSwan) y la interface del WachGuard que utilizaremos para esta conexión. En la primera sección de esta ventana (Local Gateway) definiremos el ID de este punto para el tunel, que sera el nombre con el que se identificara el WatchGuard con el punto remoto. Seleccionamos la opción "By Domain Information" y hacemos clic en el boton "Configure" que se encuentra justo al lado, esto nos abrira una nueva ventana donde seleccionaremos "Domain Name", escribiremos al lado la IP con la cual llegaremos al otro punto (para el caso de este ejemplo seria "6.6.6.6") y hacemos clic en OK. Volveremos la ventana anterior donde seleccionaremos la interface externa del WatchGuard correspondiente a la IP con la cual haremos la conexión VPN (en el caso de este ejemplo, la interface externa utilizada se llama "Internet"). En la sección de mas abajo (Remote Gateway) indicaremos la IP del punto remoto, seleccionaremos "Static IP Address" e insertaremos la IP del punto remoto (para este caso 7.7.7.7). Luego al igual que en "Local Gateway" y seleccionaremos la opción "By Domain Information" y haremos clic en "Configure" para escribir en "Domain Name" la IP remota (7.7.7.7), este sera el nombre con el que WatchGuard esperara que se identifique el equipo Linux. Al final la ventana se veria de esta manera:

Configuracion Gateways WatchGuard

Hacemos clic en "Ok" y volveremos a la ventana inicial donde escribimos la clave compartida. En esta ventana haremos clic en el Tab "Phase 1 Settings". Desactivaremos la opción "Dead Peer Detection", se vera entonces de esta manera:

Configuracion VPN Gateways WatchGuard

Hacemos clic en "OK" y con esto hemos configurado los Gateways para esta conexión, ahora definiremos el "Tunel" que usara estos Gateways, donde indicaremos las redes detrás de cada Gateway y la dirección del trafico, o sea, si el trafico sera en una sola dirección o en ambas. Para este caso, y quizas para la mayoría, sera en ambas direcciones (bidireccional).  Hacemos clic nuevamente en "VPN" del "Policy Manager", seleccionamos "Brach Office Tunnel..." y luego hacemos clic en "Add". Debemos ponerle un nombre a esta Tunel un nombre, podemos nombrarlo "TUNEL-01", debajo seleccionaremos el Gateway que utilizaremos, que es el que creamos anteriormente "VPN01". Luego hacemos clic en el boton "Add" para indicar cuales seran las redes que transitaran por el tunel. En la local agregaremos "192.168.1.0/24" y en la remota "192.168.2.0/24", nos aseguramos que en la sección "Direction" este indicado "<==>", que indica que el trafico sera bireccional, y luego hacemos clic en OK. Luego hacemos clic en el tab "Phase 2 Settings", en la sección "IPSec Proposals" veremos agregado "ESP-AES-SHA1" por defecto. Agregaremos a esta lista dos mas haciendo clic en "Add", estas seran "ESP-3DES-SHA1" y "ESP-DES-SHA1". Hacemos clic en "OK" y ya tenemos configurado el Tunel para nuestra conexión, al final la ventana del tunel que creamos se veria de esta manera:


Ahora podemos guardar y aplicar la configuración en el WatchGuard y pasar entonces al equipo Linux con Openswan. Primero vamos a asegurarnos que IPTables este configurado adecuadamente, si necesitan un repaso de IPTables les recomiendo que visiten este post. Debemos tener una regla INPUT para la interface externa que permita el trafico UDP a los puertos 4500 y 500 desde la IP 6.6.6.6 (damos por sentado que ya tiene OpenSwan instalado). Si usan una regla "MASQUERADE" asignar la IP externa del equipo al trafico saliente a Internet, o si usan "SNAT", tendrán que hacer una excepcion para que el trafico que se dirija a la red remota con la cual nos conectaremos via VPN no vaya a ser afectada por el NAT configurado por estas reglas, la regla seria de esta manera:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d ! 192.168.1.0/24 -j SNAT --to-source 7.7.7.7

Con esto le decimos a IPTables que enmascare cualquier trafico saliente de la red con excepción del trafico que vaya dirigido a la red remota. Basicamente esto es lo necesario en IPTables, vamos ahora a la configuración de OpenSwan. El archivo de configuración se encuentra en /etc/ipsec.conf, aqui configuraremos los parámetros de IPSec, como los puntos del VPN, las redes a enlazar, etc. el contenido de este archivo para este ejemplo seria el siguiente:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# basic configuration
config setup
        # NAT-TRAVERSAL support, see README.NAT-Traversal
        nat_traversal=yes
        protostack=netkey
        nhelpers=0
        uniqueids=yes

# Add connections here
conn $default
        keyingtries=3

conn vpn-watchguard
        authby=secret
        left=6.6.6.6
        leftsubnet=192.168.1.0/24 
        leftnexthop=6.6.6.5
        leftid=@6.6.6.6
        right=7.7.7.7
        rightid=@7.7.7.7
        rightnexthop=%defaultroute
        rightsubnet=192.168.2.0/24
        type=tunnel
        auto=start
        pfs=no

#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------          

Todo lo que es "left" se refiere al otro lado de la conexión VPN. La sección "leftnexthop" que señalo en negrita de la configuración anterior, indica el proximo salto antes de llegar al equipo al equipo que manejara el VPN del otro lado del tunel (en este caso el WatchGuard), generalmente habra un router delante que es quien le da la conexión a Internet, como se muestra en el diagrama de mas arriba. El resto de esta configuración es bien descriptiva así que podemos continuar. El siguiente paso sera configurar el "Share Key" o clave compartida para esta conexión VPN, para esto editaremos el archivo "/etc/ipsec.conf" y agregaremos la siguiente linea:


@7.7.7.7 @6.6.6.6 : PSK "MiClaveVPN"

Con esto ya tenemos nuestro OpenSwan configurado para la conexión (mucho mas rapido verda?). Antes de iniciar el tunel, vamos a verificar que esto este bien con Openswan, ejecutaremos el comando "ipsec auto verify" y si todo esta bien deberia devolvernos algo como esto:

Salida del comando ipsec verify

Ahora para iniciar nuestro tunel podemos ejecutar desde este equipo el siguiente comando:


#ipsec auto --start vpn-watchguard 

Ya debe estar arriba nuestro VPN entre WatchGuard y OpenSwan, podemos verificarlo ejecutando "ipsec auto --status", aparecerán varias lineas, pero las que buscaremos serán las siguientes:


Y con esto ya tenemos nuestras redes conectadas via VPN a traves de dos equipos diferentes usando el standard IPSec. En caso de que les de algún error les recomiendo hacer el debugging desde Linux, pueden buscar en el archivo /var/log/auth.log ya que en este archivo Openswan va registrando cada actividad y es mas facil seguir cualquier error. 

jueves, 10 de mayo de 2012

Convertir una Presentacion de PowerPoint en ScreenSaver

Recientemente he estado trabajando en unos tips de seguridad para los usuarios en la compañía donde trabajo, como parte de un pequeño programa de "Security Awareness". La presentación es corta y básicamente incluye unos consejos sobre como manejar el correo de una forma segura y tener precaución a la hora de recibir correos, especialmente correos que contengan archivos anexos. El caso es que aparte de la presentación, pensé también en crearles un Screen Saver con los mismos tips para que cada 5 o 10 minutos de inactividad la computadora empiece a mostrárselos, y ver si así (aunque sea de manera subconsciente) asimilen y apliquen algunos de estos tips, por lo que empecé a buscar la forma de convertir mi presentación (con unas cuantas modificaciones para que se vea un poco animada) en Screen Saver, o ".scr". La primera opción que se me ocurrio fue utilizar el Screen Saver que trae Windows por defecto (My Pictures Slideshow) que te permite utilizar fotos que tengas en una carpeta. Para esto es necesario primero guardar todos los Slides de tu presentación como archivos JPG, esto se hace de la siguiente manera:
  1. En PowerPoint, hacemos clic en "Save as"
  2. Elegimos la opción "Other Formats"
  3. Seleccionamos entonces "JPGE File Interchange Format (*.jpg)
  4. Luego seleccionamos "Every Slide" y seleccionamos la carpeta donde guardaremos los slides
Luego, tomamos esos esos JPG's y los copiamos a una carpeta compartida en la red a la cual los usuarios que queremos que tengan este screen saver deben tener acceso (solo de lectura). Si la computadora tiene Windows XP, nos vamos a la sección de Screen Savers y seleccionamos el screen saver llamado "My Pictures Slideshow" y hacemos clic en "Settings", aquí nos saldrán las opciones como el tiempo en que las fotos cambiaran, el tamaño entre otras, haremos clic en el botón "Browse" y nos moveremos al icono "My Network Places" y buscamos el equipo que contiene la carpeta compartida con los JPG que grabamos de nuestro PPT y  hacemos clic en OK. Con esto ya tenemos un Screen Saver con los datos de la presentación.

Pero este método, aunque es sencillo, tiene un par de inconvenientes. Lo primero es que se pierde cualquier animación que hayamos incluido en la presentación, como efectos en las letras o algún sonido que contenga la presentación, lo que puede tornar nuestro screen saver un poco aburrido (que de hecho seguro que lo sera para la mayoría de los usuarios) Tambien tiene el inconveniente de que hay que configurarlo usuario por usuario, porque este screen saver no tiene una forma de configurarlo via una GPO por ejemplo (al menos, yo no encontré la forma, quizás a se pueda a traves del registro). La mejor forma para mi es usar un programa que haga la conversión de PPT a SCR porque asi traerá las animaciones y sera mas fácil copiarle el archivo a las computadoras e indicar por GPO que usen ese screen saver. Luego de una larga búsqueda en Google, donde encontré muchisimos programas que lo hacen, la gran mayoría requería licencia y los que me daban el Demo entonces incluían una marca al Screen Saver, encontré uno sencillo y lo mejor, no me incluía ninguna marca o limitaba la presentación, llamado "Presentation to Screen Saver Converter for PowerPoint 1.0" que pueden descargarlo (o comprarlo) desde este link

El programa es bastante sencillo, solo hay le decimos donde esta nuestra presentación, agregamos algún archivos de audio si queremos, y le indicamos donde queremos guardar nuestro nuevo screen saver y listo. A continuación un "print screen" de la ventana del programa:

Powerpoint to Screen Saver

Una vez hemos incluido estos datos hacemos clic en "Convert" y ya tendremos nuestro Screen Saver con los efectos y animaciones que hayamos incluido en nuestra presentación y podemos distribuirlo.