martes, 10 de junio de 2014

Gestión de backups de una PBX desde entorno gráfico

Gestión de copias de seguridad de una PBX Xorcom Rapid live CD desde un entorno gráfico


WinSCP + Putty


0.png

Introducción



La tarea de mantenimiento de la configuración de un sistema telefónico privado suele ser una labor rutinaria que se realiza con cierta periodicidad. El técnico accede a la central, generalmente de manera remota, y actualiza el estado del equipo añadiendo nuevos elementos, modificando reglas de funcionamiento según las necesidades o crea/restaura una instantánea de su estado.


Trabajar con una aplicación gráfica como WinSCP agiliza estas acciones y ayuda a aumentar la productividad reduciendo el trabajo a unos pocos clicks de ratón.


Aquí se muestra un pequeño ejemplo de cómo salvar la configuración de una distribución live CD con asterisk para que en el siguiente inicio podamos volver cargar el último estado de la PBX (u otro guardado con anterioridad).


Campo de operaciones



En el desarrollo de esta experiencia necesitaremos por un lado la distribución en vivo con el sistema telefónico Asterisk que incluya el módulo de creación y carga de backups, en este caso Xorcom Rapid LiveCD, y por otro las herramientas software encargadas de leer y escribir los archivos con las copias de seguridad alojadas en la ubicación adecuada dentro del árbol de directorios manejado por Asterisk. En concreto WinSCP cuya función principal es la de ofrecer la interfaz gráfica en la gestión de archivos entre dos ubicaciones distintas (local y remota) y Putty para la modificación de los permisos asociados al directorio y archivos de copia de seguridad.


Crear y salvar el fichero de backup



Primero iniciaremos el sistema telefónico Asterisk dentro de un PC de nuestra red de área local. Con su dirección IP (192.168.1.14) dispondremos de la información necesaria para acceder desde cualquier otra máquina a la centralita.


2.png
Ahora usamos en WinSCP este dato y lo acompañamos de la credencial del usuario para entrar en el servidor seguro FTP:


  • Puerto: 22
  • Nombre de usuario: user
  • Contraseña: live
1.png
Existe la posibilidad de almacenar estos valores de sesión bajo una etiqueta identificativa (user@IP_xorcom) con el fin de entrar directamente la próxima vez.


En la ventana de la izquierda vemos la carpeta local con nuestras copias anteriores y en la derecha el directorio personal del usuario con el que no hemos registrado en el equipo que ejecuta el liveCD.


Por desgracia, si en una sesión anterior hubiésemos guardado ya el directorio remoto donde se generan las copias (/live/cow/var/lib/asterisk/gui_backups) WinSCP no lo encontrará porque en cada nuevo inicio de la distribución el directorio gui_backups no aparece porque se crea cuando el administrador entra por primera vez en el módulo “backups”.


5.png
6.png
En este momento, tras el primer acceso a la zona de gestión de ficheros de respaldo, ya es posible sustituir el directorio remoto /home/user por la referencia al lugar donde Asterisk alojará aquellas copias de seguridad que se vayan generando por el propio sistema o subidas por el administrador desde otro ordenador.




El último obstáculo que resta por superar consiste en modificar los permisos asociados a esta carpeta puesto que por defecto el propietario y grupo al que pertenece son “asterisk”. Esto impedirá la escritura por parte de cualquier otro perfil en dicho espacio.


Aquí es donde entrará en acción el programa Putty, gracias al cual modificaremos las propiedades del directorio ejecutando el comando: # chmod [permisos] [ruta+directorio]. Teniendo instalados WinSCP y PuTTy en la misma localización, podremos ejecutar al segundo desde la propia interfaz del primero.
Donde se nos pedirá nuevamente las credenciales de acceso (usuario: user y contraseña: live).
Dentro de la consola de Xorcom Rapid Live CD nos convertiremos en superusuario root con # sudo su para ejecutar la orden de cambio de propiedades del directorio # chmod 777 /live/cow/var/lib/asterisk/gui_backups.
Y cuando pulsemos sobre el botón ‘recarga del directorio remoto’ comprobaremos el cambio en sus propiedades.
Por último creamos la copia de seguridad desde la ventana ‘backup’ del entorno gráfico de Asterisk y la descargamos en nuestra carpeta local tras modificar sus permisos.




Actualizar el estado de la centralita con una copia de respaldo



Si lo que deseamos es realizar el proceso inverso, es decir, subir a la PBX una copia anterior de su estado y cargarla en el sistema, la secuencia a seguir está dividida en tres acciones:


  1. Escribir en el directorio /live/cow/var/lib/asterisk/gui_backups un fichero de respaldo previo
  2. Actualizar el estado del módulo “backup”
  3. Cargar la copia en el sistema telefónico


Ilustraremos esta tarea recargando el fichero con la configuración salvada el día 6 de abril de 2014:


1Trunk5usersRinggMOHv2__2014apr06.tar


En este estado, la centralita tenía definida una troncal, 5 usuarios, grupos de llamada y música en espera personalizada.


El estado de la PBX antes de la actualización corresponde a la configuración por defecto del sistema:
Siguiendo las indicaciones del punto anterior, entramos en el apartado “backup” con el fin de obtener el directorio donde subiremos el archivo y nos aseguraremos de otorgarle los permisos necesarios para ejecutar las acciones posteriores.


A continuación actualizamos el área de copias de seguridad de Asterisk para hacer visible en la interfaz gráfica el fichero subido.


Solo resta pedir al sistema que restaure los datos de configuración del fichero de respaldo


Y desde este momento nuestra central privada de conmutación trabaja tal y como lo hacía el 6 de abril de 2014.


martes, 27 de mayo de 2014

Análisis del tráfico VoIP con Wireshark

Introducción

Una vez que el sistema PBX de VoIP está implantando, es hora de observar el comportamiento/rendimiento de los elementos involucrados en la comunicación: centralita/proveedor de VoIP, teléfonos IP y softphones.

Llevaremos a cabo parte de esta tarea empleando la aplicación Wireshark. Su función principal es la captura de tráfico generado entre aplicaciones/dispositivos que utilizan alguno de los protocolos de comunicación estudiados, dentro de una red de datos.

La captura de paquetes VoIP permitirá la extracción de conversaciones contenidas en este tipo de conexiones.

Para lograr nuestro objetivo, utilizaremos un fichero de captura (extensión .pcap) que contenga un fragmento de la comunicación entre dos dispositivos VoIP basada en los siguientes protocolos:
  • El protocolo de señalización SIP: Cuya función será la de establecer, coordinar y concluir la comunicación entre los usuarios. Se basará, a su vez, en el protocolo de descripción de sesión (SDP) orientado a sesiones de comunicación multimedia (ancho de banda y códecs).
  • El protocolo de transporte RTP: Encargado de la transferencia del audio. 

Conocimientos previos

Propiedades del protocolo SIP

  • Maneja identificadores similares a las etiquetas del lenguaje de marcado HTML. Por ejemplo, la referencia a un abonado tiene la forma abonado@dominio.
  • Los componentes del protocolo:
    • Agente de Usuario (cliente/servidor) y Agente de redirecciones
    • Servidor Proxy/de registro/de localización
  • Tipos de mensajes:
    • INVITE: Establece una sesión entre agentes de usuario. Contiene información sobre los usuarios y el tipo de datos transferido (audio / vídeo).
    • ACK: Confirma el establecimiento de una sesión.
    • OPTION: Solicitud de información de capacidades.
    • BYE: Mensaje de finalización de la conexión.
    • CANCEL: Elimina una petición pendiente sin influir en la sesión actual.
    • REGISTER: Registra la dirección SIP de un usuario.
  • Códigos de respuesta:
    • 1xx: Mensaje de información.
    • 2xx: Respuesta positiva. Se recibió la solicitud y ha sido aceptada.
    • 3xx: Respuesta postergada. Son necesarios otras tareas antes de determinar si es posible establecer la llamada.
    • 4xx: Error en la petición.
    • 5xx: Fuera de servicio temporal.
    • 6xx: No aceptada la llamada.

Propiedades del protocolo RTP

Tras el establecimiento de la conexión, ahora le toca el turno a la transmisión del audio (voz). Para ello se utiliza el protocolo de transporte en tiempo real (RTP). Encargado de la transferencia y recepción de los datos en el orden correcto. También dispone de información acerca de los códecs de audio/vídeo.

Captura de paquetes VoIP 

Después de descargar e instalar la aplicación, iniciamos Wireshark desde el grupo de programas Wireshark. Accediendo al menú [capture]>[interfaces] veremos la lista adaptadores de red encontrados por el programa. Seleccionaremos la interfaz sobre la que deseamos  capturar el tráfico.


Y a continuación pulsamos en el botón [options] de la interfaz y habilitamos la resolución de nombres de red y asegurándonos que la captura de paquetes en modo promiscuo está habilitada. Al final iniciamos la captura haciendo clic sobre el botón [Start].


Una vez concluida la recogida de datos, detenemos la captura pulsando en el botón [Stop capture] en la barra de herramientas de Wireshark.


Y salvamos el fichero eligiendo [Save] o [Save as] en el menú [File] y asegurándonos que tenemos activa la opción “All packets” y el tipo “Wireshark/tcpdump/... -libpcap (*.cap,*..pcap)”. 


Análisis de paquetes VoIP

Con el fichero .pcap generado en el apartado anterior disponemos de toda la información necesaria para estudiar la sesión VoIP establecida entre llamante y llamado.

Solicitud de establecimiento de sesión: A través del protocolo SIP se realiza una petición de conexión (request) con la orden INVITE desde el teléfono llamante sobre el teléfono IP llamado:


Estudiando las diferentes partes de este mensaje obtendremos la siguiente información:

    • Cabecera (header): Identifica los agentes usuario origen y destino así como la descripción de la sesión:
      • Via: Establece las propiedades de la ruta de comunicación (protocolo: UDP, dirección IP y puerto destino entre otros).
      • From: Llamante.
      • To: Llamado.
      • Call-ID: Identificador de la sesión.
      • C-Seq: Nº de secuencia.
    • Cuerpo (Body): Ofrece información en detalle de las propiedades de transmisión del audio en base al protocolo de SDP.
  • Sesión aceptada:

  • Finalización de sesión:

De manera simplificada, la secuencia de la sesión sigue un patrón similar al de la figura siguiente:

Wireshark también ofrece la posibilidad de visualizar esta secuencia (flujo –flow-) dentro del apartado de análisis gráfico [Statistics] >[Flow chart] > (*) Displayed packets:


Reproducción de la conversación a partir del fichero .pcap 

Dentro del menú de telefonía [Telephony] de la pantalla principal pulsamos sobre la opción [VoIP calls] y observamos en la pantalla de la aplicación los paquetes obtenidos que forman parte de la comunicación IP a analizar.

La transmisión de la voz está asociada al protocolo RTP. Es posible conocer las características de la transmisión de audio filtrando el contenido del archivo .pcap con la palabra clave “rtp” tal y como muestra la figura anterior.

El campo donde se detalla las propiedades del códec utilizado es “tipo de carga útil” (Payload type): en el ejemplo mostrado tenemos: ITU-T G.711 PCMA (8), es decir usa el códec de audio G.711, estandarizado por ITU con una frecuencia de muestreo 8KHz y el algoritmo PCMA para compresión/descompresión.

Para conocer la duración de la conversación VoIP así como la referencia a los participantes y el protocolo utilizado simplemente debemos acceder a la opción [Telephony]>[VoIP Calls]:


Al seleccionar uno de las llamadas completadas, podremos escuchar su contenido pulsando sobre el botón [Player].


<>

miércoles, 21 de mayo de 2014

Servicio FTP en la gestión de copias de seguridad en PBXs

INTRODUCCIÓN

FTP son las siglas de “Protocolo de transferencia de ficheros”  (File Transfer Protocol) encargado de gestionar la subida/bajada de archivos hacia/desde un equipo remoto a un ordenador que ofrezca esta funcionalidad.


Según el modo de interacción con la aplicación cliente, el usuario encontrará dos alternativas disponibles:


  • Cliente FTP de consola: Todas las acciones son ejecutadas por medios de comandos escritos en una consola. El Sistema Operativo suele incluir una aplicación cliente para la comunicación con un servidor FTP.
  • Cliente FTP con interfaz gráfica: Aplicación más intuitiva en su manejo donde el desplazamiento dentro del árbol de directorios, local y remoto, así como la transferencia de archivos se lleva a cabo desde una ventana manejada por el ratón. Un ejemplo de este tipo de cliente es Filezilla.


El servicio FTP puede realizarse sobre una conexión segura (SSH). En este caso se habla de servicio SFTP y es característico en aquellas comunicaciones donde se busca dificultar la lectura de los datos enviados/recibidos (ficheros, contraseñas, nombres de usuario o identificadores de computadores) por otras personas conectadas a la red.
http://www.lee.org/reading/computers/sshd/sftp.png

Cliente FTP de consola

Aunque existe una gran variedad de aplicaciones destinadas a la comunicación con servidores FTP, el modo más inmediato de acceder a otra máquina para una tarea tan sencilla como subir o bajar un archivo sobre un equipo donde está corriendo el servidor de ficheros consiste en manejar las utilidades del propio SO.


Suponiendo un dispositivo remoto con el servicio FTP activado y el usuario “user” (contraseña: live) dado de alta en él. Si desde un ordenador donde se ejecuta el Sistema Operativo Linux, se escribe la orden:


alumno@ordenador:~$ sftp user@192.168.1.2


Solicitará la contraseña de user


user@192.168.1.2’s password:


Si se añade la contraseña correctamente (live), el indicativo del sistema cambiará informando que “alumno” se encuentra ahora dentro del servidor 192.168.1.2 con el perfil de “user”.


sftp>


Desde este momento podrá interactuar con el servidor a través de los comando reconocidos por el sistema. Es posible recurrir a la ayuda para tener más información:


sftp> help
help
Available commands:
bye                         Quit sftp
cd path                     Change remote directory to 'path'
chgrp grp path              Change group of file 'path' to 'grp'
chmod mode path             Change permissions of file 'path' to 'mode'
chown own path              Change owner of file 'path' to 'own'
df [-hi] [path]             Display statistics for current directory or
                           filesystem containing 'path'
exit                        Quit sftp
get [-Ppr] remote [local]   Download file
help                        Display this help text
lcd path                    Change local directory to 'path'
lls [ls-options [path]]     Display local directory listing
lmkdir path                 Create local directory
ln [-s] oldpath newpath     Link remote file (-s for symlink)
lpwd                        Print local working directory
ls [-1afhlnrSt] [path]      Display remote directory listing
lumask umask                Set local umask to 'umask'
mkdir path                  Create remote directory
progress                    Toggle display of progress meter
put [-Ppr] local [remote]   Upload file
pwd                         Display remote working directory
quit                        Quit sftp
rename oldpath newpath      Rename remote file
rm path                     Delete remote file
rmdir path                  Remove remote directory
symlink oldpath newpath     Symlink remote file
version                     Show SFTP version
!command                    Execute 'command' in local shell
!                           Escape to local shell
?                           Synonym for help


Los comandosbye, quit’ y ‘exit terminan la sesión establecida y abandonan el servidor.

Permisos de carpeta y archivo


Otra cuestión importante a considerar cuando hay que subir/bajar un archivo a una carpeta de otro ordenador es la relativa a los permisos que su Sistema Operativo tiene asignados al archivo, o carpeta, sobre el que se va a trabajar. A veces es necesario modificar manualmente estos atributos para conseguir una operación exitosa.
Cambiar los atributos de archivo/carpeta en linux puede hacer (como usuario 'root') de varias formas, por ejemplo:


# chmod 666 nombre_archivo Permite lectura/escritura a todos
# chmod 777 nombre_directorio Permite cualquier acción a todos


Buscar archivos en el árbol de directorios


# find / -name “mi_backup”
Busca fichero/directorio que contenga cadena desde el directorio raíz del árbol de directorios


Ayuda - Xorcom Rapid Live CD: Directorio donde son guardadas las copias de seguridad (backups) de los archivos de configuración:


/live/cow/var/lib/asterisk/gui_backups

Nota: El directorio gui_backups es creado la primera vez que la interfaz ‘asterisk-gui’ ejecuta el módulo ‘backup’.