ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
Mensajería Instantánea en Elastix
Laboratorio 15.1
Descripción: Instalación de Openfire con una base de datos Mysql.
Objetivo: Instalar Openfire con una base de datos Mysql, crear la base de datos y el usuario de
dicha base de datos.
Tiempo Máximo: 15 minutos.
Instrucciones:
 Ingresamos a la consola de Elastix como usuario root
 Ir al directorio
cd /opt/openfire/resources/database
 Una vez en el directorio ejecutar el siguiente comando para crear la base de datos openfire
mysqladmin create openfire -p
 La clave de root de mysql la ingresamos durante la instalación de Elastix. Para este caso es
“palosanto”
 Revisaremos si la base de datos fue creada correctamente. Ejecute el siguiente comando:
mysql -u root –p Password: palosanto
 Una vez en la base de datos utilice: show databases;
1
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 Crear la estructura de la base de datos con el siguiente comando:
cat openfire_mysql.sql |mysql openfire –p
 Crear el usuario Openfire con todos los privilegios para ejecutar las sentencias SQL en la base de
datos Openfire.
 Ingresar a mysql con el siguiente comando:
mysql -u root –p Password: palosanto
 Una vez en la base de datos digite: use openfire;
 Luego digite:
GRANT ALL PRIVILEGES ON openfire.* TO 'openfire'@'localhost'
IDENTIFIED BY 'openfire';
 En la sentencia anterior creamos el usuario “openfire” con el password “openfire”.
 Ir a la interface de Elastix y hacer click en la pestaña “IM”. Activar OpenFire.
2
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 Configuramos el lenguaje
 Especificamos el dominio del sistema, coloquemos el mismo dominio que nuestra Elastix.
 Seleccionamos la base de datos a utilizar. En este caso seleccionaremos la opción Conexión
Estándard
 Una vez que seleccionamos una base de datos externa, tendremos que indicar la información
correspondiente.
 El tipo de base de datos es “MySQL”.
 La clase de Driver se coloca por defecto y es: com.mysql.jdbc.Driver
3
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 La URL de la base de datos es coloca por defecto el siguiente valor: jdbc:mysql://[host-
name]:3306/[database-name]
 Reemplazamos [host-name] por “localhost” y [database-name] por “openfire” de tal manera que
tengamos:
jdbc:mysql://localhost:3306/openfire
 Con esto indicamos que la base de datos está ubicada en el localhost y se denomina openfire.
 El usuario es: openfire y la contraseña: openfire
Ahora seleccionamos el sistema de usuarios, colocamos “Por defecto”.
 Colocamos el correo y la contraseña de la cuenta admin.
4
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 Una vez que completamos la configuración podemos ingresar a la interfaz de administración.
5
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
Mensajería Instantánea en Elastix
Laboratorio 15.2
Descripción: Integración de Openfire con Elastix.
Objetivo: Integrar Asterisk con Openfire.
Tiempo Máximo: 15 minutos.
Instrucciones:
 Una vez que ingresamos a la interfaz de administración podemos crear cuentas para usuarios e
instalar plugins.
 Instalaremos el plugin “Asterisk-IM”. En la interfaz de Openfire ir al menú Plugins
 Observamos un listado de plugins disponibles, instalaremos: Asterisk-IM Openfire Plugin.
 Hacemos clic en el signo “+” junto a la aplicación.
 Si el plugin “Asterisk-IM”.se instaló correctamente, veremos un menú nuevo llamado “Asterisk-IM”.
Hacemos clic en el menú “Asterisk-IM” para iniciar la configuración
6
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 Seleccionamos la opción “Enabled” y colocamos “default” en el campo “Asterisk Context”. Una vez
hecho esto hacemos clic en save.
 Habilitaremos también la opción “Asterisk Queue Presence” y deshabilitamos la opción: “Drop-down
device selection”
 Inmediatamente observaremos la opción “Add Server”, hacemos clic para configurar la funcionalidad
“Phone Server”.
 Hacemos clic en Add Server y obtendremos los siguientes campos:
• Server Name: elastix_domain (el host del servidor elastix)
• Server Address: 127.0.0.1
• Port: 5038
• Username: admin
• Password: contraseña_de_AMI
7
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 La contraseña que utilizaremos, es la misma que configuramos durante la instalación de Elastix.
Sino queremos estar seguros del host que tiene nuestro Elastix ejecute “hostname” en la consola.
(En este ejemplo es test.elastix.org)
Nota: el hostname es vital para casos que necesiten resolución por DNS
 Observaremos enlistado el servidor si la configuración fue exitosa.
Creación de usuarios y mapeo
 Para crear usuarios, debemos ir al menú “usuarios/grupos”.
 Hacemos clic en “Crear Nuevo Usuario”
8
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 Como podemos observar, los campos requeridos obligatorios son el usuario y la contraseña.
 Crearemos otro usuario con el nombre Galileo Galilei y el user: ggalilei
 Ahora es necesario mapear los usuarios creados con extensiones disponibles en nuestra Elastix.
Tenemos creadas la extensión 200, 201 y 202.
 Mapearemos a jdoe con la extensión 200 y a ggalilei con la extensión 202.
 Para mapear las extensiones debemos ir a: OpenFire → Asterisk-IM → Phone Mappings
 Una vez en Phone Mappings, añadiremos el mapeo para jdoe:
 Configuramos los campos de la siguiente manera:
• Username: jdoe
• Device: SIP/200
• Extension: 200
• Caller ID: 200
• Primary: check
 Hacemos clic en add y se añadirá el mapeo para ese usuario.
 Hacemos lo mismo con ggalilei.
9
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
Mensajería Instantánea en Elastix
Laboratorio 15.3 (Práctica recomendada)
Descripción: Instalar dos clientes de mensajería instantánea, uno de ellos “Spark”, para probar la
funcionalidad de integración de Openfire con Asterisk.
Objetivo: Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de la
mensajería Instantánea con Elastix.
Tiempo Máximo: 15 minutos.
Instrucciones:
 Para probar la funcionalidad de llamada podemos hacer login desde dos clientes de mensajería
instantánea.
 Uno de ellos debe ser Spark, ya que tiene un plugin denominado “SIP Softphone” que nos permitirá
hacer el marcado.
 El otro cliente puede ser cualquiera de los siguientes: Pidgin (windows, mac, ubuntu, source), iChat
(mac). Cualquier cliente que permita crear una cuenta jabber/XMPP.
 Haremos login con ggalilei en spark y con jdoe desde cualquier cliente IM.
 Para ingresar al spark ingresamos los siguientes datos:
 En el caso de otro cliente IM, lo mas común es que pidan la siguiente información:
Usuario: user@elastix_domain (elastix_domain = host de Elastix)
Servidor Jabber / XMPP: IP de Elastix
Password: Contraseña
 Una vez que ingresamos con ambas cuentas, podemos iniciar el chat.
 En la siguiente imagen podemos observar que ggalilei tiene abierta una ventana de mensajes, y tiene
el ícono de un teléfono.
10
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-15
	
  
 En la siguiente imagen podemos observar como se inicia la llamada al hacer clic en el ícono de
teléfono.
 La primera llamada es a la extensión 202 de ggalilei. ¿Por qué, si marcamos a jdoe?
 Esto funciona así por una razón sencilla el plugin Asterisk-IM, hace “clic to call”.
 Cuando uno activa esta funcionalidad, como en el caso de la imagen, el servidor Elastix/Asterisk
llama a la extensión que generó la llamada primero, en este caso la extensión 202 de ggalilei.
 Una vez que ggalilei contesta la llamada, Elastix/Asterisk llama a la extensión de destino, en este
ejemplo la extensión 200 de jdoe.
 La razón es que Asterisk conecta ambas extensiones con una llamada, pero no llama a la extensión
de destino a menos que la extensión que generó el pedido haya aceptado un invite, es decir que se
ponga al teléfono.
 ¿Tiene su lógica no? Una llamada solo se generará si y solo si nosotros realmente estamos en la
línea, caso contrario no.
Clic	
  to	
  call	
  
11
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-18	
  
Seguridad
Laboratorio 18.1
Descripción: En este laboratorio aprenderemos a cambiar las claves de las principales
aplicaciones de Elastix.
Objetivo: Cambiar las contraseñas de Elastix para asegurar nuestro servidor
Tiempo Máximo: 15 minutos.
Instrucciones:
Cambiar la contraseña del administrador en Elastix
1. Para cambiar la configuración de Elastix debemos ingresar a la interfaz web de Elastix como
Administradores.
2. Luego ir a System → Users Management
3. Seleccionamos el usuario admin
4. Se selecciona la opción editar y podemos cambiar la contraseña del usuario admin.
Habilitar y cambiar la contraseña de freePBX
1. Para cambiar la contraseña de freePBX nos dirigirnos al módulo de Seguridad de Elastix.
2. Luego seleccionaremos Advanced Settings
3. Habilitaremos el acceso a freePBX como se muestra a continuación y cambiaremos su password
12
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-18	
  
4. Hacemos clic en “Guardar”
5. Nos dirigiremos a PBX → PBX Configuration → freePBX sin embeber
6. Iniciaremos sesión con el nuevo password
7. Deshabilitaremos el acceso a freePBX sin embeber en el apartado de Advanced Settings dentro del
módulo de seguridad.
Cambiar contraseña del usuario root de Linux
1. Para cambiar la contraseña ingresamos a Elastix como usuario root
2. Una vez que hemos ingresado escribimos el comando:
passwd
3. Al hacer esto, el equipo nos solicitará la contraseña nueva, la ingresamos y presionamos enter.
4. Inmediatamente nos solicitará una confirmación de la nueva contraseña, volvemos a ingresarla y
presionamos enter:
Cambiar contraseña del usuario root de mysql
1. Desde la línea de comando de Linux escribimos:
mysqladmin -u root -pClaveActual password 'ClaveNueva'
2. Ingresamos la clave que configuramos al momento de instalar Elastix.
Ej: Si la clave actual es palosanto y queremos cambiarla a worldelastixnow la sentencia debe ser:
13
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-18	
  
mysqladmin -u root -ppalosanto password 'worldelastixnow'
3. Hacemos clic en enter y si todo salió bien obtendremos únicamente una nueva línea.
4. Podemos probar la nueva contraseña ingresando a mysql con el siguiente comando:
mysql -u root –p
Salimos con exit
Cambiar la contraseña de Flash Operator Panel
1. Abrir el archivo /etc/amportal.conf
vim /etc/amportal.conf
2. Buscar la línea FOPPASSWORD=
3. Cambiar la clave remplazando la cadena de texto luego del signo "=" , como se muestra a
continuación:
FOPPASSWORD=nuevaclave
4. Grabar y Salir (Esc → :wq)
14
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-18	
  
Seguridad
Laboratorio 18.2
Descripción: Asegurar Elastix utilizando el Firewall en el mismo servidor con el módulo de
seguridad de Elastix. Se asume para esta práctica que solo se tiene 1 interfaz de red y que esta
se llama eth0.
Objetivo: Aprender a cerrar todos los puertos menos los estrictamente necesarios para el
funcionamiento de nuestra Central
Tiempo Máximo: 10 minutos.
Instrucciones:
1. Ingresar a la sección de Firewall dentro del módulo de seguridad de Elastix.
2. Activar el firewall presionando el botón "Activar Cortafuegos" tal como se muestra a continuación.
15
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-18	
  
3. Realizar un escaneo local de puertos utilizando el comando "nmap -v -A localhost"
16
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-18	
  
Seguridad
Laboratorio 18.3 (Práctica recomendada)
Descripción: Asegurar Elastix utilizando el Firewall en el mismo servidor utilizando iptables por línea de
comando. Se asume para esta práctica que solo se tiene 1 interfaz de red y que esta se llama eth0.
Objetivo: Aprender a cerrar todos los puertos menos los estrictamente necesarios para el funcionamiento de
nuestra Central
Tiempo Máximo: 20 minutos.
Instrucciones:
 Ingresamos a la consola de Elastix como usuario root. Una vez en la consola ejecutamos las
siguientes líneas:
Nota: podemos ver nuestro progreso con: iptables -L
Aceptar el tráfico para el protocolo SIP
iptables -A INPUT -p udp -m udp -i eth0 --dport 5060 -j ACCEPT
Aceptar el tráfico para el protocolo RTP
iptables -A INPUT -p udp -m udp -i eth0 --dport 10000:20000 -j ACCEPT
Aceptar el tráfico para el protocolo IAX
iptables -A INPUT -p udp -m udp -i eth0 --dport 4569 -j ACCEPT
Aceptar el tráfico de HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT
Aceptar el tráfico de SMTP
iptables -A INPUT -p tcp -i eth0 --dport 25 -j ACCEPT
Aceptar el tráfico de POP3
iptables -A INPUT -p tcp -i eth0 --dport 110 -j ACCEPT
Aceptar el tráfico de IMAP
iptables -A INPUT -p tcp -i eth0 --dport 143 -j ACCEPT
Aceptar el tráfico de mensajería Instantánea
iptables -A INPUT -p tcp -i eth0 --dport 9090 -j ACCEPT
Denegar todo el otro tráfico restante
iptables -A INPUT -p all -i eth0 -j DROP
Una vez que hemos ingresado todas las líneas, grabamos la configuración con el siguiente comando:
iptables-save > /etc/sysconfig/iptables
17
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-18	
  
Seguridad
Laboratorio 18.4 (Práctica recomendada)
Descripción: Utilizar el módulo de Seguridad de Elastix para detectar claves débiles en el sistema.
Objetivo: Aprender a utilizar la utilidad Weak Keys para evitar ataques de fuerza bruta a nuestras
extensiones.
Tiempo Máximo: 5 minutos.
1. Crear una nueva extensión SIP con la contraseña "1234"
2. En la interfaz de Elastix ir a: Security → Weak Keys
3. Hacer click en el link "Cambiar Clave" que aparecerá a continuación de nuestra extensión
comprometida.
4. Cambiar la clave y guardar
	
  
18
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
Desempeño
Laboratorio 17.1
Descripción: Utilizar el programa Sipp para generar tráfico llamadas.
Objetivo: Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de
Sipp, simulando el desempeño de nuestro Elastix en un ambiente de producción.
Tiempo Máximo: 30 minutos.
Instrucciones:
 Ingresamos a la consola de Elastix como usuario root
 Instalamos el programa sipp ejecutando el siguiente comando:
yum install sipp
 Una vez que hemos instalado sipp, definimos un peer sip. Añadimos en el archivo
/etc/asterisk/sip_custom.conf la siguiente información:
[sipp_test]
type=friend
context=sipp_context
host=dynamic
port=6000
user=sipp
canreinvite=no
disallow=all
allow=ulaw
 Para editar el archivo digite: vim /etc/asterisk/sip_custom.conf
 Grabar y Salir (Esc → :wq)
 Creamos una extensión adicionando un contexto para hacer nuestra prueba
 Editar el archivo /etc/asterisk/extensions_custom.conf.
vim extensions_custom.conf
19
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
 Agregar las siguientes líneas al archivo
 Grabar y Salir (Esc → :wq)
 Como podemos observar el contexto funciona cuando se marca a la extensión 2222, esta contestará
tocará un Music on Hold y colgará. Sipp se encargará de hacer tantas llamadas por segundo se
requieran a este contexto.
 Recargar asterisk: [root@elastix asterisk]# asterisk -rx “reload”
 Antes de iniciar las pruebas de estrés con sipp, activaremos las llamadas SIP anónimas en Elastix.
En la interfaz web de Elastix ir a Security → Advanced Settings.
 Una vez ahí encenderemos “Activar llamadas SIP anónimas”.
 No es necesario hacer clic en “Guardar”.
 De la misma manera vamos a PBX → PBX Configuration → Configuración General y activamos la
opción: “Allow Anonymous Inbound SIP Calls?”
[from-internal-custom]
include => sipp_context
[sipp_context]
exten => 2222,1,Answer
exten => 2222,n,MusicOnHold(default)
exten => 2222,n,Hangup
20
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
 Seleccionamos la opción “Yes” y hacemos clic en “Submit Changes”.
 Después aplicamos los cambios.
Ejecutando Sipp
 Una vez que hemos completado la configuración inicial estamos listos para ejecutar sipp y generar
llamadas a nuestro servidor.
 Ejecutamos el siguiente comando en donde el último parámetro indica el número de llamadas a
generar:
sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 ip.elastix –r 10 -l 10
 En este comando se debe incluir la IP del servidor Elastix (ip.elastix) cuando la generación de
llamadas se realiza desde un servidor remoto. Si la prueba es en el mismo servidor debemos colocar:
127.0.0.1. Para este laboratorio la prueba la realizaremos en el mismo servidor.
 El listado siguiente corresponde a una descripción de los parámetros del comando anterior
− d: duración de llamada (en milisegundos)
− s: extensión a marcar
− i: IP que ejecuta la orden de simulación de llamadas
− p: puerto e IP del servidor Elastix donde se quieren hacer las pruebas de stress
− r: rate, llamadas por segundo
− l: limite máximo de llamadas concurrentes
− users: usuarios (llamadas) concurrentes (en este ejemplo no usamos esta variación)
 Como podemos observar el comando tiene configuradas 10 llamadas por segundo con un límite
máximo de 10 llamadas.
 Es recomendable realizar inicialmente las pruebas con un valor bajo de llamadas por segundo, ya que
no conocemos la capacidad de nuestro servidor. Realizaremos una prueba con un limite máximo de
10 llamadas concurrentes y luego una con un límite máximo de 80 llamadas concurrentes; en ambos
casos con un rate de 10 llamadas por segundo.
 Para esta prueba es necesario que iniciemos sesión en la consola de Elastix, desde tres consolas (el
programa putty permite esta funcionalidad). En todas las ventanas ingresaremos como usuario root.
 En cada consola ejecutaremos un comando:
21
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
Consola 1: comando sipp
Consola 2: comando top
Consola 3: Asterisk CLI: asterisk –r
 Es recomendable que iniciemos top y el CLI antes de ejecutar el comando sipp.
 Una vez que tenemos todo listo, ejecutemos sipp:
sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 –r 10 -l 10
 Veremos la siguiente salida:
 En la consola de la derecha se está ejecutando sipp. En la consola superior izquierda el comando
Top y en la consola inferior izquierda Asterisk CLI.
 La aplicación Sipp es una herramienta que genera llamadas sipp simuladas en o hacia un servidor.
Cuando se ejecuta, genera un número de llamadas por segundo hasta alcanzar el máximo de
llamadas concurrentes.
 Una vez alcanzadas, sipp continúa tomando datos estadísticos. La ejecución de sipp sin embargo
consume un alto procesamiento al servidor, como vemos en el siguiente imagen:
 Paramos la ejecución de sipp con ctrl-c, y obtenemos un reporte:
22
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
 En realidad ya no necesitamos que sipp siga ejecutándose, ya que las llamadas se generaron y
tienen una duración para que podamos observar los resultados.
 Una vez que hemos parado sipp, observaremos que procesos están consumiendo mas
procesamiento.
 Como podemos observar, en la imagen anterior, Asterisk consume un aproximado de 12.9% del CPU,
con 10 llamadas concurrentes. Estos datos pueden variar de acuerdo a la variación de su servidor.
 Mientras leemos este tutorial, las llamadas continúan en curso, por lo cual ejecutaremos dos
comandos en las consolas de la izquierda para observar nuevos datos:
Consola superior: top -p $(pidof asterisk)
Consola inferior: watch -n1 "rasterisk -x 'core show channels' | tail -n4"
 En la consola superior hemos discriminado los valores para observar únicamente el valor porcentual
de Asterisk (que es lo que nos interesa en este laboratorio).
 En la consola inferior podemos ver el número de llamadas y canales en curso mientras revisamos
nuestros datos.
23
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
 Como esperábamos las llamadas concurrentes son 10.
 En el laboratorio 17.2 realizaremos una prueba para tomar muchos valores de uso de procesamiento
de tal manera que podamos hacer un promedio para ese número de llamadas concurrentes.
 Aunque ya paramos Sipp, las llamadas continúan en curso. Para pararlas ejecute el siguiente
comando desde cualquiera de las tres consolas:
service asterisk restart
 Al ejecutar este comando observaremos en las consolas de la izquierda, que Asterisk no está
generando procesamiento y no hay llamadas activas al momento.
 Ahora realizaremos la prueba con 40 llamadas concurrentes. Ejecute:
Consola derecha:
sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 -users 40
Consola Superior Izquierda:
top -p $(pidof asterisk)
Consola Inferior Izquierda, controlaremos el número de canales:
watch -n1 "rasterisk -x 'core show channels' | tail -n4"
 Recuerde ejecutar los comandos en las consolas de la izquierda primero y sipp después.
 Consumo % de Asterisk
 Canales y llamadas activas
 Como era de esperar, el consumo de recursos, por parte de Asterisk, fue mayor con 40 llamadas
concurrentes.
24
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
 Es importante indicar que los valores para cada servidor varían. Es recomendable hacer la prueba sin
tarjetas de telefonía instaladas, con Openfire y el módulo de call center desactivados. De esa manera
no tenemos procesos que interfieran en nuestra revisión.
25
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
Desempeño
Laboratorio 17.2 (Práctica recomendada)
Descripción: Utilizar un script para registrar los datos generados en las pruebas de estrés, con diferentes
valores de llamadas simultáneas.
Objetivo: Usar una herramienta que nos permita determinar valores estadísticos para calcular datos de
procesamiento vs número de llamadas concurrentes.
Tiempo Máximo: 20 minutos.
Instrucciones:
 En el laboratorio anterior pudimos observar que en una prueba de estrés vemos los valores
momentáneos de % de uso de CPU. Sin embargo estos valores difieren durante la prueba y no son
necesariamente constantes.
 Una forma útil para obtener un valor promedio, es el de registrar un número X de valores en un
tiempo determinado.
 Para este efecto crearemos un Script que registre estos valores en un archivo de texto.
 Creamos el archivo:
vim /opt/getUSAGE
 Al ingresar al editor de texto escribimos el siguiente script:
ps -o rss,vsize,%mem,%cpu -C asterisk > USAGE.txt
sleep 2
for (( i=1; i<15; i++ ))
do
ps -o rss= -o vsize= -o %mem= -o %cpu= -C asterisk >> USAGE.txt
sleep 2
done
 Grabar y Salir (Esc → :wq)
 Como pudimos observar el archivo fue creado en el directorio /opt. El script está escrito para que al
ejecutarlo se genere un archivo de texto con nombre USAGE.txt, que tome “15” muestras cada dos
segundos.
26
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
 Ahora cambiaremos los permisos del archive getUSAGE con el siguiente comando:
chmod +x /opt/getUSAGE
 Una vez que creamos el script y hemos cambiado sus permisos, podemos iniciar la toma de las
muestras.
Toma de datos
 Realizaremos una prueba de estrés con 10 llamadas concurrentes usando sipp y registraremos la
información con el script getUSAGE.
 Es importante indicar los siguiente:
Correremos el script (getUSAGE) después de 2-3 minutos de haber iniciado las llamadas con
sipp; esto permitirá al sistema estabilizarse con esas llamadas.
Para correr el script (getUSAGE) es necesario estar ubicados en el directorio /opt
El script se ejecuta con el siguiente comando: ./getUSAGE
Una vez que iniciemos sipp esperaremos hasta que se hayan generado el total de llamadas
concurrentes y saldremos con ctrl-c. Hacemos esto ya que le generación de estadísticas de
sipp carga mucho procesamiento.
 Al igual que hiciéramos en el laboratorio anterior, utilizaremos tres consolas para realizar la prueba.
Consola derecha:
sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 -users 10
Consola superior Izquierda, controlaremos el número de canales:
watch -n1 "rasterisk -x 'core show channels' | tail -n4"
Consola inferior Izquierda:
./getUSAGE
 Canales y llamadas activas
 Al ejecutar ./getUSAGE el script demorará alrededor de 30 segundos mientras toma los datos de
procesamiento y memoria.
27
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-17	
  
 Una vez que el script haya culminado podemos ingresar al archivo txt generado de la siguiente
manera:
 Al ingresar al archivo podemos observar los siguientes valores:
 Como podemos observar, tenemos varios valores de procesamiento para esta prueba (10 llamadas
concurrentes). Con esto podemos sacar un promedio de procesamiento % con 10 llamadas
concurrentes.
 Es ideal hacer esta misma prueba con valores de 20, 30, 40, 50, 70, 80, 90 y 100 llamadas
concurrentes (a un rate de 10 llamadas por segundo). De esta manera podemos establecer una curva
que nos ayude a pronosticar el rendimiento de nuestro servidor.
 Es importante indicar que el script ./getUSAGE sobre escribe el archivo USAGE.txt, por lo cual si lo
queremos tener guardado como referencia debemos hacer un backup con otro nombre e.g.
USAGE10.txt
28
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-19	
  
	
  
Depuración Avanzada
Laboratorio 19.1
Descripción: Utilizar el comando strace en un programa básico y ver la salida cuando se produce
un error en la ejecución
Objetivo: Familiarizarse con el comando strace y aplicarlo para hacer debugging.
Tiempo Máximo: 10 minutos
Instrucciones:
 Crear el archivo divide.c en el directorio /opt con el siguiente contenido
 Compilar el archivo divide.c con la opción -g para debugging:
 Ejecutar el comando strace con la opción -o para enviar la salida al archivo salida.divideXXX.txt:
 Se ejecutará el programa y pedirá dos números para dividir. En el segundo número ingresar 0:
[root@elastix opt]# vim divide.c
#include<stdio.h>
#include<math.h>
int main(void)
{
int a;
int b;
printf("Introduce el primer numeron");
scanf("%d", &a);
printf("Introduce el segundo numeron");
scanf("%d", &b);
printf("Resultado: %d n",(a/b));
return 0;
}
[root@elastix opt]# gcc -g divide.c -o divide
[root@elastix opt]# strace -o salida-divide.txt ./divide
29
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-19	
  
	
  
 Revisar el archivo salida-divide.txt como sigue:
 Al revisar el archivo veremos una línea como sigue:
 NOTA: SIGFPE es una señal enviada a un proceso ó programa cuando se realiza una operación
errónea de punto flotante.
[root@elastix opt]# vim salida-divide.txt
--- SIGFPE (Floating point exception) @ 0 (0) ---
+++ killed by SIGFPE +++
30
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-19	
  
	
  
Debugging Avanzado
Laboratorio 22.2
Descripción: Utilizar el comando gdb en un programa básico y ejecutar los comandos RUN, STEP, PRINT,
BREAK, QUIT.
Objetivo: Familiarizarse con el comando gdb y aplicarlo para hacer debugging.
Tiempo Máximo: 15 minutos
Instrucciones:
 Instalar el paquete gdb-7.0.1-42.el5.centos.i386.rpm utilizando el comando yum:
[root@elastix opt]# yum install gdb
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.adams.net
* commercial-addons: 66.128.53.13
* elastix-base: 66.128.53.13
* elastix-extras: 66.128.53.13
* elastix-updates: 66.128.53.13
* epel: ftp.osuosl.org
* extras: mirror.ubiquityservers.com
* updates: mirrors.easynews.com
Transaction Summary
==============================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 2.4 M
Is this ok [y/N]: y
Downloading Packages:
gdb-7.0.1-42.el5.centos.i386.rpm | 2.4 MB 00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : gdb
1/1
Installed:
gdb.i386 0:7.0.1-42.el5.centos
Complete!
31
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-19	
  
	
  
 Crear el archivo imprime.c en el directorio /opt
 Compilarlo con la opción -g para debugging:
 Ejecutar el comando gdb con la opción -q para el programa imprime, como sigue:
[root@elastix opt]# vim imprime.c
#include<stdio.h>
#include<math.h>
int main(void)
{
int a;
int b;
int c;
printf("Ingrese el primer numeron");
scanf("%d", &a);
printf("Ingrese el segundo numeron");
scanf("%d", &b);
c=a+b;
printf("La suma de %d y %d es %d n",a,b,c);
return 0;
}
[root@elastix opt]# gcc -g imprime.c -o imprime
[root@elastix opt]# gdb -q imprime
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb)
32
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-19	
  
	
  
 En el prompt de gdb, crear los “breaks” para el programa imprime, como sigue:
 Ejecutamos el comando RUN, como sigue:
 Vamos avanzando línea por línea con el comando step, como sigue:
--
Reading symbols from /opt/imprime...done.
(gdb) break imprime.c:1
Breakpoint 1 at 0x8048415: file imprime.c, line 1.
(gdb) break imprime.c:2
Note: breakpoint 1 also set at pc 0x8048415.
Breakpoint 2 at 0x8048415: file imprime.c, line 2.
(gdb) break imprime.c:3
Note: breakpoints 1 and 2 also set at pc 0x8048415.
Breakpoint 3 at 0x8048415: file imprime.c, line 3.
(gdb) break imprime.c:4
Note: breakpoints 1, 2 and 3 also set at pc 0x8048415.
Breakpoint 4 at 0x8048415: file imprime.c, line 4.
(gdb) break imprime.c:5
Note: breakpoints 1, 2, 3 and 4 also set at pc 0x8048415.
Breakpoint 5 at 0x8048415: file imprime.c, line 5.
(gdb) break imprime.c:6
Note: breakpoints 1, 2, 3, 4 and 5 also set at pc 0x8048415.
Breakpoint 6 at 0x8048415: file imprime.c, line 6.
(gdb) break imprime.c:7
Note: breakpoints 1, 2, 3, 4, 5 and 6 also set at pc 0x8048415.
Breakpoint 7 at 0x8048415: file imprime.c, line 7.
(gdb)
(gdb) run
Starting program: /opt/imprime
Breakpoint 1, main () at imprime.c:9
9 printf("Ingrese el primer numeron");	
  
Breakpoint 1, main () at imprime.c:9
9 printf("Ingrese el primer numeron");
(gdb) step
	
  
33
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-19	
  
	
  
 Ingresamos un valor y ejecutamos el comando “print a” , para imprimir el valor de la variable “a”:
 Seguimos la ejecución del programa con el comando “step” hasta terminarlo:
 Para salir ejecutamos el comando “quit”, como sigue:
	
  
Ingrese el primer numero
10 scanf("%d", &a);
(gdb) step
8
11 printf("Ingrese el segundo numeron");
(gdb) print a
$1 = 8
(gdb)	
  
(gdb) step
8
11 printf("Ingrese el segundo numeron");
(gdb) print a
$1 = 8
(gdb) step
Ingrese el segundo numero
12 scanf("%d", &b);
(gdb) step
4
13 c=a+b;
(gdb) step
14 printf("La suma de %d y %d es %d n",a,b,c);
(gdb) step
La suma de 8 y 4 es 12
15 return 0;
(gdb) quit
A debugging session is active.
Inferior 3 [process 13906] will be killed.
Quit anyway? (y or n) y
34
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-20	
  
	
  
DUNDi
Laboratorio 20.1
Descripción: Implementar DUNDi mediante el addon de marcado distribuido entre dos servidores
Elastix y hacer una prueba de llamada desde las extensiones de uno de los servidores.
Objetivo: Utilizar el addon de plan de marcado distribuido para la utilización de DUNDi.
Tiempo Máximo: 20 minutos.
Instrucciones:
 Agruparse en pareja para implementar DUNDI con su compañero.
 Instalar el addon de marcado distribuido en ambos servidores Elastix. Ir al menú Addons
 Una vez que hemos instalado el addon, dirigirse a PBX → Distributed DialPlan y completar el
formulario inicial.
 En ambos servidores, dirigirse a PBX → Distributed DialPlan y completar el formulario de “Información
General”.
 En el primer servidor 1 dirigirse al submenú "Password Connection" ubicado a la izquerda.
35
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-20	
  
	
  
 Copiamos la clave generada o podemos enviarla por correo incluyendo una dirección en el campo
“Email” y haciendo clic en enviar. En cualquiera de los dos casos la información que se encuentra en
el campo clave, es el certificado que tendremos que usar.
 En el servidor 2 dirigirse a "Peers Information" y seleccionar "Nueva Conexión"
 Completar el formulario con la dirección IP de el servidor 1 y el certificado / password generado.
 Presionar el botón "Petición"
 Nuevamente en el servidor 1, dirigirse a "Peers Information" donde figurará la nueva petición de
conexión. Hacer clic en el enlace "Petición de Conexión".
 Presionar el botón "Aceptar"
36
ELASTIX®
CERTIFICATION
	
  
labs
	
  
Lab-20	
  
	
  
 En el servidor 2, dirigirse nuevamente a "Peers Information", donde figurará la nueva conexión y
presionar el enlace "Conectar"
 Repetir el paso anterior en el servidor 1.
 Una vez finalizado el proceso obtendremos el siguiente resultado, y podremos realizar llamadas entre
las dos centrales.
 En el servidor 2, cree la extensión 400. Registre esta extensión en el teléfono IP o en un softphone.
 Desde la extensión 200 del servidor 1, marque a la extensión 400. Si todo fue configurado
correctamente debería conectar una llamada.
37

Elastix lab uece-book-esp

  • 2.
    ELASTIX® CERTIFICATION   labs   Lab-15   Mensajería Instantánea en Elastix Laboratorio 15.1 Descripción: Instalación de Openfire con una base de datos Mysql. Objetivo: Instalar Openfire con una base de datos Mysql, crear la base de datos y el usuario de dicha base de datos. Tiempo Máximo: 15 minutos. Instrucciones:  Ingresamos a la consola de Elastix como usuario root  Ir al directorio cd /opt/openfire/resources/database  Una vez en el directorio ejecutar el siguiente comando para crear la base de datos openfire mysqladmin create openfire -p  La clave de root de mysql la ingresamos durante la instalación de Elastix. Para este caso es “palosanto”  Revisaremos si la base de datos fue creada correctamente. Ejecute el siguiente comando: mysql -u root –p Password: palosanto  Una vez en la base de datos utilice: show databases; 1
  • 3.
    ELASTIX® CERTIFICATION   labs   Lab-15    Crear la estructura de la base de datos con el siguiente comando: cat openfire_mysql.sql |mysql openfire –p  Crear el usuario Openfire con todos los privilegios para ejecutar las sentencias SQL en la base de datos Openfire.  Ingresar a mysql con el siguiente comando: mysql -u root –p Password: palosanto  Una vez en la base de datos digite: use openfire;  Luego digite: GRANT ALL PRIVILEGES ON openfire.* TO 'openfire'@'localhost' IDENTIFIED BY 'openfire';  En la sentencia anterior creamos el usuario “openfire” con el password “openfire”.  Ir a la interface de Elastix y hacer click en la pestaña “IM”. Activar OpenFire. 2
  • 4.
    ELASTIX® CERTIFICATION   labs   Lab-15    Configuramos el lenguaje  Especificamos el dominio del sistema, coloquemos el mismo dominio que nuestra Elastix.  Seleccionamos la base de datos a utilizar. En este caso seleccionaremos la opción Conexión Estándard  Una vez que seleccionamos una base de datos externa, tendremos que indicar la información correspondiente.  El tipo de base de datos es “MySQL”.  La clase de Driver se coloca por defecto y es: com.mysql.jdbc.Driver 3
  • 5.
    ELASTIX® CERTIFICATION   labs   Lab-15    La URL de la base de datos es coloca por defecto el siguiente valor: jdbc:mysql://[host- name]:3306/[database-name]  Reemplazamos [host-name] por “localhost” y [database-name] por “openfire” de tal manera que tengamos: jdbc:mysql://localhost:3306/openfire  Con esto indicamos que la base de datos está ubicada en el localhost y se denomina openfire.  El usuario es: openfire y la contraseña: openfire Ahora seleccionamos el sistema de usuarios, colocamos “Por defecto”.  Colocamos el correo y la contraseña de la cuenta admin. 4
  • 6.
    ELASTIX® CERTIFICATION   labs   Lab-15    Una vez que completamos la configuración podemos ingresar a la interfaz de administración. 5
  • 7.
    ELASTIX® CERTIFICATION   labs   Lab-15   Mensajería Instantánea en Elastix Laboratorio 15.2 Descripción: Integración de Openfire con Elastix. Objetivo: Integrar Asterisk con Openfire. Tiempo Máximo: 15 minutos. Instrucciones:  Una vez que ingresamos a la interfaz de administración podemos crear cuentas para usuarios e instalar plugins.  Instalaremos el plugin “Asterisk-IM”. En la interfaz de Openfire ir al menú Plugins  Observamos un listado de plugins disponibles, instalaremos: Asterisk-IM Openfire Plugin.  Hacemos clic en el signo “+” junto a la aplicación.  Si el plugin “Asterisk-IM”.se instaló correctamente, veremos un menú nuevo llamado “Asterisk-IM”. Hacemos clic en el menú “Asterisk-IM” para iniciar la configuración 6
  • 8.
    ELASTIX® CERTIFICATION   labs   Lab-15    Seleccionamos la opción “Enabled” y colocamos “default” en el campo “Asterisk Context”. Una vez hecho esto hacemos clic en save.  Habilitaremos también la opción “Asterisk Queue Presence” y deshabilitamos la opción: “Drop-down device selection”  Inmediatamente observaremos la opción “Add Server”, hacemos clic para configurar la funcionalidad “Phone Server”.  Hacemos clic en Add Server y obtendremos los siguientes campos: • Server Name: elastix_domain (el host del servidor elastix) • Server Address: 127.0.0.1 • Port: 5038 • Username: admin • Password: contraseña_de_AMI 7
  • 9.
    ELASTIX® CERTIFICATION   labs   Lab-15    La contraseña que utilizaremos, es la misma que configuramos durante la instalación de Elastix. Sino queremos estar seguros del host que tiene nuestro Elastix ejecute “hostname” en la consola. (En este ejemplo es test.elastix.org) Nota: el hostname es vital para casos que necesiten resolución por DNS  Observaremos enlistado el servidor si la configuración fue exitosa. Creación de usuarios y mapeo  Para crear usuarios, debemos ir al menú “usuarios/grupos”.  Hacemos clic en “Crear Nuevo Usuario” 8
  • 10.
    ELASTIX® CERTIFICATION   labs   Lab-15    Como podemos observar, los campos requeridos obligatorios son el usuario y la contraseña.  Crearemos otro usuario con el nombre Galileo Galilei y el user: ggalilei  Ahora es necesario mapear los usuarios creados con extensiones disponibles en nuestra Elastix. Tenemos creadas la extensión 200, 201 y 202.  Mapearemos a jdoe con la extensión 200 y a ggalilei con la extensión 202.  Para mapear las extensiones debemos ir a: OpenFire → Asterisk-IM → Phone Mappings  Una vez en Phone Mappings, añadiremos el mapeo para jdoe:  Configuramos los campos de la siguiente manera: • Username: jdoe • Device: SIP/200 • Extension: 200 • Caller ID: 200 • Primary: check  Hacemos clic en add y se añadirá el mapeo para ese usuario.  Hacemos lo mismo con ggalilei. 9
  • 11.
    ELASTIX® CERTIFICATION   labs   Lab-15   Mensajería Instantánea en Elastix Laboratorio 15.3 (Práctica recomendada) Descripción: Instalar dos clientes de mensajería instantánea, uno de ellos “Spark”, para probar la funcionalidad de integración de Openfire con Asterisk. Objetivo: Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de la mensajería Instantánea con Elastix. Tiempo Máximo: 15 minutos. Instrucciones:  Para probar la funcionalidad de llamada podemos hacer login desde dos clientes de mensajería instantánea.  Uno de ellos debe ser Spark, ya que tiene un plugin denominado “SIP Softphone” que nos permitirá hacer el marcado.  El otro cliente puede ser cualquiera de los siguientes: Pidgin (windows, mac, ubuntu, source), iChat (mac). Cualquier cliente que permita crear una cuenta jabber/XMPP.  Haremos login con ggalilei en spark y con jdoe desde cualquier cliente IM.  Para ingresar al spark ingresamos los siguientes datos:  En el caso de otro cliente IM, lo mas común es que pidan la siguiente información: Usuario: user@elastix_domain (elastix_domain = host de Elastix) Servidor Jabber / XMPP: IP de Elastix Password: Contraseña  Una vez que ingresamos con ambas cuentas, podemos iniciar el chat.  En la siguiente imagen podemos observar que ggalilei tiene abierta una ventana de mensajes, y tiene el ícono de un teléfono. 10
  • 12.
    ELASTIX® CERTIFICATION   labs   Lab-15    En la siguiente imagen podemos observar como se inicia la llamada al hacer clic en el ícono de teléfono.  La primera llamada es a la extensión 202 de ggalilei. ¿Por qué, si marcamos a jdoe?  Esto funciona así por una razón sencilla el plugin Asterisk-IM, hace “clic to call”.  Cuando uno activa esta funcionalidad, como en el caso de la imagen, el servidor Elastix/Asterisk llama a la extensión que generó la llamada primero, en este caso la extensión 202 de ggalilei.  Una vez que ggalilei contesta la llamada, Elastix/Asterisk llama a la extensión de destino, en este ejemplo la extensión 200 de jdoe.  La razón es que Asterisk conecta ambas extensiones con una llamada, pero no llama a la extensión de destino a menos que la extensión que generó el pedido haya aceptado un invite, es decir que se ponga al teléfono.  ¿Tiene su lógica no? Una llamada solo se generará si y solo si nosotros realmente estamos en la línea, caso contrario no. Clic  to  call   11
  • 13.
    ELASTIX® CERTIFICATION   labs   Lab-18   Seguridad Laboratorio 18.1 Descripción: En este laboratorio aprenderemos a cambiar las claves de las principales aplicaciones de Elastix. Objetivo: Cambiar las contraseñas de Elastix para asegurar nuestro servidor Tiempo Máximo: 15 minutos. Instrucciones: Cambiar la contraseña del administrador en Elastix 1. Para cambiar la configuración de Elastix debemos ingresar a la interfaz web de Elastix como Administradores. 2. Luego ir a System → Users Management 3. Seleccionamos el usuario admin 4. Se selecciona la opción editar y podemos cambiar la contraseña del usuario admin. Habilitar y cambiar la contraseña de freePBX 1. Para cambiar la contraseña de freePBX nos dirigirnos al módulo de Seguridad de Elastix. 2. Luego seleccionaremos Advanced Settings 3. Habilitaremos el acceso a freePBX como se muestra a continuación y cambiaremos su password 12
  • 14.
    ELASTIX® CERTIFICATION   labs   Lab-18   4. Hacemos clic en “Guardar” 5. Nos dirigiremos a PBX → PBX Configuration → freePBX sin embeber 6. Iniciaremos sesión con el nuevo password 7. Deshabilitaremos el acceso a freePBX sin embeber en el apartado de Advanced Settings dentro del módulo de seguridad. Cambiar contraseña del usuario root de Linux 1. Para cambiar la contraseña ingresamos a Elastix como usuario root 2. Una vez que hemos ingresado escribimos el comando: passwd 3. Al hacer esto, el equipo nos solicitará la contraseña nueva, la ingresamos y presionamos enter. 4. Inmediatamente nos solicitará una confirmación de la nueva contraseña, volvemos a ingresarla y presionamos enter: Cambiar contraseña del usuario root de mysql 1. Desde la línea de comando de Linux escribimos: mysqladmin -u root -pClaveActual password 'ClaveNueva' 2. Ingresamos la clave que configuramos al momento de instalar Elastix. Ej: Si la clave actual es palosanto y queremos cambiarla a worldelastixnow la sentencia debe ser: 13
  • 15.
    ELASTIX® CERTIFICATION   labs   Lab-18   mysqladmin -u root -ppalosanto password 'worldelastixnow' 3. Hacemos clic en enter y si todo salió bien obtendremos únicamente una nueva línea. 4. Podemos probar la nueva contraseña ingresando a mysql con el siguiente comando: mysql -u root –p Salimos con exit Cambiar la contraseña de Flash Operator Panel 1. Abrir el archivo /etc/amportal.conf vim /etc/amportal.conf 2. Buscar la línea FOPPASSWORD= 3. Cambiar la clave remplazando la cadena de texto luego del signo "=" , como se muestra a continuación: FOPPASSWORD=nuevaclave 4. Grabar y Salir (Esc → :wq) 14
  • 16.
    ELASTIX® CERTIFICATION   labs   Lab-18   Seguridad Laboratorio 18.2 Descripción: Asegurar Elastix utilizando el Firewall en el mismo servidor con el módulo de seguridad de Elastix. Se asume para esta práctica que solo se tiene 1 interfaz de red y que esta se llama eth0. Objetivo: Aprender a cerrar todos los puertos menos los estrictamente necesarios para el funcionamiento de nuestra Central Tiempo Máximo: 10 minutos. Instrucciones: 1. Ingresar a la sección de Firewall dentro del módulo de seguridad de Elastix. 2. Activar el firewall presionando el botón "Activar Cortafuegos" tal como se muestra a continuación. 15
  • 17.
    ELASTIX® CERTIFICATION   labs   Lab-18   3. Realizar un escaneo local de puertos utilizando el comando "nmap -v -A localhost" 16
  • 18.
    ELASTIX® CERTIFICATION   labs   Lab-18   Seguridad Laboratorio 18.3 (Práctica recomendada) Descripción: Asegurar Elastix utilizando el Firewall en el mismo servidor utilizando iptables por línea de comando. Se asume para esta práctica que solo se tiene 1 interfaz de red y que esta se llama eth0. Objetivo: Aprender a cerrar todos los puertos menos los estrictamente necesarios para el funcionamiento de nuestra Central Tiempo Máximo: 20 minutos. Instrucciones:  Ingresamos a la consola de Elastix como usuario root. Una vez en la consola ejecutamos las siguientes líneas: Nota: podemos ver nuestro progreso con: iptables -L Aceptar el tráfico para el protocolo SIP iptables -A INPUT -p udp -m udp -i eth0 --dport 5060 -j ACCEPT Aceptar el tráfico para el protocolo RTP iptables -A INPUT -p udp -m udp -i eth0 --dport 10000:20000 -j ACCEPT Aceptar el tráfico para el protocolo IAX iptables -A INPUT -p udp -m udp -i eth0 --dport 4569 -j ACCEPT Aceptar el tráfico de HTTPS iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT Aceptar el tráfico de SMTP iptables -A INPUT -p tcp -i eth0 --dport 25 -j ACCEPT Aceptar el tráfico de POP3 iptables -A INPUT -p tcp -i eth0 --dport 110 -j ACCEPT Aceptar el tráfico de IMAP iptables -A INPUT -p tcp -i eth0 --dport 143 -j ACCEPT Aceptar el tráfico de mensajería Instantánea iptables -A INPUT -p tcp -i eth0 --dport 9090 -j ACCEPT Denegar todo el otro tráfico restante iptables -A INPUT -p all -i eth0 -j DROP Una vez que hemos ingresado todas las líneas, grabamos la configuración con el siguiente comando: iptables-save > /etc/sysconfig/iptables 17
  • 19.
    ELASTIX® CERTIFICATION   labs   Lab-18   Seguridad Laboratorio 18.4 (Práctica recomendada) Descripción: Utilizar el módulo de Seguridad de Elastix para detectar claves débiles en el sistema. Objetivo: Aprender a utilizar la utilidad Weak Keys para evitar ataques de fuerza bruta a nuestras extensiones. Tiempo Máximo: 5 minutos. 1. Crear una nueva extensión SIP con la contraseña "1234" 2. En la interfaz de Elastix ir a: Security → Weak Keys 3. Hacer click en el link "Cambiar Clave" que aparecerá a continuación de nuestra extensión comprometida. 4. Cambiar la clave y guardar   18
  • 20.
    ELASTIX® CERTIFICATION   labs   Lab-17   Desempeño Laboratorio 17.1 Descripción: Utilizar el programa Sipp para generar tráfico llamadas. Objetivo: Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de Sipp, simulando el desempeño de nuestro Elastix en un ambiente de producción. Tiempo Máximo: 30 minutos. Instrucciones:  Ingresamos a la consola de Elastix como usuario root  Instalamos el programa sipp ejecutando el siguiente comando: yum install sipp  Una vez que hemos instalado sipp, definimos un peer sip. Añadimos en el archivo /etc/asterisk/sip_custom.conf la siguiente información: [sipp_test] type=friend context=sipp_context host=dynamic port=6000 user=sipp canreinvite=no disallow=all allow=ulaw  Para editar el archivo digite: vim /etc/asterisk/sip_custom.conf  Grabar y Salir (Esc → :wq)  Creamos una extensión adicionando un contexto para hacer nuestra prueba  Editar el archivo /etc/asterisk/extensions_custom.conf. vim extensions_custom.conf 19
  • 21.
    ELASTIX® CERTIFICATION   labs   Lab-17    Agregar las siguientes líneas al archivo  Grabar y Salir (Esc → :wq)  Como podemos observar el contexto funciona cuando se marca a la extensión 2222, esta contestará tocará un Music on Hold y colgará. Sipp se encargará de hacer tantas llamadas por segundo se requieran a este contexto.  Recargar asterisk: [root@elastix asterisk]# asterisk -rx “reload”  Antes de iniciar las pruebas de estrés con sipp, activaremos las llamadas SIP anónimas en Elastix. En la interfaz web de Elastix ir a Security → Advanced Settings.  Una vez ahí encenderemos “Activar llamadas SIP anónimas”.  No es necesario hacer clic en “Guardar”.  De la misma manera vamos a PBX → PBX Configuration → Configuración General y activamos la opción: “Allow Anonymous Inbound SIP Calls?” [from-internal-custom] include => sipp_context [sipp_context] exten => 2222,1,Answer exten => 2222,n,MusicOnHold(default) exten => 2222,n,Hangup 20
  • 22.
    ELASTIX® CERTIFICATION   labs   Lab-17    Seleccionamos la opción “Yes” y hacemos clic en “Submit Changes”.  Después aplicamos los cambios. Ejecutando Sipp  Una vez que hemos completado la configuración inicial estamos listos para ejecutar sipp y generar llamadas a nuestro servidor.  Ejecutamos el siguiente comando en donde el último parámetro indica el número de llamadas a generar: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 ip.elastix –r 10 -l 10  En este comando se debe incluir la IP del servidor Elastix (ip.elastix) cuando la generación de llamadas se realiza desde un servidor remoto. Si la prueba es en el mismo servidor debemos colocar: 127.0.0.1. Para este laboratorio la prueba la realizaremos en el mismo servidor.  El listado siguiente corresponde a una descripción de los parámetros del comando anterior − d: duración de llamada (en milisegundos) − s: extensión a marcar − i: IP que ejecuta la orden de simulación de llamadas − p: puerto e IP del servidor Elastix donde se quieren hacer las pruebas de stress − r: rate, llamadas por segundo − l: limite máximo de llamadas concurrentes − users: usuarios (llamadas) concurrentes (en este ejemplo no usamos esta variación)  Como podemos observar el comando tiene configuradas 10 llamadas por segundo con un límite máximo de 10 llamadas.  Es recomendable realizar inicialmente las pruebas con un valor bajo de llamadas por segundo, ya que no conocemos la capacidad de nuestro servidor. Realizaremos una prueba con un limite máximo de 10 llamadas concurrentes y luego una con un límite máximo de 80 llamadas concurrentes; en ambos casos con un rate de 10 llamadas por segundo.  Para esta prueba es necesario que iniciemos sesión en la consola de Elastix, desde tres consolas (el programa putty permite esta funcionalidad). En todas las ventanas ingresaremos como usuario root.  En cada consola ejecutaremos un comando: 21
  • 23.
    ELASTIX® CERTIFICATION   labs   Lab-17   Consola 1: comando sipp Consola 2: comando top Consola 3: Asterisk CLI: asterisk –r  Es recomendable que iniciemos top y el CLI antes de ejecutar el comando sipp.  Una vez que tenemos todo listo, ejecutemos sipp: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 –r 10 -l 10  Veremos la siguiente salida:  En la consola de la derecha se está ejecutando sipp. En la consola superior izquierda el comando Top y en la consola inferior izquierda Asterisk CLI.  La aplicación Sipp es una herramienta que genera llamadas sipp simuladas en o hacia un servidor. Cuando se ejecuta, genera un número de llamadas por segundo hasta alcanzar el máximo de llamadas concurrentes.  Una vez alcanzadas, sipp continúa tomando datos estadísticos. La ejecución de sipp sin embargo consume un alto procesamiento al servidor, como vemos en el siguiente imagen:  Paramos la ejecución de sipp con ctrl-c, y obtenemos un reporte: 22
  • 24.
    ELASTIX® CERTIFICATION   labs   Lab-17    En realidad ya no necesitamos que sipp siga ejecutándose, ya que las llamadas se generaron y tienen una duración para que podamos observar los resultados.  Una vez que hemos parado sipp, observaremos que procesos están consumiendo mas procesamiento.  Como podemos observar, en la imagen anterior, Asterisk consume un aproximado de 12.9% del CPU, con 10 llamadas concurrentes. Estos datos pueden variar de acuerdo a la variación de su servidor.  Mientras leemos este tutorial, las llamadas continúan en curso, por lo cual ejecutaremos dos comandos en las consolas de la izquierda para observar nuevos datos: Consola superior: top -p $(pidof asterisk) Consola inferior: watch -n1 "rasterisk -x 'core show channels' | tail -n4"  En la consola superior hemos discriminado los valores para observar únicamente el valor porcentual de Asterisk (que es lo que nos interesa en este laboratorio).  En la consola inferior podemos ver el número de llamadas y canales en curso mientras revisamos nuestros datos. 23
  • 25.
    ELASTIX® CERTIFICATION   labs   Lab-17    Como esperábamos las llamadas concurrentes son 10.  En el laboratorio 17.2 realizaremos una prueba para tomar muchos valores de uso de procesamiento de tal manera que podamos hacer un promedio para ese número de llamadas concurrentes.  Aunque ya paramos Sipp, las llamadas continúan en curso. Para pararlas ejecute el siguiente comando desde cualquiera de las tres consolas: service asterisk restart  Al ejecutar este comando observaremos en las consolas de la izquierda, que Asterisk no está generando procesamiento y no hay llamadas activas al momento.  Ahora realizaremos la prueba con 40 llamadas concurrentes. Ejecute: Consola derecha: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 -users 40 Consola Superior Izquierda: top -p $(pidof asterisk) Consola Inferior Izquierda, controlaremos el número de canales: watch -n1 "rasterisk -x 'core show channels' | tail -n4"  Recuerde ejecutar los comandos en las consolas de la izquierda primero y sipp después.  Consumo % de Asterisk  Canales y llamadas activas  Como era de esperar, el consumo de recursos, por parte de Asterisk, fue mayor con 40 llamadas concurrentes. 24
  • 26.
    ELASTIX® CERTIFICATION   labs   Lab-17    Es importante indicar que los valores para cada servidor varían. Es recomendable hacer la prueba sin tarjetas de telefonía instaladas, con Openfire y el módulo de call center desactivados. De esa manera no tenemos procesos que interfieran en nuestra revisión. 25
  • 27.
    ELASTIX® CERTIFICATION   labs   Lab-17   Desempeño Laboratorio 17.2 (Práctica recomendada) Descripción: Utilizar un script para registrar los datos generados en las pruebas de estrés, con diferentes valores de llamadas simultáneas. Objetivo: Usar una herramienta que nos permita determinar valores estadísticos para calcular datos de procesamiento vs número de llamadas concurrentes. Tiempo Máximo: 20 minutos. Instrucciones:  En el laboratorio anterior pudimos observar que en una prueba de estrés vemos los valores momentáneos de % de uso de CPU. Sin embargo estos valores difieren durante la prueba y no son necesariamente constantes.  Una forma útil para obtener un valor promedio, es el de registrar un número X de valores en un tiempo determinado.  Para este efecto crearemos un Script que registre estos valores en un archivo de texto.  Creamos el archivo: vim /opt/getUSAGE  Al ingresar al editor de texto escribimos el siguiente script: ps -o rss,vsize,%mem,%cpu -C asterisk > USAGE.txt sleep 2 for (( i=1; i<15; i++ )) do ps -o rss= -o vsize= -o %mem= -o %cpu= -C asterisk >> USAGE.txt sleep 2 done  Grabar y Salir (Esc → :wq)  Como pudimos observar el archivo fue creado en el directorio /opt. El script está escrito para que al ejecutarlo se genere un archivo de texto con nombre USAGE.txt, que tome “15” muestras cada dos segundos. 26
  • 28.
    ELASTIX® CERTIFICATION   labs   Lab-17    Ahora cambiaremos los permisos del archive getUSAGE con el siguiente comando: chmod +x /opt/getUSAGE  Una vez que creamos el script y hemos cambiado sus permisos, podemos iniciar la toma de las muestras. Toma de datos  Realizaremos una prueba de estrés con 10 llamadas concurrentes usando sipp y registraremos la información con el script getUSAGE.  Es importante indicar los siguiente: Correremos el script (getUSAGE) después de 2-3 minutos de haber iniciado las llamadas con sipp; esto permitirá al sistema estabilizarse con esas llamadas. Para correr el script (getUSAGE) es necesario estar ubicados en el directorio /opt El script se ejecuta con el siguiente comando: ./getUSAGE Una vez que iniciemos sipp esperaremos hasta que se hayan generado el total de llamadas concurrentes y saldremos con ctrl-c. Hacemos esto ya que le generación de estadísticas de sipp carga mucho procesamiento.  Al igual que hiciéramos en el laboratorio anterior, utilizaremos tres consolas para realizar la prueba. Consola derecha: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 -users 10 Consola superior Izquierda, controlaremos el número de canales: watch -n1 "rasterisk -x 'core show channels' | tail -n4" Consola inferior Izquierda: ./getUSAGE  Canales y llamadas activas  Al ejecutar ./getUSAGE el script demorará alrededor de 30 segundos mientras toma los datos de procesamiento y memoria. 27
  • 29.
    ELASTIX® CERTIFICATION   labs   Lab-17    Una vez que el script haya culminado podemos ingresar al archivo txt generado de la siguiente manera:  Al ingresar al archivo podemos observar los siguientes valores:  Como podemos observar, tenemos varios valores de procesamiento para esta prueba (10 llamadas concurrentes). Con esto podemos sacar un promedio de procesamiento % con 10 llamadas concurrentes.  Es ideal hacer esta misma prueba con valores de 20, 30, 40, 50, 70, 80, 90 y 100 llamadas concurrentes (a un rate de 10 llamadas por segundo). De esta manera podemos establecer una curva que nos ayude a pronosticar el rendimiento de nuestro servidor.  Es importante indicar que el script ./getUSAGE sobre escribe el archivo USAGE.txt, por lo cual si lo queremos tener guardado como referencia debemos hacer un backup con otro nombre e.g. USAGE10.txt 28
  • 30.
    ELASTIX® CERTIFICATION   labs   Lab-19     Depuración Avanzada Laboratorio 19.1 Descripción: Utilizar el comando strace en un programa básico y ver la salida cuando se produce un error en la ejecución Objetivo: Familiarizarse con el comando strace y aplicarlo para hacer debugging. Tiempo Máximo: 10 minutos Instrucciones:  Crear el archivo divide.c en el directorio /opt con el siguiente contenido  Compilar el archivo divide.c con la opción -g para debugging:  Ejecutar el comando strace con la opción -o para enviar la salida al archivo salida.divideXXX.txt:  Se ejecutará el programa y pedirá dos números para dividir. En el segundo número ingresar 0: [root@elastix opt]# vim divide.c #include<stdio.h> #include<math.h> int main(void) { int a; int b; printf("Introduce el primer numeron"); scanf("%d", &a); printf("Introduce el segundo numeron"); scanf("%d", &b); printf("Resultado: %d n",(a/b)); return 0; } [root@elastix opt]# gcc -g divide.c -o divide [root@elastix opt]# strace -o salida-divide.txt ./divide 29
  • 31.
    ELASTIX® CERTIFICATION   labs   Lab-19      Revisar el archivo salida-divide.txt como sigue:  Al revisar el archivo veremos una línea como sigue:  NOTA: SIGFPE es una señal enviada a un proceso ó programa cuando se realiza una operación errónea de punto flotante. [root@elastix opt]# vim salida-divide.txt --- SIGFPE (Floating point exception) @ 0 (0) --- +++ killed by SIGFPE +++ 30
  • 32.
    ELASTIX® CERTIFICATION   labs   Lab-19     Debugging Avanzado Laboratorio 22.2 Descripción: Utilizar el comando gdb en un programa básico y ejecutar los comandos RUN, STEP, PRINT, BREAK, QUIT. Objetivo: Familiarizarse con el comando gdb y aplicarlo para hacer debugging. Tiempo Máximo: 15 minutos Instrucciones:  Instalar el paquete gdb-7.0.1-42.el5.centos.i386.rpm utilizando el comando yum: [root@elastix opt]# yum install gdb Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.adams.net * commercial-addons: 66.128.53.13 * elastix-base: 66.128.53.13 * elastix-extras: 66.128.53.13 * elastix-updates: 66.128.53.13 * epel: ftp.osuosl.org * extras: mirror.ubiquityservers.com * updates: mirrors.easynews.com Transaction Summary ============================================================================== Install 1 Package(s) Upgrade 0 Package(s) Total download size: 2.4 M Is this ok [y/N]: y Downloading Packages: gdb-7.0.1-42.el5.centos.i386.rpm | 2.4 MB 00:02 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : gdb 1/1 Installed: gdb.i386 0:7.0.1-42.el5.centos Complete! 31
  • 33.
    ELASTIX® CERTIFICATION   labs   Lab-19      Crear el archivo imprime.c en el directorio /opt  Compilarlo con la opción -g para debugging:  Ejecutar el comando gdb con la opción -q para el programa imprime, como sigue: [root@elastix opt]# vim imprime.c #include<stdio.h> #include<math.h> int main(void) { int a; int b; int c; printf("Ingrese el primer numeron"); scanf("%d", &a); printf("Ingrese el segundo numeron"); scanf("%d", &b); c=a+b; printf("La suma de %d y %d es %d n",a,b,c); return 0; } [root@elastix opt]# gcc -g imprime.c -o imprime [root@elastix opt]# gdb -q imprime Using host libthread_db library "/lib/libthread_db.so.1". (gdb) 32
  • 34.
    ELASTIX® CERTIFICATION   labs   Lab-19      En el prompt de gdb, crear los “breaks” para el programa imprime, como sigue:  Ejecutamos el comando RUN, como sigue:  Vamos avanzando línea por línea con el comando step, como sigue: -- Reading symbols from /opt/imprime...done. (gdb) break imprime.c:1 Breakpoint 1 at 0x8048415: file imprime.c, line 1. (gdb) break imprime.c:2 Note: breakpoint 1 also set at pc 0x8048415. Breakpoint 2 at 0x8048415: file imprime.c, line 2. (gdb) break imprime.c:3 Note: breakpoints 1 and 2 also set at pc 0x8048415. Breakpoint 3 at 0x8048415: file imprime.c, line 3. (gdb) break imprime.c:4 Note: breakpoints 1, 2 and 3 also set at pc 0x8048415. Breakpoint 4 at 0x8048415: file imprime.c, line 4. (gdb) break imprime.c:5 Note: breakpoints 1, 2, 3 and 4 also set at pc 0x8048415. Breakpoint 5 at 0x8048415: file imprime.c, line 5. (gdb) break imprime.c:6 Note: breakpoints 1, 2, 3, 4 and 5 also set at pc 0x8048415. Breakpoint 6 at 0x8048415: file imprime.c, line 6. (gdb) break imprime.c:7 Note: breakpoints 1, 2, 3, 4, 5 and 6 also set at pc 0x8048415. Breakpoint 7 at 0x8048415: file imprime.c, line 7. (gdb) (gdb) run Starting program: /opt/imprime Breakpoint 1, main () at imprime.c:9 9 printf("Ingrese el primer numeron");   Breakpoint 1, main () at imprime.c:9 9 printf("Ingrese el primer numeron"); (gdb) step   33
  • 35.
    ELASTIX® CERTIFICATION   labs   Lab-19      Ingresamos un valor y ejecutamos el comando “print a” , para imprimir el valor de la variable “a”:  Seguimos la ejecución del programa con el comando “step” hasta terminarlo:  Para salir ejecutamos el comando “quit”, como sigue:   Ingrese el primer numero 10 scanf("%d", &a); (gdb) step 8 11 printf("Ingrese el segundo numeron"); (gdb) print a $1 = 8 (gdb)   (gdb) step 8 11 printf("Ingrese el segundo numeron"); (gdb) print a $1 = 8 (gdb) step Ingrese el segundo numero 12 scanf("%d", &b); (gdb) step 4 13 c=a+b; (gdb) step 14 printf("La suma de %d y %d es %d n",a,b,c); (gdb) step La suma de 8 y 4 es 12 15 return 0; (gdb) quit A debugging session is active. Inferior 3 [process 13906] will be killed. Quit anyway? (y or n) y 34
  • 36.
    ELASTIX® CERTIFICATION   labs   Lab-20     DUNDi Laboratorio 20.1 Descripción: Implementar DUNDi mediante el addon de marcado distribuido entre dos servidores Elastix y hacer una prueba de llamada desde las extensiones de uno de los servidores. Objetivo: Utilizar el addon de plan de marcado distribuido para la utilización de DUNDi. Tiempo Máximo: 20 minutos. Instrucciones:  Agruparse en pareja para implementar DUNDI con su compañero.  Instalar el addon de marcado distribuido en ambos servidores Elastix. Ir al menú Addons  Una vez que hemos instalado el addon, dirigirse a PBX → Distributed DialPlan y completar el formulario inicial.  En ambos servidores, dirigirse a PBX → Distributed DialPlan y completar el formulario de “Información General”.  En el primer servidor 1 dirigirse al submenú "Password Connection" ubicado a la izquerda. 35
  • 37.
    ELASTIX® CERTIFICATION   labs   Lab-20      Copiamos la clave generada o podemos enviarla por correo incluyendo una dirección en el campo “Email” y haciendo clic en enviar. En cualquiera de los dos casos la información que se encuentra en el campo clave, es el certificado que tendremos que usar.  En el servidor 2 dirigirse a "Peers Information" y seleccionar "Nueva Conexión"  Completar el formulario con la dirección IP de el servidor 1 y el certificado / password generado.  Presionar el botón "Petición"  Nuevamente en el servidor 1, dirigirse a "Peers Information" donde figurará la nueva petición de conexión. Hacer clic en el enlace "Petición de Conexión".  Presionar el botón "Aceptar" 36
  • 38.
    ELASTIX® CERTIFICATION   labs   Lab-20      En el servidor 2, dirigirse nuevamente a "Peers Information", donde figurará la nueva conexión y presionar el enlace "Conectar"  Repetir el paso anterior en el servidor 1.  Una vez finalizado el proceso obtendremos el siguiente resultado, y podremos realizar llamadas entre las dos centrales.  En el servidor 2, cree la extensión 400. Registre esta extensión en el teléfono IP o en un softphone.  Desde la extensión 200 del servidor 1, marque a la extensión 400. Si todo fue configurado correctamente debería conectar una llamada. 37