lunes, 10 de julio de 2017

Davmail Proxy para Gmail




El desafio es conectar una cuenta del correo corporativo Exchange (solo HTTPS) con Gmail.

El problema es que el correo corporativo solo es accesible por HTTPS desde Internet, los puertos POP, IMAP y SMTP se encuentran cerrados por políticas de la empresa.
Otro problema con el que me he encontrado es que Gmail chequea que los certificados de SMTPS y POP3S y si el servidor Exchange no tiene certificados validos al momento de validar la conexión devolvera error.

La solución al problema es DavMail que es en un Gateway de POP y SMTP para poder usar desde Gmail.

Como funciona? 
DavMail depende de WebDav (Exchange 2003/2007) o EWS (Exchange 2007/2010) para tener acceso al Servidor Exchange via HTTPS.
Por otro lado DavMail es capas de brindar los servicios POP/IMAP/SMTP/Caldav/Carddav/LDAP para que se pueda conectar un cliente de correo, como Thunderbird, Evolution o Gmail.


Aclarado que es DvMail y como funciona, es importante destacar que esta guía va a servir para dar seguridad a los servicios de DavMail (POP3S y SMTPS) pueda exponer ya que trabajaremos con certificados y reglas de firewall.

He trabajado con DavMail por años como Getway local instalado en mi Ubuntu para ofrecer soporte a Thunderbird para cuando estoy fuera de la empresa o incluso dentro, y este gran desarrollo en Java siempre se comporto de maravilla y no me deja de sorprender ahora en este tipo implementación funcionando en modo server!.

Como mencione DavMail esta escrito en Java con lo cual es compatible en cualquier OS, en esta guía se explicara como instalarlo en Linux, pero el procedimiento puede aplicarse a cualquier OS.



Veamos un ejemplo de la topologia a implementar:




Pre requisitos:
1- Disponer de un Dominio de internet.
2- Un Linux in-house o VPS.
3- Sun JRE 5, 6 o 7 o OpenJDK 6 o 7.
4- Un Firewall local o externo.

Pasos:
1- Crear un Registro A de DNS para nuestro dominio, por ejemplo: mail.tudominio.com.ar
2- Crear un Certificado SSL para el dominio a usar.
3- Instalar  y Configurar DavMail.
4- Configurar Gmail.


1- Registro de DNS

Crear un registro de DNS, por ejemplo: mail.tudominio.com.ar
Si es la primera vez administras DNS puedes usar por ejemplo, afraid FreeDNS o CloudFlare.

2- Certificado SSL

Con su Certificate Authority preferido o con alguno gratuito por ejemplo StartSSL o Let's Encrypt hay que crear un certificado para el dominio.

Lo primero es crear el .csr, desde nuestro Linux ejecutar:

# openssl req -newkey rsa:2048 -keyout mail.tudominio.com.ar.key -out mail.tudominio.com.ar.csr

Con el .csr ya podremos generar el certificado.
Una vez generado el certificado, bajamos el certificado, el intermedio y el CA.
Creamos el Bundle en nuestro Linux para luego crear el .p12 para el DavMail.


# cat mail.tudominio.com.ar.pem > bundle.crt
# cat sca.server1.crt >> bundle.crt
# cat ca.crt >> bundle.crt

Crear p12

# openssl pkcs12 -export -in bundle.crt -inkey mail.tudominio.com.ar.key -out davmail.p12


3- Instalar y Configurar Davmail

El unico pre requisito para que Davmail funcione es tener instalado Java en el OS, las versiones de Sun JRE 5, 6 o 7 o OpenJDK 6 o 7 son las que se pueden instalar.

Vamos al Sitio Oficial: http://davmail.sourceforge.net/download.html
Elegimos la descarga que corresponda para nuestro sistema.

Luego de instalar

Configuramos con nuestro editor favorito el archivo davmail.properties

Cambiamos lo siguiente:

davmail.ssl.keystoreFile=davmail.p12
davmail.ssl.keystoreType=PKCS12
davmail.popPort=995
davmail.smtpPort=465
davmail.url=https\://mail.tuCompany.com.ar/exchange/


Las primeras dos lineas establecen el certificado que creamos anteriormente.
La linea tercera y cuarta son los puertos que usaremos para conectar la cuenta de Gmail, adicionalmente puedes cambiar el puerto IMAP si lo deseas abrir.
Y la ultima linea apunta al Web Server del Exchange que queremos proxiar.

Lo que quedaria es ejecutar davmail:

# davmail -notray

Algunos links para tener a mano de Davmail:

http://davmail.sourceforge.net/serversetup.html
http://davmail.sourceforge.net/linuxsetup.html

No se olvide de configurar su Firewall para solo permitir los puertos configurados y porque no solo las Source IP de Gamail!


4- Configuracion de Gmail

Es tan sencillo como configurar como se en las imagenes siguientes







Salu2!
Hernan

viernes, 7 de julio de 2017

Configurar F5 para sacar un A+ en SSL Labs

En tres sencillos pasos se puede configurar un F5 para sacar un A+ en SSL Labs.

Primero hay que configurar el certificado con los siguientes parametros:

En Local Traffic  ››  Profiles : SSL : Client ›› tuCeri

ltm profile client-ssl /Common/tuCerti {
    app-service none
    cache-size 65536
    cert /Common/tuCerti.crt
    cert-key-chain {
        tuCerti_tuCerti {
            cert /Common/tuCerti.crt
            chain /Common/tuCerti.crt
            key /Common/tuCerti.key
        }
    }
    chain /Common/tuCerti.crt
    ciphers !LOW:!SSLv3:!MD5:!RC4-SHA:!EXPORT:!DHE:ECDHE+AES-GCM:DHE+AES-GCM:ECDHE+AES:DHE+AES:AES-GCM+RSA:RSA+AES:@SPEED
    defaults-from /Common/clientssl
    inherit-certkeychain false
    key /Common/tuCerti.key
    mode enabled
    options { dont-insert-empty-fragments no-ssl single-dh-use no-tlsv1 }
    passphrase none
    renegotiation disabled
}

En segundo lugar hay que crear una politica para agregar el security enhancement.

En Local Traffic  ››  Policies : Policy List  ›› Strict-Transport-Security


ltm policy /Common/Strict-Transport-Security {
    last-modified 2017-07-07:12:11:26
    requires { http }
    rules {
        default {
            actions {
                0 {
                    http-header
                    response
                    insert
                    name Strict-Transport-Security
                    value max-age=15552000
                }
            }
        }
    }
    strategy /Common/first-match
}


Y finalmente agregar la politica dentro del Resource del VS en cuestion.

Salu2!

viernes, 24 de marzo de 2017

VNC en DISPLAY 0 para Ubuntu 16.04

Si lo que buscamos es que la sesión de VNC inicie para ver lo mismo que tenemos en el Monitor local, lo que tenemos que hacer es que el servicio de VNC se conecte al Display 0 que es la primer sesión de Monitor que inicia el Sistema Operativo.

Vamos a instalar x11vnc:
$ sudo apt-get install x11vnc

Creamos una Password para el servicio:
$ sudo x11vnc -storepasswd miPassword /etc/x11vnc.pass

Creamos el archivo x11vnc.service y agregamos las siguientes lineas:
$ sudo vim /etc/systemd/system/x11vnc.service

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target


Para que el servicio se inicie automaticamente al iniciar el OS:
$ sudo systemctl enable x11vnc

Iniciar el servicio:
$ sudo systemctl start x11vnc


Para hacer las pruebas nos conectamos a la IP del host que configuramos con el puerto 5900.

Eso es todo... Salu2!

miércoles, 15 de marzo de 2017

Cisco IP Communicator en Linux Ubuntu

La instalación del software va perfecto pero a la hora de escuchar los llamados el audio se siente horrible como si estuviera saturando.




Cisco IP Phone



La solución es modificar los siguientes parámetros de audio:

vim /etc/pulse/daemon.conf
default-sample-rate = 48000

vim /etc/pulse/default.pa
load-module module-udev-detect tsched=0

Reiniciar el pulseaudio:
pulseaudio -k
pulseaudio -D

Salu2

domingo, 27 de noviembre de 2016

Bloques de IP de Google Inc. para trafico de correo

Aquí los rangos de IP de Google para el Trafico de correo electrónico.

El métodos de consulta es sencillo, con una simple consulta a algunos registros TXT de DNS puedes obtener los bloques IP.


Sitio de referencia de google: https://support.google.com/a/answer/60764?hl=en




Saludos!

jueves, 25 de agosto de 2016

Solución a Yowsup "status: fail \ reason: old_version - Authentication Error: not-authorized"

Hoy me percate de que Yowsup dejo de funcionar.

Ya que la razón del error que salia en pantalla marcaba "old_version" lo primero que supuse es que tenia que reinstalar yowsup, pero la solución es mucho mas sencilla.

En internet encontré el siguiente link que da a la solución: https://github.com/tgalal/yowsup/pull/1725


Lo que propone es cambiar una variable en uno de los archivos .py, y es la variable que hace referencia a la versión de whatsapp.

Ejemplos de los errores en pantalla:

[root@sysmon01 ~]# yowsup-cli registration --requestcode voice --phone 549112395XXXX --cc 54
yowsup-cli v2.0.15
yowsup v2.5.0
Copyright (c) 2012-2016 Tarek Galal
http://www.openwhatsapp.org
This software is provided free of charge. Copying and redistribution is encouraged.
If you appreciate this software and you would like to support future development please consider donating:
http://openwhatsapp.org/yowsup/donate

INFO:yowsup.common.http.warequest:{"status":"fail","reason":"old_version"}
INFO:yowsup.common.http.warequest:{"status":"fail","reason":"old_version"}

status: fail
reason: old_version


[root@sysmon01 ~]# yowsup-cli demos -c /root/yowsup-cli.conf -s 5491140XXXXX 'Prueba'
yowsup-cli  v2.0.15
yowsup      v2.5.0
Copyright (c) 2012-2016 Tarek Galal
http://www.openwhatsapp.org
This software is provided free of charge. Copying and redistribution is encouraged.
If you appreciate this software and you would like to support future development please consider donating:
http://openwhatsapp.org/yowsup/donate

/usr/lib/python2.6/site-packages/yowsup2-2.5.0-py2.6.egg/yowsup/demos/sendclient/stack.py:33: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
  print("Authentication Error: %s" % e.message)
Authentication Error: not-authorized

La solución:
  1. Buscar donde tenemos el archivo: env_s40.py

    find / -name "env_s40.p*"

    /usr/lib/python2.6/site-packages/yowsup2-2.5.0-py2.6.egg/yowsup/env/env_s40.pyc
    /usr/lib/python2.6/site-packages/yowsup2-2.5.0-py2.6.egg/yowsup/env/env_s40.py
  2. Eliminar el archivo compilado: env_s40.pyc

    rm -f /usr/lib/python2.6/site-packages/yowsup2-2.5.0-py2.6.egg/yowsup/env/env_s40.pyc
  3. Editar el archivo: env_s40.py

    vim /usr/lib/python2.6/site-packages/yowsup2-2.5.0-py2.6.egg/yowsup/env/env_s40.py

    Cambiar el contenido de la variable de la linea 4 por: _VERSION = "2.16.9"

    Guardar y salir: wr
  4. Eso es todo, solo quedaría verificar, no hay que reinstalar ni volver a registrar!


Para los curiosos, encontré un excelente visor de logs hecho por el creador del Logstalgia que se puede adaptar a nuestro querido yowsup:




Saludos!
Hernán


Actualización:

En el siguiente link se pueden ver las versiones previas de whatsapp: https://whatsapp-messenger.en.uptodown.com/android/old


domingo, 1 de noviembre de 2015

Iniciar Windows Instalado en el Disco Rigido con VirtualBox desde Linux

Me toco cambiar la notebook y la nueva trajo instalado el famoso Windows 10, fiel a mis costumbres cargué un Ubuntu en un pendrive y me propuse a instalar un OS de verdad, pero justo en el momento de tener que eliminar las particiones se me ocurrió dejar instalado la aplicacion de MS (perdon, el Sistema Operativo de MS) para ver cuanta verdad hay detrás de todos los comentarios y elogios a cerca del fabuloso W10. Es justo ahí donde tomé un giro y pensé en dejar instalado el Win10 y proceder a achicar la partición donde se encuentra instalado Windows para darle lugar al Linux en el HDD y luego elegir que OS usar en el momento del arranque.
No del todo conforme con la elección que tomé, me pregunte si existía alguna manera de levantar el Win10 ya instalado pero con el VirtualBox, con un poco de googleo, para mi sorpresa me di cuenta que es posible y sin mayores dificultades logré mi cometido y me reenamoré de Linux.


En el manual de VirtualBox, capitulo 9 menciona que es posible crear un archivo .vmdk especial donde se define donde se almacenaran los datos, en él se podría definir acceso directo a todo el HDD o a una partición especifica.


Ver... "9.9.1.2. Access to individual physical hard disk partitions"


Antes de Instalar Linux, con Windows ya Instalado:

  1. Con el SystemRescueCd y con la ayuda del gparted achiqué la partición donde esta instalado el Windows y de paso cree las particiones para la posterior instalación de Ubuntu.

  2. Hacer un backup de la MBR antes de Instalar Linux:
    # dd if=/dev/sda of=Win10.mbr count=1 bs=512


     
    Nota: No olvidar guardar el archivo .mbr .
  3. Instalar Linux en el esquema de partición que creamos en el punto 1.



Con Linux y el VirtualBox ya Instalado:
  1. Abrimos VirtualBox y procedemos a crear la VM.

  2. Procedemos a crear los archivos .vmdk, para eso tenemos que conocer las particiones que tenemos.

    $ sudo fdisk -l /dev/sda
    Nota: En mi caso voy a utilizar las primeras 3 particiones.
  3. Nos dirigimos al directorio donde estemos creando nuestra VM:

    Importante: Copiar el archivo Win10.mbr que tomamos previamente al directorio donde estemos creando la VM. Con el siguiente comando creamos el .vmdk:

    $ VBoxManage internalcommands createrawvmdk -filename Win10.vmdk -rawdisk /dev/sda -partitions 1,2,3 -mbr Win10.mbr
    Con el comando anterior lo que hacemos es crear el archivo de Hard Disk especial y le indicamos que utilice la MBR que creamos anteriormente.


  4. Al continuar con el Asistente vamos a llegar a la opción de agregar Virtual hard Disk, en este punto tenemos que optar por seleccionar el archivo .vmdk especial que creamos anteriormente.


  5. Procedemos a Iniciar la VM.


  6. Al usurio de Linux que opere a la VM es necesario agregarlo al grupo disk para que tenga acceso de tipo rw a las particiones del HDD.


  7. Al iniciar Windows detecta los nuevos dispositivos.


  8. Windows inicio correctamente, solo queda instalar las VM Tools.

Aclaraciones:

Opte por hacer un backup de la MBR y luego usarla para no tener que pasar por el GRUB de Linux, de esta forma también evito iniciar el Ubuntu desde la VM y causar conflictos en el File System de linux de hecho en el manual del VirtualBox aclara: "If your host operating system is also booted from this disk, please take special care to not access the partition from the guest at all. "

Troubleshooting:

De hecho tras iniciar mi Ubuntu el log de mi Sistema de Archivos (XFS) se corrompio cosa que me di cuenta cuando reinicie la maquina y el Ubuntu no lograba iniciar.
Para mi fs XFS la solución fue recrear el log con el comando: #  xfs_repair -L /dev/sda6


Si quisiera obviar la parte de backup y posterior uso de la MBR podría crear el .vmdk con las 6 particiones del HDD (en mi caso) y de esta forma utilizaría el GRUB para iniciar el Windows.

El comando seria: $ VBoxManage internalcommands createrawvmdk -filename Win10.vmdk -rawdisk /dev/sda -partitions 1,2,3,4,5,6




Salu2
Hernán Nacimiento