Google EL TIPO DE INFORMATICA

miércoles, 22 de diciembre de 2021

Problemas Ejecutando "Resource Monitor" en Windows Server 2012 R2

Recientemente necesitaba ejecutar el Monitor de Recursos o "Resource Monitor" en una VM con Windows Server 2012 R2 porque queria mas detalles  que los que me ofrece el "Task Manager" sobre unos procesos en ejecucion. El "Resource Monitor" se puede invocar directamente desde el tab "Performance" del Task Manager, haciando clic en "Open Resource Monitor" o tambien ejecutando "resmon.exe", pero en mi caso, cuando abria se presentaba la ventana en blanco, sin informacion, como se muestra a continuacion:


Lo primero que intente fue hacer clic en el menu superior a "Monitor" y hacer clic en "Start Monitoring", pero entonces recibia el siguiente error:

"When attempting to start Resource Monitor, the following error ocurred: Access is denied"



Este error se presentaba aun ejecutando ejecutando el comando como "Administrador". Lo primero que revise fue si el usuario con el que estaba logueado era miembro del grupo de Administradores Locales del servidor, o si era miembro de los grupos "Performance Monitor User" y "Performance Log Users" y si, pertenecia a ambos grupos. Probe en otros servidores y me di cuenta que presentaban el mismo error, pero encontre uno que no lo presentaba. Luego de compararlos me di cuenta que en el que funcionaba, habia una GPO que no se aplicaba, y por ahi segui revisando.

Finalmente encontre que en los servidores con este problema habia una Politica incluida en ese GPO que limitaba algunos permisos, en concreto el permiso "Create global objects", este setting se encuentra en:

Computer Configuration --> Policies --> Windows Settings --> Security Settings --> Local Policies" User Rights Assigments


Por alguna razon en esta politica no estaba incluido el Administrador ni el grupo Administrators, por esta razon me daba el problema de permisos. Una vez agregue los usuarios corresponidentes (y reiniciar los servidores afectados) pude ejecutar sin problemas el Resource Monitor:



Espero que esto les sea de utilidad.

viernes, 11 de octubre de 2019

Error al Migrar Servidor IIS usando Web Deploy (Exception from HRESULT: 0x800700B7)

Recientemente necesitaba migrar todos los sites y webapps de un servidor IIS 7.5 corriendo Windows Server 2008 R2 hacia un IIS 10 en Windows Server 2019. Normalmente este tipo de migracion la realizo utilizando Web Deploy, si no la conocen, Web Deploy es una herramienta que permite la sincronizacion y migracion de websites entre diferentes servidores IIS y sus diferentes versiones.

Para realizar esta migracion o copia, solo ejecuto este comando desde el nuevo servidor IIS al que quiero copiar los sites:

msdeploy.exe -verb:sync -source:webServer,computerName=ip-iis-origen -dest:webServer

El comando se ejecuta desde la ruta donde se instala Web Deploy (c:\Program Files\IIS\Microsoft Web Deply V3\). Como se imaginaran, en la seccion "ip-iis-origen" insertan la IP del servidor IIS que contiene los sites que deseamos migrar. Ambos servidores deben tener Web Deploy instalado.

El problema es que cuando ejecutaba este comando en el servidor nuevo, recibia este error:


"Error: Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7)
Error count: 1."

Y este es el error que da origen a este post. Habia realizado este proceso varias veces y no lo habia visto, incluso entre diferentes versiones de IIS, pero todas anteriores a la version 10. Lo que indica este error es que hay un archivo en uso que Web Deploy no puede sobreescribir, en algunos sitios en Internet indicaban tambien que podia deberse a que el puerto 80 estuviera siendo usado por otra aplicacion, ninguna de estos era mi problema.

En mi caso, esto simplemente se debio a que las versiones de Web Deploy eran diferentes. En el servidor con IIS 7.5 tenia instalada la version 3.5, mientras que en el nuevo servidor tenia la version 3.6. Al instalar la ultima version en el IIS 7.5 se corrigio el problema y pude sincronizar sin problemas los servidores.

En caso de que tengan las mismas versiones en ambos servidores y aun asi esten presentando este error, pueden verificar estos sites:


Hasta el Proximo!

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.

domingo, 1 de febrero de 2015

Conseguir Claves WEP en Mac OS X con Aircrack-ng

Este tema de romper claves WEP en redes WiFi no es nada nuevo, todos sabemos lo vulnerable que es WEP y lo rápido que se puede conseguir la clave o "key" una vez se logra capturar suficiente tráfico. Pero en este post veremos como hacerlo en Mac OS X usando la herramienta nativa de diagnostico de redes inalámbricas (Wireless Diagnostic) para capturar paquetes y luego "Aircrack-NG" para descifrar o calcular la clave en base a los datos capturados. Generalmente para el escaneo de redes inalámbricas, la captura de los datos y/o inyección de datos se utilizan programas como KisMAC, pero generalmente estos programas no funcionan con los drivers de la tarjeta WiFi de Mac OS X, por lo que usualmente se utilizan tarjetas externas USB con drivers que soporten. Pero si no tenemos otra tarjeta o drivers compatibles, podemos usar esta utilidad del sistema, nos permitirá conseguir la información necesaria de la red y también capturar los datos para descifrar la clave WEP. Lo que no podremos hacer con con esta utilidad es inyectar trafico a la red, así que si la red no es muy activa tendremos que durar mucho tiempo capturando hasta que se consiga una cantidad de suficiente de paquetes. Pero para muchos casos podremos usar esta herramienta nativa, así que empecemos.

Conseguir Información de la Red

Lo primero que necesitaremos es información de la red que queremos "auditar", o a fin de cuentas conectarnos. Lo que buscaremos será el canal en que transmite, el nombre de la red (o SSID) y el BSSID, que seria el Mac Address del router inalámbrico que transmite la red. Para esto usaremos como les dije la herramienta del sistema para diagnostico de Redes Inalámbricas, para abrirla presionamos la tecla "option" y manteniéndola presionada hacemos clic encima del icono que nos muestra las redes inalámbricas (en el menu de arriba), luego hacemos clic en "Open Wireless Diagnostic", como se muestra mas abajo:

Herramienta de Diagnostico Wireless
Herramienta de Diagnostico Wireless del Sistema

Se les pedirá escribir el usuario/password de un usuario con privilegios administrativos en el equipo, luego abrirá la siguiente ventana. Abrirá una especie de "Wizard" que se usa para determinar problemas de conexión, pero esto no es lo que usaremos. Junto a esta aplicación el sistema tiene una ventana de utilidades, para acceder a ella haremos clic en "Windows" (en el menú superior) y seleccionaremos "Utilities", como se ve mas abajo:

Mac OS X Wireless Diagnostic

Esto nos traerá la ventana que necesitamos. Como verán esta herramienta tiene varias opciones que nos resultaran de mucha utilidad. Tiene varios tabs: Info, Frame Capture, Logging, Wi-Fi Scan, Perfomance. Primeramente utilizaremos la opción "Wi-Fi Scan", que como ya se imaginaran usaremos para escanear y detectar las redes wi-fi cercanas y conseguir la  información que necesitamos. Hacemos clic en "Scan Now" y veremos un listado con las redes WiFi, donde buscaremos alguna que utilice WEP:

Redes WiFi

Ahora que tenemos identificada la red que queremos "auditar", podemos empezar a capturar datos. Como les había comentado al inicio, para conseguir la clave necesitamos capturar todo el trafico posible. Nos movemos a la sección "Frame Capture". Solo tenemos que seleccionar el canal (Channel) en que transmite la red (en el ejemplo del gráfico anterior, se encuentra en el canal 1) y hacemos clic en "Start". Con esto empezara a hacer la captura de los datos, dependiendo de que tan activa este la red este proceso puede tomar desde varios minutos hasta varias horas, mientras mas tiempo estemos capturando mas posibilidades de capturar.

Captura de Datos WiFi


Luego de que haya pasado un tiempo considerable detenemos la captura. Nos generara un archivo en el Desktop con extension ".wcap", el nombre estara compuesto por la fecha de creación, por ejemplo "150131_223736.wcap" (año - mes - mes). Este archivo contiene los datos que capturamos en el canal que especificamos. Ahora podemos pasar a intentar calcular el key usando aircrack-ng.


Aircrack-NG

Aircrack es toda una suite de herramientas para auditoría de redes inalámbricas, tiene herramientas para la captura de datos (lo que hicimos anteriormente con la herramienta del sistema), para inyección de trafico entre otras, pero como les comente antes, algunas no funcionan con los drivers de Mac OS X. Pero si tenemos suerte, no necesitaremos inyectar trafico. En caso de que no tengan Aircrack instalado, pueden instalarlo con Homebrew (y si no lo han utilizado Hombrew aquí les digo como instalarlo, es bastante sencillo). Para instalarlo utilizan el siguiente comando:

 brew install aircrack-ng

Bien, ya con Aircrack instalado, solo tenemos que ejecutarlo sobre el archivo que contiene la captura que hicimos. Este archivo contendrá muchos datos, no solo de la red en cuestión sino de todas las redes que estén en el área transmitiendo en el canal que hicimos la captura. Así que le indicaremos a Aircrack el BSSID de la red que queremos que nos descifre el Key, así que ejecutaremos:

$ aircrack-ng -b bssid-de-la-red archivo-capturado.wcap

Con la opción "-b" le indicamos el BSSID de la red, seguido del archivo capturado. Si se capturaron suficientes paquetes, Aircrack calculara en unos segundos la clave. En caso de que no hayan suficientes, aircrack les dirá que necesita más paquetes (IVs) para poder calcularla. En ese caso necesitarán hacer la captura nuevamente pero por mas tiempo. En el caso de este ejemplo, deje la captura por unos 40 minutos y mi archivo de captura alcanzó unos 900 MBs, al ejecutar aircrack solo necesito unos segundos para calcular la clave:

Aircrack calculando Clave WEP

Como pueden ver pude conseguir una buena cantidad de paquetes (43743 IV's) en la captura, y más abajo Aircrack muestra el Key. Solo hay que remover los dos puntos ":" entre cada par de caracteres y tendremos el Key de la red. Así de rápido se puede conseguir la clave de una red que utilice WEP, por esto es que tiene que evitar usarlo. Espero que esto les sea de utilidad.

Hasta el Próximo!

miércoles, 10 de diciembre de 2014

Comandos Basicos para VMware ESXi

En muchos casos es mucho mas rápido (y fácil) realizar algunas operaciones vía comandos que realizarlos mediante interface gráfica, otras veces hay algunas acciones que no se pueden realizar vía la interface gráfica, como por ejemplo, en el caso de VMWare no tenemos la opción apagar forzosamente una maquina virtual (o "force stop") en Vsphere Client. Por eso les dejo aquí algunos comandos para VMWare ESXi 4.1 y 5 que creo les podrían ser de utilidad, claro deben tener activado el acceso ssh en sus servidores, si aun no lo tienen pueden ver aquí como hacerlo.

  • Listar las Maquinas Virtuales
Para ver el listado de las maquinas virtuales creadas en el host ejecutamos:

vim-cmd vmsvc/getallvms

Esto nos presentara el listado de las maquinas virtuales creadas con el ID de las maquinas (vmid) que se utilizara en los siguientes comandos, el nombre de la VM, la ruta del archivo y el DataStore donde se encuentra, el tipo de Sistema Operativo (el que se indica cuando se crea la VM) y la version de la maquina virtual.

  • Ver status de una VM
Si queremos conocer si una de las maquinas virtuales que listamos con el comando anterior esta encendida o apagada, ejecutamos:

vim-cmd vmsvc/power.getstate <vmid>

Donde como ya imaginaran, remplazaremos  mid
> por el ID de la maquina virtual que queremos verificar.

  • Encender una VM
Si una de las maquinas virtuales esta apada, podemos encenderla utilizando:

vim-cmd vmsvc/power.on <vmid>

  • Apagar una VM
Si queremos apagar "amablemente" una de las maquinas virtuales, o sea, pidiéndole decentemente que por favor se apague, podemos usar el siguiente comando:

vim-cmd vmsvc/power.shutdown <vmid>

Si de la forma amable no responde, ejecutamos:

vim-cmd vmsvc/power.off <vmid>

  • Forzar Apagado de una VM
Si al intentar apagar una maquina virtual, ya sea usando el Vsphere Client o usando los comandos anteriores, la maquina no responde y no llega a apagarse, podemos forzar el apagado usando la utilidad esxcli. Primero necesitaremos el "WorlNumber" de la maquina que queremos apagar, ejecutaremos:

Para ESXi 5:
esxcli vm process list

Para ESXi 4.1:
esxcli vms vm process list


Esto nos arrojara un listado con las VMs que tenemos actualmente y también veremos el "Worl ID" de cada una. Cuando hayamos identificado el que corresponde al equipo que queremos forzar a apagar ejecutamos entonces:

Para ESXi 5:

esxcli vm process kill --type=force --world-id=<WorldNumber>

Para ESXi 4:

esxcli vms vm process kill --type=force --word-id=<WorldNumber>


  • Informacion del Hardware del Host
Para ver la información de hardware del host donde tenemos instalado VMWare ESXi, como la cantidad de procesadores y tipo, la cantidad de memoria RAM que soporta, la cantidad de slots que de memoria que tiene el Motherboard, el tamaño de cada DIMM de memoria, entre otros, podemos usar el siguiente comando:

smbiosDump

Este comando nos traerá una extensa lista de todos los componentes del equipo, esto es muy util si, por ejemplo, están planeando un upgrade de memoria para su servidor y quieren saber cuando les soporta, cuantos DIMMs tiene instalados y cuantos slots tienen disponible, etc.

Información Capacidad Memoria RAM  Soportada
Como ven esto nos muestra información del tipo de memoria que tenemos en el equipo y la cantidad que soportaría. Bueno como siempre espero que esto les sea de utilidad, hasta el próximo!

miércoles, 17 de septiembre de 2014

Permitir conexiones FTP a puertos Alternos a traves de IPTables

Hace un tiempo les hablaba en este post sobre como configurar IPTables para permitir conexiones a un servidor FTP que se encuentre en la red y les hablaba sobre los modos "Pasivo" y "Activo" de FTP. Les decía que era necesario activar los modulos ip_conntrack_ftp y ip_nat_ftp (usando modprobe), pero que pasa si el servidor FTP lo tenemos configurado para escuchar en un puerto diferente al 21? En ese caso, no basta solo con modificar las reglas DNAT en IPTables, también hay que indicarle a los módulos que cargamos que estaremos utilizando puertos diferentes al standart.

Para indicar esto, solo tenemos que crear un archivo llamado conntrack.conf dentro de /etc/modprobe.d, dentro de este indicaremos el puerto en el que escucha nuestro FTP. Supongamos que configuramos el servidor FTP para que escuche en el puerto 2221, en contenido del archivo conntrack.conf seria:

options ip_conntrack_ftp ports=2221

Guardamos nuestro archivo y listo. Con esto y las reglas de IPTables configuradas, ya podremos redirigir el trafico hacia nuestro servidor FTP. En caso de que necesiten saber como configurar las reglas pueden revisar este post y claro, cambiar el puerto "21" por el puerto en que escucha su servidor. Bueno, este fue corto, como siempre espero les haya sido de utilidad.

miércoles, 30 de julio de 2014

Exportar/Importar Permisos NTFS de Carpetas y Subcarpetas usando ICACLS

Aquí les tengo un corto post sobre algo que (como prácticamente todo lo que les escribo aqui) tuve que utilizar recientemente. Supongan que tienen una carpeta que contiene otras subcarpetas y archivos, cada subcarpeta tiene permisos específicos al igual que los archivos, y con el tiempo se han ido agregando otros usuarios a esta carpeta con diferentes privilegios, y que un día, este folder se borra (o lo borran) o lo tienes que copiar a (o restaurar desde) una unidad, por ejemplo FAT32 donde se perderán todos los permisos que se habían configurado. Normalmente esto no seria mucho problema, pero si la carpeta es usada por muchos usuarios y contiene muchos subfolders dentro, es posible que pases mucho tiempo determinando que usuario tenia acceso a cual folder, si tenia permiso de lectura o de escritura, si podía escribir pero no podía borrar, en fin determinar nuevamente todos los permisos NTFS y configurarlos para cada subfolder. Para estos casos podríamos exportar los permisos de la carpeta principal y de todas las subcarpetas y su contenido que contengan a un archivo .txt, el cual podremos luego importarlo nuevamente, ambas cosas usando el comando icacls de Windows.

El comando Icacls nos permite visualizar y modificar los permisos (o DACLs - discretionary access control lists- ) de un archivo o carpeta. El formato o notación en que están definidos estos permisos es SDDL (Security Descriptor Definition Lenguage), esta notación se vería mas o menos de esta forma ejecutando icacls a la carpeta "Program Files" y al archivo "C:\Windows\System32\cmd.exe":

Salida comando icacls.exe

Como ven el comando nos muestra los grupos o usuarios que tienen permisos definidos y el nivel de acceso que tienen sobre la carpeta o archivo, por ejemplo (F) para Full Permitions, solo lectura se expresaría como (R), lectura y ejecución como (RX), escritura como (W). También muestra si los permisos son heredados de folders superiores. Para mas detalles sobre esta notación pueden visitar este link.

Y bien, volviendo a lo que les mencione arriba, si quisiéramos exportar los permisos de una carpeta y sus subcarpetas, utilizaríamos:

C:\> icacls D:\MiFolderdeDatos /save permisosfolder.txt /t

Donde "D:\MiFolderdeDatos" es la carpeta de la cual quiero exportar los permisos, "/save" es la opción para indicarle a icalcs que queremos guardar estos permisos en el archivo "permisosfolder.txt", y con la opción "/t" le indicamos que queremos también los permisos de los subfolders de nuestra carpeta.

Ahora, una vez ya tenemos nuevamente nuestra carpeta con todos los datos restaurada (y claro, en una unidad NTFS), podemos importar todos los permisos, usando ahora:

C:\> icacls D:\ /restore permisosfolder.txt

Como habrán notado, ahora para restaurar los permisos no necesito incluir la carpeta, solo indico la ruta raiz, el sea el disco donde se encuentra el folder (D:\). Esto porque icacls al momento de exportar los permisos utiliza ruta relativa, o sea, por cada entrada de permisos solo escribiría, por ejemplo "MiFolderdeDatos\archivo1.doc" ; "MiFolderdeDatos\carpeta1", así que no necesitamos especificar la carpeta a restaurar. Y bien, como les dije era un post bien corto, espero que esto les sea de ayuda en algún momento, como lo fue para mi.

Hasta el Próximo!

lunes, 26 de mayo de 2014

Importar Datos en Active Directory desde un archivo de Texto con DSQUERY y DSMOD

Quizas les haya pasado esto, necesitan modificar la información o propiedades en Active Directory de multiples usuarios, por ejemplo, agregar la dirección de correo, números telefónicos, agregarlos a un grupo o cualquier otra información del usuario. Esto mismo se me presento hoy, tenia que agregar el código de empleado a todos los usuarios, se le iba a agregar en el campo "Description". Me dieron un archivo de Excel con la lista de usuarios y la información que debía agregar. Afortunadamente había una columna con el username del dominio, por lo que era mas fácil asociar la nueva información con active directory.

DSQUERY y DSMOD

Bien, la manera mas fácil que pensé para hacer esto fue utilizar los comandos "DSQUERY" y "DSMOD", estos comandos permiten como seguramente ya han intuido, hacer búsquedas de en Active Directoty (dsquery), ya sea usuarios, computadoras, etc., para y modificar parámetros (dsmod) como los que les mencione mas arriba (correo, nombre usuario, password, etc.). Para utilizarlos tendrian que instalar "Remote Server Administration Tools". Si queremos por ejemplo  listar todos los usuarios del dominio usaríamos "dsquery user", podemos también buscar todos los usuarios de un OU especifico, supongamos que queremos los usuarios del OU "Contabilidad" y que nuestro dominio Active Directory se llama "midominio.local", usaríamos esto:

C:\>dsquery user ou="Contabilidad,dc=midominio,dc=local"

Con esto tendríamos el listado de usuarios de este OU, lo bueno es que ahora podemos tomar la salida de este comando y pasárselo a DSMOD para cambiar los parámetros o atributos que necesitemos agregar o cambiar. Siguiendo el ejemplo anterior, supongamos que a los usuarios de ese OU queremos modificarles el atributo "Office", lo que hariamos es repeterir el mismo comando anterior, pero agregar un "pipe" al final para dirigir la salida del comando a DSMOD y agregar dsmod user -office "Oficina Principal":

C:\>dsquery user ou=Contabilidad,dc=midominio,dc=local" | dsmod user -office OficinaPrincipal


Así todos los usuarios del OU que indicamos tendrán el atributo modificado, pero ahora viene lo interesante. Volvamos al caso inicial de modificar un grupo de usuarios y agregar o modificar en cada uno un atributo, pero con valores diferentes. Como les dije tenia la lista de usuarios y los atributos que debía agregar, lo que hice fue tomar de este archivo las 3 columnas que me interesaban: username (el del dominio), correo electrónico y código. Lo que haremos sera utilizar este archivo de texto (cvs) con estas 3 columnas y alimentar con cada una de ellas estos comandos. Usaremos también el comando "FOR"  que sera quien leerá el archivo de texto y pasara la información a dsquery y dsmod. El archivo de texto se vería mas o menos de esta manera:

Archivo de Usuarios en formato CVS

Donde como pueden ver tenemos en la primera columna el usuario, en la segunda su cuenta de correo y en la tercera el código del usuario que agregaremos en el campo "Description" de Active Directory. Como ven las columnas están separadas por coma (cvs), lo guardaremos en "C:\usuarios.cvs". Teniendo ya nuestro archivo listo y organizado, podemos hacer una prueba con el comando FOR ejecutando "for /F "tokens=1,2,3 delims=, " %a in (usuarios.csv) do echo %a %b %b" obtendríamos:


Si la salida fue como el gráfico anterior, podemos ahora hacer unos cambios al comando, y quedaría de esta manera:

C:\>for /F "tokens=1,2,3 delims=, " %a in (C:\usuarios.cvs) do dsquery user -samid %a | dsmod user -email %b -desc %c

Vamos a ver entonces lo que pasa aqui. Si tienen nociones de programación estarán familiarizados con el comando FOR, lo que estamos haciendo es "iterando" sobre el archivo "usuarios.cvs" y por cada linea ejecutaremos una acción. El comando "For" lo que hará es asignar el contenido de cada columna en una linea a una variable, en este caso la primera columna de la primera fila (el nombre de usuario) se asignara a la variable "%a", la segunda (el correo) a la variable "%b" y la tercera (el código) a la variable "%c" (pero como ven solo especifique %a en el comando, ya el sabe que las otras columnas las almacenara en variables nombradas con la letra siguiente). Luego indicamos el parámetro "do" del comando for, que es entonces donde especificamos la acción que se ejecutara en cada iteración sobre el archivo, y es aqui entonces donde usamos los comandos "dsquery" y dsmod". Como ven, ejecuto "dsquery user -samid" y le paso como parametro la variable %a a la que FOR ya le ha asignado el valor de "user1" (con "-samid" le indicamos a dsquery que buscaremos en Active Directory por username). Luego hago un "pipe" (|) para redirigir el resultado de dsquery a dsmod, usando "dsmod user -email %b -desc %c". Aqui estamos modificando 2 atributos del usuario al mismo tiempo (email y descripcion) y los valores que le estamos pasando son las variables %b y %c, que FOR ya le asigno los valores "user1@midominio.local" y "00001" respectivamente.

Al presionar enter veremos que se irán ejecutando estos comando uno por uno por cada linea del archivo usuarios.cvs, si encuentra un error en una linea del archivo el error les saldrá en pantalla pero no se detendrá la ejecución, ya que FOR continuara ejecutandose por cada linea del archivo. Bien, con esto hemos importado datos o actualizado información de un grupo de usuarios en Active Directory usando un archivo de texto, espero haberles explicado bien, todo esto tiene mucho sentido en mi cabeza pero a veces la explicación no me sale tan clara :D. Les recomiendo explorar los comando "DSQUERY" y "DSMOD" usándolos con el parámetro  de ayuda "/?", verán todo lo que pueden hacer en Active Directory desde la linea de comandos con ellos y tambien con DSGET y DSMOD. Espero que les haya sido de utilidad!


sábado, 26 de abril de 2014

Creando Symbolic Links en Windows con MKLink

En esta semana se presento un pequeño problema en la oficina. Uno de los programas usado por los usuarios llamaba al Internet Explorer para generar un reporte desde Reporting Services, pero por alguna razón se abría la versión de 64bits del navegador. Esto generalmente no seria problema, si no fuera porque algunos ActiveX solo funcionan en la version de 32bits. Después de probar varias cosas decidí, para no perder mucho tiempo, renombrar la capeta donde se encuentra la versión de 64bits de Internet Explorer ( de "Internet Explorer" a "Internet Explorer64" ) y crear un Symbolic Link en la misma ruta y con el nombre original de la carpeta apuntando a la versión de 32bits que se encuentra en "C:\Program Files (x86)\Internet Explorer", y de esto es que quiero hablarles hoy; de los Symbolics Links en Windows, como crearlos y cuando usarlos.

Un Symbolic Link (o softlink) es algo así como un Shortcut, simplemente es una dirección hacia otro archivo o carpeta, con la diferencia de que el shortcut que creamos en Windows es realmente un archivo de extension ".lnk", mientras que el Symbolic Link es una redireccion hecha a nivel del File System. Esto significa que, por ejemplo, si creamos un shortcut que apunte a la carpeta "C:\Users" lo que crearemos sera un archivo ".lnk" que dentro apunta a la carpeta que indicamos, una aplicación tendría que saber interpretar este tipo de archivos .lnk y generalmente no lo hacen. Windows Explorer si los reconoce y por eso podemos hacer doble clic sin problemas. En el caso de los Symbolic Link, la redireccion la crea el propio File System (NTLM) y les muestra esto a las aplicaciones como carpetas o archivos reales. Estos links podemos también crearlos entre diferentes discos, por ejemplo, podríamos hacer un Symbolic Link en "C:\Datos" que apunte realmente a "E:\Programa\Datos", y todas las aplicaciones verían este link como una ubicación real en el equipo y no como un shortcut. Lo que nos serviría por ejemplo para mover una carpeta de datos de un programa sin tener que hacer alguna configuración en este y que el piense que sigue escribiendo en su carpeta original.

Para crear estos links, usamos en el comando mklink. Lo ejecutamos de la siguiente manera:


mklink /D ruta-donde-se-creara-el-link ruta-donde-apuntara-el-link 

Como ven es muy sencillo de usar, "/D" es la opción que le indica que se creara un Symbolic Link, luego le indicamos donde queremos crear el link seguido de a donde apuntara el link. Este comando requiere elevación de privilegios, así que tendrán que abrir una ventana de comandos (CMD) como Administrador. Para el caso que les mencione arriba, ejecute el comando de la siguiente manera:


Como ven renombre la carpeta de Internet Explorer a "Internet Explorer64" y dentro de esta misma ruta cree un Symbolic Link llamado "Internet Explorer" apuntando a la ubicación de la versión de 32bits. Si hacemos un "dir" aquí veremos ahora que la carpeta "Internet Explorer" es un SYMLINKD:


Y como ven, se nos muestra hacia donde apunta. Bueno, hasta aquí este post, espero como siempre que les sea de utilidad.