2. Elastix Smart Assistant
Manual de Administrador
Objetivo: Permitir al administrador la configuración inicial de Smart Assistant en un
servidor Elastix.
Descripción:
Smart Assistant es una aplicación para Smartphone que permite realizar la asignación
de llamadas de manera eficiente a un usuario sobre un servidor de comunicaciones
unificadas Elastix.
La aplicación permite crear varios escenarios donde podemos decidir como re-
direccionar una llamada entrante. Smart Assistant determina de manera inteligente
donde estamos, a través de la tecnología wireless del teléfono, y aplica una condición
predeterminada con éxito.
Funcionamiento de Smart Assistant
Fig. 1 Diagrama de flujo de funcionamiento de Smart Assistant
3. Instalación
Para instalar el Addon “Smart Assistant” debemos ir al módulo de Addons, buscar el
módulo y hacer clic en instalar.
Fig. 2 Market Place de Elastix
Es importante mencionar que paralelamente, el (los) usuario(s) deben instalar Smart
Assistant en sus dispositivos móviles o Smartphone, disponibles en “Google Play”.
Cuando estos dos pasos se hayan completado vamos al menú Smart Assistant en la
interfaz de administración de Elastix.
Fig.3 Seleccionando el menú Smart Assistant
Una vez en el menú hacemos clic en “Añadir Dispositivo”.
Inmediatamente obtendremos un formulario donde ingresamos el “Device ID” de un
usuario y lo asociamos con su extensión.
Los datos necesarios para completar el registro son:
§ Device ID: un identificador de caracteres alfa numéricos que se genera en la
aplicación en el dispositivo móvil del usuario
§ Extensión: La extensión del usuario en Elastix Ej.: 1100
4. § Permitir Crear Objetivos: Habilitar la creación de destinos al usuario, siempre
que este tenga la licencia Premium.
§ Archivo de Licencia: El administrador puede introducir la licencia generada
en el momento que el usuario realizó la compra.
Fig.4 Añadiendo usuarios
El administrador, de acuerdo a las políticas de la empresa, puede habilitar la creación
de Targets para el usuario. Esta funcionalidad está disponible en la versión estándar
de la aplicación en el móvil.
Hacemos clic en “Guardar” y el módulo ingresará al nuevo usuario a la base de datos
del servidor.
Fig.5 Usuarios registrados
Configuración de Sígueme (Follow me)
Esta configuración permite que el servidor redirija las llamadas al usuario utilizando la
aplicación Smart Assistant.
En la interfaz de administración de Elastix vamos a:
PBX à Configuración PBX à Sígueme
Seleccionamos la extensión del usuario y obtendremos un formulario donde configuramos los
siguientes parámetros:
§ Ring Strategy: Seleccionar la opción Ringall
§ Follow-Me list: Escribir una extensión no existente, para que la llamada se
dirija a la opción “Destination if no answer”.
§ Destination if no answer: Seleccionar Custom Destination à SmartAssistant
5. Fig.6 Formulario “Sígueme” / “Follow Me”
Creación de Destinos /Targets en el módulo “Otros Destinos”
Para agregar destinos disponibles en Elastix, nos dirigimos a:
PBX à Configuración PBX à Otros Destinos
El administrador del servidor Elastix puede crear los destinos genéricos y específicos
para los usuarios.
Los destinos genéricos están disponibles para todos los usuarios de Smart Assistant
que tenga la organización. Los destinos específicos están disponibles únicamente para
el usuario para el que se crearon.
Destinos Genéricos
§ Descripción: Este campo debe tener necesariamente el formato “SMART-
NombreDelDestino”, en este ejemplo tenemos SMART-CONFROOM, cuyo
destino es el número de la sala de conferencias de la empresa.
§ Marcar: Este campo contiene el número de teléfono del destino SMART-
CONFROOM, 100 en el ejemplo.
6. Fig.7 Creación de destinos.
Como observamos en la imagen, al crear el destino llamado “CONFRROM” (SMART-
CONFROOM), estará disponible en el menú de destinos de la aplicación de usuario.
Hay que considerar que en la versión gratuita de Smart Assistant todos los usuarios
comparten el destino CONFROOM, es decir que si hay 10 usuarios de Smart
Assistant, los 10 podrán seleccionar este destino entre sus opciones.
Destinos Específicos
La configuración para los destinos específicos es bastante parecida, la diferencia
radica en el prefijo que se usa para añadir el destino, en lugar de “SMART”, colocamos
como prefijo la extensión del usuario, ejemplo: 230-Celular.
Fig.8 Creación de destinos específicos
Esta configuración asegura que solo el usuario cuya extensión es 230 tendrá este
objetivo de destino en la aplicación móvil Smart Assistant.
El administrados puede crear los destinos que sean necesarios, los cuales se
mostrarán en un listado.
7. Fig.9 Listado de destinos disponibles
Para que el usuario pueda seleccionar un destino específico desde la aplicación, debe
adquirir la licencia Standard.
Agregando una licencia a un usuario
Un usuario puede adquirir una licencia Standard o Premium en:
http://store.palosanto.com/index.php/elastix-addons/elastix-smartassistant.html
Cada licencia tiene características adicionales que permiten extender la funcionalidad
de la aplicación.
Una vez que el usuario ha comprado la licencia, el recibirá un archivo con la extensión
“.lic” que tiene el siguiente formato:
§ lic-numero_del_device_id_del_usuario.lic
El usuario debe enviar este archivo al administrador, para que él lo pueda incluir en la
configuración del dispositivo en Elastix.
El administrador debe ir a PBX à SmartAssistant
Luego hacer clic en el dispositivo al que debe ingresar la licencia.
Fig.10 Ingreso de archivo de licencia
8. Una vez en la interfaz de configuración del dispositivo, el administrador puede añadir
el archivo de licencia haciendo clic en “Seleccionar archivo”, navega hasta encontrarlo,
lo sube y luego hace clic en “Guardar”.
De manera automática el usuario tendrá las funcionalidades disponibles en la
aplicación.
Configuración Avanzada Smart Assistant
Cambio de puertos para envío de paquetes entre la aplicación y Smart Assistant
En la pantalla de configuración de la aplicación debemos configurar la dirección IP del
servidor Elastix y el puerto donde la aplicación Smart Assistant enviará los paquetes
de comunicación. El puerto por defecto es 8080.
Fig.11 Envío de paquetes al servidor Elastix
Al momento de instalar el Addon, desde el market place de Elastix, se crea una
aplicación web en apache.
La configuración se encuentra en el archivo:
/etc/httpd/conf.d/smartassistant.conf
[Continua en la siguiente página]
9. Fig.12 Archivo de configuración smartassistant
Nota: Podemos editar el archivo usando VIM.
Si queremos cambiar el puerto debemos hacerlo en las dos instancias en que se
incluye.
En el siguiente ejemplo cambiamos el puerto de escucha al 39000
Fig.13 Cambio de puerto en archivo de configuración smartassistant
Guardamos los cambios y salimos del archivo, luego reiniciamos apache para que los
cambios se hagan efectivos.
service httpd restart
Cifrado de comunicación
Para mejorar la seguridad de la aplicación, toda la comunicación entre la aplicación y
el Servidor Elastix es cifrada. La clave de cifrado es única por servidor y El valor por
defecto es 1234567890123456, tanto en al Addon del lado del servidor como en la
aplicación en el Smartphone. Este valor puede ser editado por el administrador.
10. Fig.14 Comunicación cifrada
Para cambiarlo se debe de ejecutar la siguiente instrucción en el servidor Elastix.
/opt/smartassistant/smart-set-secret.php clave_nueva
Nota: La clave debe de ser alfanumérica de 16 dígitos.
Como el método de cifrado es único para todo el servidor, se debe de ajustar todos los
dispositivos que están conectados al mismo.
En siguiente ejemplo, cambiamos la clave de cifrado a jk49UU23qw23rY5C
Fig.15 Cambio de clave para usuarios de Smart Assistant
Nota: Este cambio se afectará a todas las aplicaciones Smart Assistant asociadas al
servidor, no es posible cambiarlo individualmente para cada usuario.
Port Knocking
SmartAssistant está apto para trabajar con Port-Knocking. A partir de la versión 2.4 de
Elastix, esta funcionalidad ya viene instalada por defecto.
11. Para versiones anteriores a Elastix 2.4, es posible instalar l servicio de Port-Knocking
(knockd) siguiendo el procedimiento del manual “Seguridad en servidores CentOS con
Elastix”. Un detalle de la instalación puede ser revisado en el Anexo A.
El siguiente archivo muestra un ejemplo de la configuración disponible
/opt/smartassistant/knockd_sample.conf
Fig.16 Archivo de configuración de Port Knocking
En este ejemplo estamos habilitando la apertura del puerto 54321, una vez que el
usuario golpee en orden la secuencia de puertos 30000 – 30500 – 31000 (sequence
= 30000, 30500, 31000), también le estamos dando la orden que cierre el
puerto después de 10 minutos (600 segundos).
cmd_timeout = 600
La apertura del puerto se realiza exclusivamente para la IP que golpea, no se realiza
para todas las IPs.
La configuración de Port-Knocking en la aplicación se realiza de la siguiente manera:
1. Habilitar el cuadro de selección “Port Knocking”.
2. Colocar los tres puertos a golpear. El orden es tomado desde la izquierda hacia
la derecha.
Fig.17 Habilitación de Port Knocking
12. Fail2Ban
Podemos encontrar un ejemplo de configuración para fail2ban, en el directorio
/opt/smartassistant/
§ Ejemplo de configuración: fail2ban_filter_smartAssistant.conf
§ Ejemplo de Jail: fail2ban_jail.sample
Soporte / Consultas
Para soporte o consultas adicionales, puedes escribirnos a:
smartassistant@elastix.com
@_SmartAssistant
13. Anexo A
Port-knocking o Golpeo de Puertos: “Llamar antes de entrar”
Instalación y configuración
Tomado de:
Seguridad en Servidores CentOS con Elastix ® + Buenas Prácticas V. 0.8.6
Autor: Rodrigo Martín
Disponible en:
http://www.elastix.org/index.php/es/informacion-del-producto/manuales-libros.html
Instalación
Descargamos el paquete RPM (para plataformas de 32 bits):
# wget http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/knock-
0.5-1.el5.rf.i386.rpm
Instalamos el paquete
# rpm -i knock-0.5-1.el5.rf.i386.rpm
Identificamos el archivo “/etc/knockd.conf”, borramos su contenido y agregamos las
siguientes líneas para cerrar/abrir el puerto ssh y https quedando de la siguiente
manera:
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
tcpflags = syn
command = iptables -A INPUT -s %IP% -p tcp --dport 22 -j
ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
tcpflags = syn
command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j
ACCEPT
[openHttps]
sequence = 7001,8001,9001
seq_timeout = 5
tcpflags = syn
14. command = iptables -I INPUT -s %IP% -p TCP --dport 443 -j
ACCEPT
[closeHtttps]
sequence = 9001,8001,7001
seq_timeout = 5
tcpflags = syn
command = iptables -D INPUT -s %IP% -p TCP --dport 443 -j
ACCEPT
Ahora ingresamos a /etc/rc.d/init.d y creamos el archivo “knock” y en el mismo
copiamos las siguientes líneas para manejar el demonio como un servicio.
#!/bin/bash
#
# chkconfig: 345 92 08
# description: Demonio de Knockd
# http://www.zeroflux.org/projects/knock
# process name: knockd
#
#
# Author: Rodrigo Martin
#
# Source function library.
. /etc/init.d/functions
# Check that the config file exists
#[ -f /etc/knockd.conf] || exit 0
KNOCKD="/usr/sbin/knockd -d"
RETVAL=0
getpid() {
pid=` ps -eo pid,comm | grep knockd | awk '{ print $1 }'`
#echo $pid
}
start() {
echo -n $"Starting knockd: "
getpid
if [ -z "$pid" ]; then
$KNOCKD start > /dev/null
RETVAL=$?
fi
if [ $RETVAL -eq 0 ]; then
touch /var/lock/subsys/knockd
echo_success
else
echo_failure
fi
echo
return $RETVAL
}
stop() {
echo -n $"Stopping knockd: "
getpid
RETVAL=$?
15. if [ -n "$pid" ]; then
#$KNOCKD stop > /dev/null
sleep 1
getpid
if [ "$pid" ]; then
kill "$pid"
rm -f /var/lock/subsys/knockd
echo_success
else
echo_failure
fi
else
echo_failure
fi
echo
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
getpid
if [ -n "$pid" ]; then
echo "knockd (pid $pid) is running..."
#$KNOCKD status
else
RETVAL=1
echo "knockd is stopped"
fi
;;
restart)
stop
sleep 2
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit $RETVAL
Damos permiso de ejecución al mismo:
# chmod 755 /etc/rc.d/init.d/knock
Establecemos que se cargue siempre cuando inicie nuestro servidor
# chkconfig knock on
Iniciamos el servicio
16. # service knock start
Para probar el port-knocking debemos tener cerrados los puertos involucrados por
defecto desde Iptables.
Desde Linux en un equipo remoto hacemos el “golpeo de puertos” para abrir por
ejemplo el puerto https de la siguiente manera:
# telnet ip.del.server.elastix 7001 ; telnet ip.del.server.elastix
8001 ; telnet ip.del.server.elastix 9001
Luego presionamos Ctrl+C 4 veces y nuestro servidor abrirá el puerto indicado para
nuestra ip; podemos cerrarlo ingresando la otra combinación.
Si necesitamos “golpear” desde Windows podemos llevarlo a cabo con la aplicación
“knock-win32-port” (para 32 bits).