OaxRom Mobile Computing
  • Terminales Portátiles
  • Conmutadores de VoIP
  • Aplicaciones Web
  • Asesoría y Consultoría
  • Cursos de Asterisk
  • Desarrollo de Software
  • Servicios

    Y más..

    Nuestra experiencia en redes y comunicaciones nos respaldan, ¡Estamos a sus órdenes!
  • #ContraElSilencio

    #ContraElSilencio





    No a la supresión de la libertad de expresión en internet que pretende realizar el gobierno arbitrario de Enrique Peña Nieto en México

    Seguridad

    • Evita ser una víctima del phishing y no te roben tu cuenta bancaria.

      ¿Cómo funciona el phishing para cometer fraudes bancarios?


      Es muy común recibir correos que aparentemente envía algún Banco indicándonos que entremos a nuestra cuenta para actualizar datos o para confirmar un depósito recibido(sic).


      Actualmente en internet hay mucha información con nuestro nombre y correo electrónico, ya sea por haberla dado de alta en una red social, en el registro de un evento, etc. Esta información la usan los "hackers" para enviar SPAM simulando ser el banco.


      Para esto generan un correo personalizado con nuestro nombre y correo electrónico, aunque hay datos que no concuerdan en el correo pero lo pasamos desapercibido, por ejemplo en el número de tarjeta nunca ponen los últimos 4 dígitos, para confundir ponen los 4 primeros dígitos de la tarjeta, que siempre son los mismos dígitos en las tarjetas de cada banco, por ejemplo para Bancomer todas empiezan con 4152, aunque quizá no pase mucho para que los hackers conozcan los últimos 4 dígitos y hasta el NIP, pues he visto servicios de internet que hacen cobros bancarios y no encriptan su información, no tardará que algún hacker se les cuele y pondría en jaque a todos sus clientes, como ya ha sucedido con cientos de miles de tarjetas de crédito de clientes de Sony o Home Depot por ejemplo.


      El truco del phishing está en que al solicitar la validación del usuario, ellos aparentemente ponen la liga del banco, pero la URL real es un servidor hackeado que ha sido infectado, esto para cualquier informático es fácil de detectar, pero un usuario común lo pasa por alto y sin meditar le da click a la liga, sin saber que está siendo redireccionado a un servidor apócrifo, el cuál presenta toda la interfaz del banco, pero la información ahí introducida como número de tarjeta, clave, dígitos del token, NIP, dígitos de validación, etc. en realidad están siendo enviados al hacker quien inmediatamente prueba esa información para ver que puede obtener de esa falsificación.


      En la foto se alcanza a observar la IP del servidor hackeado y el script al cuál manda la URL supuestamente de Bancomer


      OJO el banco no envía correos para validación: El banco nunca les enviará un correo para validación de su cuenta o para verificación de sus datos, esta información se hace en el centro de atención telefónica o en la sucursal del banco.


      Introducir manualmente las direcciones web en el navegador: Lo que siempre hay que hacer es entrar a la página del banco introduciendo manualmente la dirección URL en la barra de direcciones del navegador.


      Siempre usar HTTPS: También siempre usar https, por ejemplo https://www.bancomer.com ya que es un protocolo seguro y encriptado, el cuál usa un certificado de seguridad avalado por una entidad internacional, en caso de que haya un ataque por DNS Spoofing de algún hacker que intente simular el servidor https://www.bancomer.com entonces el mismo navegador alertará que ese certificado es inválido y está siendo suplantado.


      No usar cybercafés: Algo altamente riesgoso es usar un cybercafé para revisar correos, cuentas de banco, etc. En dado de usarlos caso por alguna urgencia nunca usar el teclado físico, buscar el teclado virtual y utilizarlo para digitar numeros de cuenta y passwords.


      Esta forma de phising es la más fácil y económica de realizar por los hackers y pueden pescar algunos incautos. Existen otras más elaboradas que requieren mayor conocimiento de hacking, mezclando fallos de diversos protocolos, pero tienen un objetivo en específico y logran burlar incluso a usuarios medios incluso "expertos".


      Existen muchos tipos para evitar ser infectados por software espía, la primera es no ser tan curioso y no darle click a cualquier liga que muestre información "curiosa", el morbo siempre atrae pero también infecta.


    • Huellas electrónicas en el aire

      Hace unos años salió un estudio que indicaba que es posible rastrear a una persona a partir de su ADN, el ADN de un individuo va cambiando conforme a los diversos lugares donde haya estado, de tal forma que se genera una combinación única por cada parte donde haya estado.


      Ahora, ha salido una aplicación que puede rastrear las huellas electrónicas que hayas dejado en el aire. La nueva tecnología Bluetooth Smart hace uso del protocolo Bluetooth Low Energy para mantener sincronización con diversos dispositivos, esta tecnología liga el ID del dispositivo la cuál es única en el mundo y va dejando ondas en los 2.4 Ghz en el aire, por lo que en algún momento estás ondas podrían captarse a través de un App como RaMBLE y buscar la info en una base de datos para encontrar a quien pertenece esa información. De tal forma que es posible rastrear a una persona con las "huellas electrónicas" que deje en el aire.


      Esto es muy peligroso, pues se calcula que en el 2018 el 90% de los dispositivos en el mundo usarán la tecnología BLE. Es peligroso pues si eres famoso, un poderoso empresario, un político, etc., los hackers podrán buscar algún rastro tuyo y en el menor de los casos quizá tomarte algunas fotos.


      https://play.google.com/store/apps/details?id=com.contextis.android.BLEScanner
    • Curso de configuración de firewalls en Oaxaca 12 Junio de 2015

      Curso de implementación de Firewall en Linux.

    • Fecha: 12 de Junio de 2015
    • Lugar: Oaxaca de Juárez.
    • Sesiones: 1
    • Horario: 9:00-14:00 16:00-20:00
    • Costo: Aportación voluntaria que será donada a la ciudad de los niños de la Ciudad de Oaxaca.


      Material entregable: Appliance de seguridad instalable.
      Objetivo: Adentrar a los estudiantes de sistemas en el uso de linux e implementación de appliances de seguridad en el mundo empresarial.


      CUPO LIMITADO.




      El curso tiene como fin adentrar a los estudiantes de computación en el mundo de la seguridad informática basada en Linux y FreeBSD.


      El objetivo del curso será ejemplificar a través de prácticas de redes la configuración de diversas situaciones que se exigen en el mundo real.


      Prácticas a realizar:

    • Configuración de Firewalls.
    • Filtrado por direcciones Mac/IP/Subnet.
    • Balanceador de conexiones de internet.
    • Detector de Intrusos(IDS).
    • Prevención de Intrusos(IPS).
    • Redes Privadas Virtuales(VPNs)
    • Filtrado de contenido web(Web Proxy)
    • Ruteo estático y dinámico.
    • VLANs
    • Seguridad inalámbrica y hacking.
    • Site Surveys
    • Servidores DHCP
    • Monitoreo de tráfico.
    • Monitoreo de red.
    • Nmap
    • Network Address Translation(NAT)
    • Portal Cautivo
    • Comandos linux para monitoreo, configuraciń y administración de redes.
    • Revisión de logs.

      Importante: El asistente deberá contar con su propio equipo de cómputo para hacer la instalación de las diversas plataformas de seguridad a revisar.
  • ¿Cómo conectar teléfonos Fanvil a una VPN con OpenVPN?

    Una de las situaciones muy comunes que requieren los clientes, es conectar extensiones remotas a un servidor de telefonía IP.


    Esto es muy fácil si solo se abriera el puerto SIP o IAX del servidor Asterisk en el router de internet, pero estaría muy expuesto a ser hackeado aún teniendo un detector de intrusos y un firewall que estén gestionando peticiones incorrectas, por lo que no es una opción a menos que se sepa bien lo qe se hace y se lleve una gestión de seguridad impecable.


    Antes había que hacerlo a través de conexiones con el protocolo IPSec, pero resultaba caro y complicado hacer las implementaciones.


    Después surgió DD-WRT, un proyecto de software libre para routers, el cuál desde el sp 0.23 ya incluía soporte para OpenVPN. Por lo que era fácil cambiar el firmware a los routers Linksys y con ello se establecía un bridge a través de una interfaz Tap para conectar a OpenVPN y poder compartir la conexión VPN con los equipos que estuvieran conectados al router Linksys. Con esto podían conectarse cualquier teléfono IP, ATA u otro equipo de red a la VPN aunque no tuviera soporte de OpenVPN, pues la VPN la hacía el linksys a través del bridge y lo compartía a través de la interfaz Tap.


    Esto se usó mucho, pero muchas veces los Linksys no eran del todo fiables, las descargas eléctricas llegaban a flashear el firmware y había que reconfigurarlos los routers.


    Desde hace algunos años salieron teléfonos IP con soporte OpenVPN, los primeros fueron los yealink T26 y T28, aunque no eran tan baratos, pero eran una solución que ya incluía el soporte, después Yealink los introdujo en sus teléfonos de bajo costo como el Yealink T21.


    Hace algunos años salió al mercado la marca Fanvil y con ellos sus teléfonos que incluyen muchas características de red avanzadas, una de ellas es el soporte OpenVPN, lo interesante es que este soporte lo incluyeron en su teléfono de bajo costo el Fanvil F52 el cuál puede conseguirse con un costo alrededor de los 50-60 dlls. Por lo que es una opción muy económica de extensiones remotas para los clientes.


    Configuración.


    La configuración de los Fanvil es muy sencilla:
  • Solo basta habilitar el soporte de OpenVPN en [ Security-VPN ].
  • Posteriormente cargar el archivo de configuración de cliente OpenVPN en [ Security-Security-Update Security File ]. Es importante que el nombre del archivo se nombre client.ovpn.
  • En OpenVPN Files se vería cargado el archivo si fuera exitoso.
  • Reiniciar el teléfono [ Maintenace-Reboot ]


    Si la carga del archivo fue correcta y la conexión VPN se estableció en el teléfono entonces se vería la IP de la red privada en [ Security-VPN-Virtual Private Network Status - Ip Address ]


    Si el servidor OpenVPN está en el mismo Asterisk, entonces solo en la configuración de la cuenta SIP o IAX poner la IP virtual del servidor VPN por ejemplo 192.168.60.1 y los demás parámetros de registro.


    Para que esto funciones, es recomendable que en el archivo client.ovp esté definido la IP del servidor OpenVPN, el puerto de conexión VPN, las llaves y certificados.


    Con esto se tiene una solución estable de extensiones remotas con teléfonos Fanvil a bajo costo.
  • Aplicaciones para monitoreo, rastreo y espionaje de dispositivos móviles.

    En la actualidad ya existen teléfonos móviles como personas en el mundo, la cifra ya supera los 7,000 millones de móviles y su popularidad enmarcada por diversas ventajas también ha pasado a generar cierta industria que aprovecha el desconocimiento tecnológico de los usuarios para aprovechar vulnerabilidades de sistemas embebidos en desarrollo, creando malware para monitorear, rastrear y espiar a los usuarios con fines personales, espionaje con fines industriales, delictivos o gubernamentales.


    El espionaje puede consistir desde escuchar las conversaciones de voz de un usuario, leer sus mensajes sms, capturar todo lo que escribe en el teléfono, saber su ubicación, obtener sus password de acceso a correo, activar el micrófono o la cámara y grabar lo que sucede en su entorno, usarlo como un medio de acceso a la red de su empresa y obtener secretos industriales, etc.


    Estas herramientas existen desde hace más de una década, desde el florecimiento de los primeros teléfonos móviles, cuando las redes de telefonía no usaban ningún algoritmo de codificación y cualquiera con un escucha en la misma frecuencia podía capturar la conversación, el espionaje se ha dado en todos los momentos de la historia, pero la tecnología lo ha hecho mas fácil de realizar, desde la colocación de policías escuchando físicamente conversaciones en las centrales telefónicas hasta servidores espía ubicados en los principales datacenters de los proveedores de internet.


    la película Enemigo Público con Will Smith surgida a finales de los 90s, mostraba este espionaje que se venía dando desde años atrás y con el atentado de las torres gemelas, se firmó la ley patriota, ley que obligaba a todas las empresas nortemericanas de tecnología brindar una puerta trasera a la CIA para acceso a sus sistemas.


    En la actualidad gracias a la popularidad de los dispositivos móviles, el desarrollo de software espía ya no es exclusivo del gobierno o de hackers elite obteniendo información desde un cuarto obscuro mientras comen pizza y toman pepsi. Comercialmente existen diversas aplicaciones que pueden descargarse e infectar al equipo deseado para espiarlo. Estas herramientas en principio puedes usarlas para beneficio personal, instalarlo en tu propio dispositivo y en caso de robo o pérdida, poder acceder al teléfono remotamente y borrar toda la información o grabar el rostro de quien te robó el teléfono. Pero también puede usarse para fines perversos, una empresa puede usarlo para espiar a sus empleados, una esposa o esposo celoso para rastrear donde anda su cónyuge, o el gobierno para monitorear a un periodista, etc.


    Algunas de estas herramientas que se pueden obtener desde internet:

  • mSpy: Uno de las aplicaciones de espionaje más completas.
  • Maxxspy: Monitorea todas las actividades del teléfono infectado.
  • Cell Tracker: Envía automáticamente la información de donde un teléfono se ubica y lo rastrea a través de Google Maps.
  • Mobile Hidden Camera: Captura fotos sin generar sospechas y las envía a una dirección de correo electrónico.
  • Punch Security: Un software de espionaje muy completo desarrollado por hackers mexicanos.
  • Sneaky Cam: Graba videos sin que nadie sepa que lo estás haciendo.
  • MobiStealth: Software que permite vigilar las actividades de los hijos al usar un móvil, saber su ubicación, tomar fotos de sus actividades, revisar sus mensajes, etc.
  • FlexiSpy: Todo lo que puedas espiar en un teléfono móvil: Chats, Conversaciones de voz, imágenes, videos, páginas web, etc.
  • Spyera: Aplicación que conecta a un servidor que elijas y envía información obtenida desde la cámara del usuario, fotos, conversaciones de voz, activación de micrófono, etc.
  • TopSpy: Un software de espionaje con funciones básicas de monitoreo como lectura de SMS, rastreo GPS, etc.


    Por ello es altamente recomendable:/b>

  • Nunca dejar tu teléfono a alguien desconocido, pues no sabes que software instalará en tu dispositivo.
  • No descargues apps que desconozcas su función.
  • Evita cualquier app no firmada o gratuita.
  • Cuidado con las memorias usb pueden estar infectadas de malware.
  • Nunca te fíes de redes inalámbricas abiertas, no sabes si hay un sniffer o un dns spoffing del otro lado.
  • Nunca teclees tu password en un cybercafé, y si lo vas hacer, usa un teclado virtual en pantalla, pero no uses el teclado físico.
  • Por más que te invada el morbo, evita darle click a vídeos o fotos morbosas en facebook que te conduzcan a sitios desconocidos.
  • Nunca, nunca prestes tu teléfono, mucho menos lo conectes por usb a una computadora que no conozcas, los teléfonos pueden ser infectados en automático cuándo están en modo depuración y se conectan por usb a una computadora.
  • Cuidado con los teléfonos chinos, como el M4, hay pruebas que estos teléfonos de fábrica vienen precargados con spyware.
  • Consulta a un especialista para que analice tu dispositivo y ver si no está infectado.

  • Actualizando FreePBX y bug en la grabación de llamadas.

    En la mañana me llamó un cliente a quien hace 4 años le instalamos un servidor Asterisk, me pidió que le diéramos mantenimiento a su conmutador pues presentaba algunas fallas, a este servidor desde hace 3 años no le dábamos mantenimiento por cuestiones del cliente al no pagar una póliza de soporte. Después de hacer una revisión general, ajustar las configuraciones y hacer un upgrade de FreePBX, solo faltaba un detalle, el servidor no grababa las llamadas.


    Después de revisar en la consola el seguimiento de una llamada desde una extensión con grabación de llamadas habilitada, se observaba que se saltaba la grabación. Al revisar la macro de macro-record-enable el script de freepbx en /etc/asterisk/extensions_addittional.con no estaba completo, el paso 1 era salir de la macro, por lo que había un bug en la generación del código de freepbx. Buscando información en foros vi que ya no hay soporte para la versión 2.9 por lo que busqué en que parte del código de freepbx generaba esta macro y encontré que estaba en el archivo /DIRECTORIOWEB/admin/modules/core/functions.inc.php y el código de esa parte es el de abajo.


    El no generar el script para grabación de llamadas se debe a una variable global, la cuál no encontré en /etc/amportal.conf ni en las configuraciones avanzadas de asterisk, por lo que me fue más fácil alterar la condición de functions.inc.php para que el script de freepbx generara el código, con esto al hacer las pruebas quedó solucionado.


    Este es el código original, solo hay que modificar la condición de disable_recording


              $context = 'macro-record-enable';
                            $exten = 's';
                            if ($disable_recording) {
                                    $ext->add($context, $exten, , new ext_macroexit());
                            } else {
                                    $ext->add($context, $exten,
    , new ext_gotoif('$["${BLINDTRANSFER}" = ""]', 'check'));
                                    $ext->add($context, $exten, , new ext_resetcdr('w'));
                                    if ($ast_ge_14) {
                                            $ext->add($context, $exten,
    , new ext_stopmixmonitor());
                                    } else {
                                            $ext->add($context, $exten, '', new ext_stopmonitor());
                                    }
     
  • OpenVPN vs IPSec

    IPSec desde los tiempos de Microsoft ha sido el estándar para VPNs, un protocolo con todo lo que implica la filosofía de microsoft, con amplia distribución entre los fabricantes y el protocolo de facto en los routers.


    A pesar que IPSec es el estándar de VPNs, adolece de sin fin de requerimientos que su uso a veces es más un quebradero de cabeza que una solución flexible. En mi experiencia la implementación de IPSec en empresas ha sido un claroscuro entre funciones básicas y requerimientos no soportados, sumando que a pesar de ser un estándar a veces la compatibilidad e interconexión depende de la marca, modelos y versiones de los equipos a conectar. Un protocolo que sus dependencias para funcionar requieren una infraestructura más allá de la que una PyME inicialmente pudiera tener.


    Lo anterior sumado ante el desconocimiento y miedo para uso de herramientas Open Source, OpenVPN una alternaiva flexible, potente y muy segura para implementación de VPNs ha sido desestimada por la industria e ingenieros, siendo solo implementada por los expertos del software libre quienes han llevado esta tecnología a empresas teniéndolas en producción con alto rendimiento y alta disponibilidad.


    Diferencias entre OpenVPN vs IPsec
    IPSec tiene soporte en los principales sistemas operativos como son Windows, Linux, MacOSC, iOS y Android.
    OpenVPNIPsec
    Generalidades
    Una avanzada y flexible solución de OpenVPN de código abierto desarrollado por OpenVPN technologies, la cuál es el estándar en entornos Linux y redes basadas en código abierto. Usa el protocolo se seguridad y encriptaicón probado SSL/TSL. Un protocolo formalmente estandarizado en el IETF con el RFC 3193
    OpenVPN usa la librería OpenSSLpara proveer encriptación. OpenSSL soporta múltiples algoritmos de encriptación como son 3DES, AES, RC5, Blowfish. El RFC 4835 especifica que 3DES y AES en IPsec son los algoritmos de encriptación
    OpenVPN no tiene mayores vulnerabilidades y será completamente seguro siempre y cuando se use con cualquiera de los algoritmos de seguridad soportados. IPSec no tiene mayores vulnerabilidades y es considerado extremadamente seguro cuando es usado con el algoritmo de encriptación 3DES o AES.
    OpenVPN tiene mejor rendimiento que IPSec al usarse bajo el protocolo UDP. IPSec tiene ligera sobrecarga debido a la doble encapsulación.
    OpenVPN es fácil de implementar y puede correr sobre cualquier puerto UDP o TCP. Para firewall restrictivos puede ser configurado para usar TCP sobre el puerto 443. IPSec usa el puerto UDP 500 para el intercambio inicial de llaves, el puerto 50 para los datos encriptados, el puerto 1701 para la sesión inicial L2TP y el puerto 4500 para NAT Transversal. Clientes IPSec son más fáciles bloquear que clientes OpenVPN.
    OpenVPN no es incluido en ningún sistema operativo, pero OpenVPN tiene soporte para cualquier sistema operativo y su instalación es fácil que puede hacerse en 5 minutos. Todas las versiones de Windowx desde 200/XP y Mac OS X 10.3+ y muchos sistemas operativos para móviles tienen sporte nativo para L2TP/IPSec
    OpenVPN es muy estable y rápido sobre redes inalámbrica, celular GSM y otras redes no eficientes donde la pérdida de paquetes y congestión son comunes. OpenVPN sporta TCP para redes ineficientes pero este modo sacrifica algo de velocidad debido a la ineficiencia del encapsulamiento de TCP sobre TCP. L2TP/IPSec es más complejo y difícil de configurar que OpenVPN más cuando se trata de implementarlo detrás de redes NAT.
    OpenVPN tiene compatibilidad con todos los sistemas operativos para servidores, escritorio y móviles, tales como Windows, Linux, *Unix, Mac OSX, iOS, Android, Windows Mobile, *BSD, DDWRT, etc.
    OpenVPN es la mejor opción debido a su flexibilidad para integrarse en cualquier tipo de redes. Es extremadamente seguro, rápido y altamente eficiente. IPSec es buena opción, pero en relación con OpenVPN queda ligeramente corto comparando las múltiples características y flexibilidad de OpenVPN a las limitaciones de IPSec por ser un estándar.
    OpenVPN oficialmente no viene integrado en router de las marcas más comerciales, pero en la actualidad se puede instalar un firmware DDWRT en diversas marcas y modelos de routers, donde OpenVPN ya viene integrado permitiendo aprovechar la tecnología de OpenVPN y el hardware de router. IPSec al ser estándar, puede enontrarse en los routers de marcas comerciales.
    OpenVPN permite conexión de diversos tipos de redes Lan to LAN, Roadwarrior y punto a punto, integrando estas redes a los firewalls ya que la conexión se convierte en una interfaz de red que puede ser administrada como cualquier interfaz de red física. IPSec permite conexiones VPN lan to lan, punto a punto y road warrior, teniendo ciertas limitaciones en ruteo de redes avanzadas.
    OpenVPN al estar basado en código abierto su nivel de depuración es muy alto, permitiendo detectar los puntos de fallo rápida y fácilmente en una implementación. IPSec al implementarse sobre routers, la depuración de errores depende el tipo de router, siendo solo disponible en routers de gama alta, mientras en los de gama baja el debug es muy básico.


    En conclusión, OpenVPN siempre será la mejor opción de VPNs para cualquier empresa que IPSec por flexibilidad, rapidez, funcionalidad, control, seguridad y adaptación a cualquier topología de red.
  • Sciprt para registro automáticos de agentes dinámicos en Queues de Asterisk.

    La interfaz gráfica de FreePBX permite configurar rápidamente colas(queues) con opción de agentes dinámicos o estáticos, aunque cuando son agentes dinámicos estos tienen que registrarse en la cola marcando el número de la cola seguido de asterisco, por ejemplo si la extensión de la cola configurada fuera 601, para registrarse marcarían 601* y un prompt les pediría el número de agente a registrar, para desconectarse marcarían 601** y solicitaría el agente a desconectar. Esto aumenta la probabilidad de fallos y errores en la conexión, por lo que es recomendable hacer un script que automáticamente registre al usuario.


    En este caso este script en el dialplan de Asterisk detecta el CID de quien intenta registrarse marcando 01 y lo registra como agente, para desconectar de la cola solo marca 02 y lo desconecta de la cola indicada en el script del dialplan de asterisk.


    nano /etc/asterisk/extensions_custom.conf
     
    <br>
    [fom-internal-custom]
    ;incluimos los contextos dentro del contexto from-internal
    include=>agente-offline
    include=>agente-online

    <img src="plugins/Emoticons/images/face-smile-big.png" border="0" alt="face-smile-big.png " width="16" height="16" />ialplan que conecta un agente  a la cola 601, detecta el CID de quien marca la extensión 01 y lo registra en la cola 601
    [agente-online]
    [agente-online]
    exten => 01,1,Wait(1)
    exten => 01,n,Macro(user-callerid,SKIPTTL)
    exten => 01, n(a3),Set(CALLBACKNUM=${CALLERID(number)})
    exten => 01, n,Set(COLA1=601)
    exten => 01,n,Set(THISDEVICE=${DB(DEVICE/${CALLBACKNUM}/dial)})
    exten => 01,n,ExecIf($[${LEN(${THISDEVICE})}!=0 & ${DB_EXISTS(QPENALTY/${COLA1}/agents/${CALLBACKNUM})}=1]?AddQueueMember(${COLA1},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${COLA1}/agents/${CALLBACKNUM})},,${DB(AMPUSER/${CALLBACKNUM}/cidname)},${THISDEVICE}))
    exten => 01,n,ExecIf($[${LEN(${THISDEVICE})}=0 & ${DB_EXISTS(QPENALTY/${COLA1}/agents/${CALLBACKNUM})}=1]?AddQueueMember(${COLA1},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${COLA1}/agents/${CALLBACKNUM})}))
    exten => 01,n,UserEvent(Agentlogin,Agent: ${CALLBACKNUM})
    exten => 01,n,Wait(1)
    exten => 01,n,Playback(agent-loginok&with&extension)
    exten => 01,n,SayDigits(${CALLBACKNUM})
    exten => 01,n,Hangup
    exten => 01,n,MacroExit()
    exten => 01,n(invalid),Playback(pbx-invalid)
    exten => 01,n,Hangup  
    ; dialplan que desconecta un agente, detecta el CID de quien marca la extensión 02 y lo desconecta de la cola 601
    [agente-offline]
    exten => 02, 1,Wait(1)
    exten => 02, n,Macro(user-callerid,SKIPTTL)
    exten => 02, n,Set(COLA1=601)
    exten => 02, n(a3),Set(CALLBACKNUM=${CALLERID(number)})
    exten => 02, n(a5),Set(CALLBACKNUM=${IF($[${LEN(${AMPUSER})}=0]?${CALLERID(number)}:${AMPUSER})})
    exten => 02, n(a7),RemoveQueueMember(${COLA1},Local/${CALLBACKNUM}@from-queue/n)
    exten => 02, n,RemoveQueueMember(${COLA1},Local/${CALLBACKNUM}@from-internal/n)
    exten => 02, n,UserEvent(RefreshQueue)
    exten => 02, n,Wait(1)
    exten => 02, n,Playback(agent-loggedoff)
    exten => 02, n,Hangup
     


    #Recargamos el dialplan para que el script pueda ser llamado desde cualquier extensión
    asterisk -rx "dialplan reload"
     


    Con esto evitaremos el engorroso registro y desconexión método default de FreePBX automatizando el registro.


    También se puede crear un AMI que a cierta hora automáticamente conecte y desconecte agentes de la cola.


    Con esto le facilitamos el registro de agentes dinámicos en los call centers de los clientes a quienes les instalamos y configuramos sus plataformas de comunicaciones basadas en Asterisk.

  • Prueba de sobrecarga de servidores web con CURL

    Hace unos días me pidieron que ayudara hacer un script para probar el rendimiento de un servidor web, de inicio pensé en varias posibilidades, pero al final decidí hacer un script en curl que mandara peticiones de registro y de descarga de contenido para medir el rendimiento del servidor al generar n peticiones simultáneas.


    Lo primero que hice fue hacer un script en bash como el siguiente:
    #!/bin/bash
    USUARIOS=$1
    PROCESOS=$2
    SLEEP=$3
    echo "" > c$USUARIOS-$PROCESOS.log
    for i in `seq 1 $USUARIOS`
    do
            /usr/bin/php  ./curl.php $i $PROCESOS $SLEEP >> c$USUARIOS-$PROCESOS.log &
    done
    #ps aux | grep curl.php
    tcpdump -i $4 port 443 -vv -w e$USUARIOS-$PROCESOS.log
     


    Explicación del script:

    Este script define del número de sesiones a iniciar en USUARIOS y en PROCESOS el número de contenidos a descargar por sesión iniciada en el servidor web.

    SLEEP es una variable que nos da una pausa para ejecutar el script de curl y empezar la sesión

    Se genera un log con la información obtenida nombrando al archivo con el número de usuarios y procesos generados.

    Se hace un ciclo para iniciar la sesión de usuarios enviando al script el número de descarga de contenidos a realizar por sesión, enviando la información al archivo del log.

    Al terminar el ciclo hacemos un tcpdump al puerto 443 que estamos monitoreando en el script de curl, en este caso este puerto puede cambiar al 80 u otro en dado caso.

    El script de bash se ejecutaría así:

    sh curl.sh 100 5 5 eth0
     


    El script de curl en php que manda a llamar el script en bash, ejecuta curl, inicia la sesión en el servidor y descarga el contenido. Este script sería el siguiente:

    <?php
    sleep($argv[3]);
    $log =  "\nSTART LOGIN: ".udate("Y-m-d H:i:s.u").", USER: ".$argv[1]."\n";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://www.MISERVIDOR.COM/login.php');
    curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64)');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    $_login  = array("username"=>"USUARIO", "password"=>"PASSWORD");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $_login);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIESESSION, true);
    curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/stress.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/stress.txt');
    $HTML = curl_exec($ch);
    if (curl_error($ch)) {
                $log .=  " ERROR LOGIN: ".curl_error($ch)." , USER: ".$argv[1]."\n" ;
    }
    $log .=  "END LOGIN ".udate("Y-m-d H:i:s.u").udate("Y-m-d H:i:s.u").", USER: ".$argv[1]."\n\n";
    //echo $HTML;
    foreach(range(1,$argv[2]) as $proceso){
            $log  .="START REQUEST INFO: ".udate("Y-m-d H:i:s.u").", USER: ".$argv[1].", PROCESO: $proceso\n";
            curl_setopt($ch, CURLOPT_URL, 'https://www.MISERVIDOR.com/contenido.php);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_POST, false);
            curl_setopt($ch, CURLOPT_POSTFIELDS, "");
            $HTML = curl_exec($ch);
            if (curl_error($ch)) {
                $log .= " ERROR REQUEST: ".curl_error($ch).udate("Y-m-d H:i:s.u").", USER: ".$argv[1].", PROCESO: $argv[2] \n";
            }
            $log .= "FINISH REQUEST INFO: ".udate("Y-m-d H:i:s.u").", USER: ".$argv[1].", PROCESO: $proceso \n";
           
            //echo $HTML;
    }
            echo $log;
    function udate($format = '
    u', $utimestamp = null) {
            if (is_null($utimestamp))
                $utimestamp = microtime(true);
            $timestamp = floor($utimestamp);
            $milliseconds = round(($utimestamp - $timestamp) * 1000000);
            return date(preg_replace('
    `(?<!\\\\)u`', $milliseconds, $format), $timestamp);
        }
    ?>

     


    Explicación del script de curl


    Este script recibe como parámetros el número de usuario en sesión, número de procesos y tiempo de ejecución.


    Configura los parámetros de curl para conectar a un servidor HTTPS indicando la url de inicio de sesión y enviando los parámetros de usuario y password para validar el registro e iniciar la sesión vía POST. Cambiar los valores de servidor y datos de registro por los valores de su servidor web.


    Antes de hacer la sesión se captura la fecha y hora inicial contando los milisegundos, al finalizar el proceso de inicio de sesión se vuelve a capturar la fecha y hora con milisegundos agregando la info a la variable log.


    Se valida que no hubiera un error en el proceso de inicio de sesión


    Se mantiene la sesión para esto en la configuración de los parámetros de curl indicamos el archivo donde guardará la cookie.


    Con la sesión de usuario abierta se inicia un ciclo con el número de procesos indicados para capturar el tiempo de inicio con milisegundos y se ejecuta la descarga del contenido, al final de la descarga de contenido se obtiene el tiempo con milisegundos y continua el ciclo hasta finalizar el número de procesos.


    Al finalizar toda la información recabada se envía al archivo de log indicado en el script de bash.


    Con estos dos scripts se obtiene todo un log con la información generada al ejecutar x cantidad de usuarios con n procesos. Al observar la información puede encontrarse que los tiempos de respuesta de un servidor disminuyen conforme va aumentado el número de peticiones de registros de usuario y descarga de contenidos.


    Al script solo le falta la parte para ordenar la información para obtener estadísticas de tiempo de registro de usuarios, promedio de descarga de contenidos, porcentajes de errores, etc.
  • Eliminando de Linux Desktop un espía amigo

    Zeitgeist es un demonio incluido en el escritorio de Gnome que monitorea toda tu actividad, gestiona eventos como que páginas visitas, que música escuchas, tus conversaciones, que comandos ejecutas, que archivos abres, que fotos ves, a donde te conectas, donde te localizas, etc.


    Esto lo hace con el fin de interactuar con otras aplicaciones a través de un API para interactuar de forma inteligente.


    Un tema de seguridad y privacidad es que si al instalar una aplicación de terceros, esta aplicación tuviera acceso a Zeitgeist, prácticamente toda tu información estaría siendo monitoreada por un agente externo.


    Aunado al tema de seguridad, al ser una aplicación en constante ejecución que monitorea toda tu actividad, esta aplicación llega a consumir muchos recursos de RAM y CPU, por lo que es un punto más para no tenerlo en ejecución.


    En ubuntu Linux su proceso de desinstalación es sencillo ya que otros paquetes no depende de el, por lo que para removerlo bastaría solo un:
    sudo dpkg --purge zeitgeist*
     
    Después de eso solo matar los demonios que estuvieran corriendo en consola y listo, tenemos un espía amigo anulado si es que fuéramos muy quisquillosos en el tema de privacidad.
  • Anterior página 1 2 3 4 ... 7 Siguiente página
    66 entradas

    Emblemas

    Energizado por Jaws Project
    Soporta RSS2
    Energizado por Software Libre
    Energizado por Mozila Firefox
    Energizado por Ubuntu Linux
    Energizado por PHP
    Energizado por Apache Web Server
    Energizado por MySQL
    Energizado por SQLite

    Comentarios Recientes