martes, 4 de noviembre de 2014

Paso a paso Asegurando el Acceso en Elastix

En muchas ocasiones nos vemos obligados a publicar nuestro servidor hacia ese mundo, lúgubre y lleno de malas personas :-P que conocemos como Internet, que  intentan (Y en muchos casos logran), violentar la seguridad de nuestro servidor de comunicaciones unificadas. Llevandonos al limite de reinstalar nuestro sistema, que nos deja con un muy mal sabor de boca.

Con estos sencillos pasos y recomendaciones, lograremos proteger un poco mas nuestros servidores.

Cambiar, claves de acceso web del usuario admin y del usuario root la linea de comandos.


Esto es vital para el funcionamiento del servidor, ya que en los pasos de instalación de Elastix, muchas veces por miedo de equivocarnos al escribir la contraseña utilizamos las clásicas claves del para el usuario root, como 123456 o root de igual manera para el usuario admin.

Una vez logueados en el sistema, procederemos con estos pasos para asegurar la conexión:

Para el usuario web admin:

  • cd /usr/bin
  • sqlite3 /var/www/db/acl.db "UPDATE acl_user SET md5_password = '`echo -n clavenueva|md5sum|cut -d ' ' -f 1`' WHERE name = 'admin'"
Con esto, estamos cambiando la clave del usuario web admin, por la que coloquemos en lugar del texto "clavenueva"

Para el usuario root del sistema:

  • passwd root
  • New UNIX password: (cuando ingresemos la nueva clave esta no vera reflejada)
  • Retype new UNIX password: (Digitamos nuevamente la clave)


¡Listo! Con estos pasos nos estamos asegurando, que le vamos a dar un poco mas de trabajo a los hackers o activistas informáticos que intenten ingresar a nuestro sistema desde la red de redes.

Asegurando ssh con un "doble pass", cambio de puerto del ssh

Con estos pasos lo que vamos a realizar es una doble login, con un usuario razo para ssh y la habilitación del su. Veamos:

Editar archivo para habilitar el su

  • vim /etc/pam.d/su

Descomentar la linea

  • #auth            required        pam_wheel.so use_uid

Debe quedar así:

  • auth            required        pam_wheel.so use_uid

Salvamos el archivo, con esto, estamos permitiendo el cambio de usuario, pero solo a los usuarios que pertenezcan al grupo wheel, por lo que debemos crear un usuario para tal fin:

  • adduser -G wheel -m -s /bin/bash usuarionuevo
  • passwd usuarionuevo
  • New UNIX password: (cuando ingresemos la nueva clave esta no vera reflejada)
  • Retype new UNIX password: (Digitamos nuevamente la clave)



Habiendo hecho esto, ya tenemos un usuario nuevo restringido que tiene permitido hacer el cambio a super usuario, ahora lo que debemos hacer es eliminar el acceso como root por ssh y para reforzar la seguridad cambiar nuestro puerto de conexión.

Eliminar acceso por consola al usuario root

  • vim /etc/ssh/sshd_config

Agregar las lineas

  • Port 30123
  • PermitRootLogin no

Salvar el archivo. 

Reiniciar el servicio

  • service sshd restart

Con estos estamos cambiando el default port del ssh (22), por alguno que no sea común les recomiendo para arriba de lo 30000.

Adicional ya no podremos utilizar el usuario root para loguearnos vía ssh, debemos utilizar el usuario que creamos en el paso anterior y agregamos al grupo wheel.

La mecánica del login por ssh quedaría de esta manera.

Si usamos el putty para conectarnos, se debe tomar en cuenta el numero de puerto insertado en el archivo sshd_config del paso tres.

login as: (usuario creado en el paso dos)
password: (clave dada al usuario creado en el paso dos)

Una vez dentro del sistema, comprobaremos que el usuario es limitado, a manera que no puede, crear o modificar archivos, obviamente no se recomienda que este usuario sea de dominio publico.

Ahora si deseamos tener control total de nuestro servidor debemos ingresar el comando:


~]$ su 
Password: (modificado en el paso uno)

Esto, son solo algunas practicas de seguridad, se puede obtener mucha información en Internet sobre la manera que se deben asignar estas claves y como las debe manjar los administradores de la red.

Sin mas por el momento, me despido esperando que le sea útil la información.

Cualquier consulta o duda pueden hacerla llegar a mi correo gabofuentesm@gmail.com


saludos!!!









martes, 29 de julio de 2014

Cambio de clave usuario root ELASTIX

Muchas veces, nos topamos equipos que no hemos configurado o bien no, nos recordamos la clave de acceso para el usuario root por consola, para esto casos, lo que tenemos que seguir son tres sencillos pasos para volver a tener control total, sobre la centralita.

Esto lo debemos realizar físicamente, frente al servidor.

1. Acceder al modo avanzado del sistema. (interactivo)

Rápidamente y después de que aparezca la primera pantalla de inicio de Elastix, presionamos cualquier tecla para entrar al menú.

Presionamos la tecla “e” para editar un dato necesario.

2. Entrar al modo Básico.

Luego de presionar “e”, aparece una pantalla con tres opciones, escoger la que termina en “/LogVol000” con las flechas del teclado y presionar la tecla “e”
Nos debe aparecer algo como esto
<0/LogVol00
Debemos dar un espacio, con la barra espaciadora y escribir “single” (sin las comillas)
Debe verse parecido a esto:
<0/LogVol00 single
No debe verse asi:
<0/LogVol00single
Una vez escrito presionamos la tecla enter y nos devuelve a la pantalla anterior, solo que esta vez notamos la letra “s” con el símbolo “->” al final de la línea: s->.
Ahora, sin tocar nada presionamos la tecla “b” para reiniciar el servidor.

3. Reiniciar clave

Una vez reiniciado el servidor no debe pedir clave para el usuario, nos debe salir algo como esto:
sh-3.2#_
Si es así, lo estamos haciendo bien.
Ahora usamos el comando passwd root
Después de presionar enter el sistema nos indica que, ingresemos la nueva clave, una vez que la hayamos digitado y el sistema la acepta,
debemos volver a digitarla para terminar de realizar el cambio.
Una vez hecho esto, usamos la el comando reboot o init 6 para reiniciar y loguearnos con root utilizando la nueva clave
Y listo, eso seria todo.

No olviden escribir sus dudad y comentarios al correo:


gabofuentesm@gmail.com

jueves, 10 de julio de 2014

Como crear contexto para salida en E1.

Supongamos que acabamos de recibir nuestro E1 físico desde nuestro ISP (desde Costa Rica, ICE), con los 30 canales y 1 de señalización.


En este E1 tenemos una multinumeracion de 4. P.ej:

  • 90900000 (Principal)
  • 90900001
  • 90900002
  • 90900003
  • 90900004

Lo que queremos es que,  al efectuar la llamada desde X extensión se refleje el número 90900004 y no el principal, para este fin lo que debemos crear es un contexto y asignarlo a la extensión deseada.

Manos a la obra

1.Crear troncal en la web de elastix:


*Lo resaltado en amarillo es importante tenerlo en cuenta, ya que con esto le indicamos al sistema donde estamos conectando el E1, en caso de que tengamos una tarjeta con dos o más puertos.

2.Averiguar en qué posición quedo la trocal que acabamos de crear en el archivo extensions_additional.conf ubicado en  /etc/asterisk/ vim extensions_additional.conf

Yo lo edito normalmente con vim:
vim /etc/asterisk/extensions_additional.conf
El archivo es algo extenso pero lo que nos interesa esta al principio del mismo +o-, adjunto captura, para darnos una idea:

Con esto nos damos cuenta, que el sistema asigna la posición  15 a la troncal DAHDI q creamos en el g0, ¿Recuerdan?


3.Con este dato en mano, procedemos a crear el contexto
  • Una vez logueado como root nos dirigimos por el cli (con putty), al directorio 

cd /etc/asterisk

  • Creamos un archivo en el que se creara el contexto, donde “NOMBRE” será el nombre del nuevo contexto

touch contexto_NOMBRE.conf
  • Ingresar al archivo recién creado

vim contexto_NOMBRE.conf
  • Incluir la configuración del contexto en el archivo:

[from-NOMBRE]
include => from-internal-xfer-NOMBRE
include => bad-number

[from-internal-xfer-NOMBRE]
include => from-internal-custom
include => parkedcalls
include => ext-fax
include => ext-local-confirm
include => findmefollow-ringallv2
include => from-internal-additional-NOMBRE
exten => s,1,Macro(hangupcall)
exten => h,1,Macro(hangupcall)

#include extensions_additional.conf

[outbound-allroutes-NOMBRE]
include => outbound-allroutes-custom
include => outrt-003-NOMBRE
exten => foo,1,Noop(bar)

; end of [outbound-allroutes-NOMBRE]

[outrt-003-NOMBRE]
include => outrt-003-Span3-custom
exten => _9.,1,Macro(user-callerid,SKIPTTL,)
exten => _9.,n,Set(_NODEST=)
exten => _9.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _9.,n,Macro(dialout-trunk,15,${EXTEN:1},,)
exten => _9.,n,Macro(outisbusy,)

; end of [outrt-003-NOMBRE]

[from-internal-additional-NOMBRE]
include => from-internal-additional-custom
include => ext-meetme
include => app-blacklist
include => ext-queues
include => app-speeddial
include => app-languages
include => app-calltrace
include => app-directory
include => app-echo-test
include => app-speakextennum
include => app-speakingclock
include => app-fmf-toggle
include => ext-findmefollow
include => fmgrps
include => ext-group
include => grps
include => app-cf-busy-off
include => app-cf-busy-off-any
include => app-cf-busy-on
include => app-cf-off
include => app-cf-off-any
include => app-cf-on
include => app-cf-unavailable-off
include => app-cf-unavailable-on
include => app-dialvm
include => app-vmmain
include => app-dnd-off
include => app-dnd-on
include => app-dnd-toggle
include => ext-dnd-hints
include => app-callwaiting-cwoff
include => app-callwaiting-cwon
include => app-recordings
include => app-pbdirectory
include => vmblast-grp
include => ext-paging
include => app-userlogonoff
include => app-pickup
include => app-zapbarge
include => app-chanspy
include => ext-test
include => ext-local
include => outbound-allroutes-NOMBRE
exten => h,1,Hangup

Notemos, que la palabra NOMBRE se repite en varias partes del archivo esta debe ser sustituida por el nombre que se le dé al contexto y debe ser exactamente igual.

En la parte del archivo:

[outrt-003-NOMBRE]
include => outrt-003-Span3-custom
exten => _9.,1,Macro(user-callerid,SKIPTTL,)
exten => _9.,n,Set(_NODEST=)
exten => _9.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _9.,n,Macro(dialout-trunk,15,${EXTEN:1},,)
exten => _9.,n,Macro(outisbusy,)

Para entender un poco mejor, con estos datos, estamos indicando en el contexto que las  llamadas que salgan o inicien con un 9, tomen la troncal numero 15 (¿la recuerdan?). Y con esto estamos utilizando el número 90900004 de ID de salida o reflejo de llamada.

4.Salvamos el archivo (tecla ctrl + C : x! y enter)

5.Una vez de nuevo en cli, creamos otro archivo:

  • cd /etc/asterisk
  • touch extensions_contextos.conf
  • vim extensions_contextos.conf
  • Realizamos el include en el archivo del contexto creado. Img:

  • Salvamos el archivo (tecla ctrl + C : x! y enter)

6.Realizar el include del archivo extensions_contextos.conf en extensions_custom.conf

  • cd /etc/asterisk
  • vim extensions_custom.conf
  • escribir en el archivo #include extensions_contextos.conf  imagen de ejemplo:

  • Salvamos el archivo (tecla ctrl + C : x! y enter)

7.Recargamos el dialplan.
  • asterisk –rx “dialplan reload”
8.Asignamos el nombre del contexto a nuestras extensiones desde la web de elastix.

Noten que el from no se modifica solo lo que esta después del guion, y lo que se agrega es solo el nombre del contexto NO contexto_.

Aceptamos y aplicamos, todo listo, así estaremos reflejando el numero 90900004 desde las extensión en las que modifiquemos el contexto.

Esta configuración puede llegar a ser útil en caso de:
Necesitemos asignar un numero distinta a un departamento en especifico.

  • Que sea un condominio y se necesite asignar un numero por casa /condominio.
  • Que en una empresa se deba asignar un numero saliente a algún proyecto.
  • Que decidamos prestar nuestro E1 como servicio a terceros.


No olviden escribir sus comentarios o dudas a gabofuentesm@gmail.com

saludos!











lunes, 26 de mayo de 2014

Configuración paso a paso buzón de voz en Elastix.

El buzón de voz es un sistema centralizado de manejo de mensajes telefónicos para un pequeño o gran grupo de personas.
Permite a los usuarios recibir, almacenar y gestionar mensajes de voz de las personas que le llaman cuando se encuentra ausente o con la línea ocupada.

Los buzones de voz se han convertido en una funcionalidad siempre presente en los sistemas telefónicos de casi todas las compañías.
Están disponibles en sistemas de telefonía fija, móvil y en aplicaciones de software como Elastix y muchos otros.

Manos a la obra.

Una vez creada la extensión en nuestro sistema, debemos habilitar la opción de “Voicemail & Directory” la cual debe quedar de la siguiente manera:

Con esta  configuración ya tendremos habilitada la opción en la extensión de correo de voz, detallo las opciones relevantes a continuación:


Status                                              Acá tenemos la  opción de habilitar /deshabilitar la posibilidad de          buzón de voz a nuestra extensión.
Voicemail Password                      En esta opción definimos la clave que será utilizada por el usuario para          escuchar sus mensajes de voz propiamente desde el teléfono digitando          el código * 97. (Es altamente recomendable que esta contraseña sea la          misma del usuario web si el usuario cuenta con este y obviamente que            sea numérica)
Email Address                              Con esta opción tenemos la posibilidad de notificación a nuestro correo         electrónico.
Email Attachment                        Junto con la opción anterior si llegamos a habilitar esta casilla, tenemos           la posibilidad que el sistema nos haga llegar a nuestro correo                         electrónico, el mensaje recibido en formato WAV.

Con esto ya tendríamos la extensión habilitada para recibir mensajes de voz.


Ahora bien, si lo que necesitamos, es un buzón de voz general (para varios usuarios o departamento), debemos crear una extensión y habilitar las opciones anteriores.

Debemos tener presente, que como esta opción ya no es personal, es un buzón por ejemplo para el departamento de ventas, esto lo recalco porque el código de la funcionalidad será *98, una vez ingresado desde nuestro teléfono el sistema nos pedirá primero el buzón este va a ser la extensión que hayamos creado, la clave será la que hayamos asignado.

Con esta opción se nos abre una ventana de posibilidad, cito algunas ideas:

·         En el uso de,  Day / Night Mode Control:    Para habilitar el correo de voz, solo en     horarios que nadie esté disponible para contestar la llamada.

·         En caso de,  por decisión del negocio por ejemplo se decida cerrar la línea, pero se pretenda brindar/ devolver la llamada por alguna razón, con esto se logra que el llamante tenga la opción de dejar un mensaje con sus datos de contacto.   

·         Como opción, cuando por ejemplo, la llamada está timbrando en una cola de llamada y esta no es contestada, se puede hacer el desvió al buzón de voz.


·         Como opción dentro de un IVR.


Las opciones son muchas, nada más identificar nuestra necesidad.

Si tienen consultas o recomendaciones, hacerlas llegar al correo:















jueves, 22 de mayo de 2014

TDM2400P Elastix


******************************************************************************************************************************************************************

Para que las llamadas corten en tarjetas analogas en casos donde la llamada se queda "pegada" modificar el archivo: vim /etc/asterisk/chan_dahdi.conf

agregar las lineas:

busydetect=yes
busycount=3


Ejemplo de archivo modificado:


[trunkgroups]

[channels]
context=from-pstn
signalling=fxs_ks
rxwink=300              ; Atlas seems to use long (250ms) winks
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=no
faxdetect=incoming
echotraining=800
rxgain=0.0
txgain=0.0
callgroup=1
pickupgroup=1
**busydetect=yes agregar linea
**busycount=3    agregar linea


;Uncomment these lines if you have problems with the disconection of your analog lines
;busydetect=yes
;busycount=3


immediate=no

#include dahdi-channels.conf
#include chan_dahdi_additional.conf

Luego debemos hacer un amportal stop /amportal start


Otro comando importante para remediar la situacion de manera inmediata o emergencia:

hangup request DAHDI/4-1 Probado en la version: | elastix 2.6.18 | asterisk 1.8.7.0 | dahdi 2.4.1.2 |
(El valor DAHDI/4-1, es la variable de la llamada pegada, este comando se corre en cli de asterisk)

******************************************************************************************************************************************************************

Cuando se crea una troncal en la web de elastix y se desea con la que con la ruta saliente asignar uno o mas numeros distintos.


Para crear y agrupar trocales salientes con tarjetas analogas se debe modificar el archivo: vim /etc/asterisk/dahdi-channels.conf

Cuando se crea una troncal en la web de elastix y se desea con la ruta saliente asignar uno o mas numeros distintos.

; your manual changes will be LOST.
; Dahdi Channels Configurations (chan_dahdi.conf)
;
; This is not intended to be a complete chan_dahdi.conf. Rather, it is intended
; to be #include-d by /etc/chan_dahdi.conf that will include the global settings
;

; Span 1: WCTDM/0 "Wildcard TDM2400P Board 1" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0 ;este valor sirve para identificar el puerto FXO en el grupo
context=from-pstn
channel => 1 ;este valor debe coincidir con el puerto de nuestra tarjeta analoga
callerid=
group=
context=default

;;; line="2 WCTDM/0/1 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0                 ;por ejemplo estos dos puertos los vamos unir por decirlo de una manera en el grupo 0
context=from-pstn
channel => 2            ;en este ejemplo el canal 1 y 2 de nuestra tarjeta analoga se estan vinculando al grupo 0, con esto logramos sacar llamadas al exterior desde un mismo contexto de llamada
callerid=
group=
context=default

;;; line="3 WCTDM/0/2 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=2                 ;con este ejemplo se esta asignando el puerto 3 (channel => 3) al grupo 2, con esto se logra que el numero reflejo sea el de la linea externa que conectemos al puerto 3
context=from-pstn
channel => 3
callerid=
group=
context=default


******************************************************************************************************************************************************************

En caso de que debamos modificar /requerir la ruta de los numeros entrantes y nuestro proveedor no de datos del did en la linea debemos modificar el archivo: vim /etc/asterisk/dahdi-channels.conf

Modificar el contexto, en vez de from-pstn debe quedar from-zaptel

Ejemplo configuracion original:

; Autogenerated by /usr/sbin/dahdi_genconf on Tue May 20 00:35:50 2014
; If you edit this file and execute /usr/sbin/dahdi_genconf again,
; your manual changes will be LOST.
; Dahdi Channels Configurations (chan_dahdi.conf)
;
; This is not intended to be a complete chan_dahdi.conf. Rather, it is intended
; to be #include-d by /etc/chan_dahdi.conf that will include the global settings
;

; Span 1: WCTDM/0 "Wildcard TDM2400P Board 1" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 1
callerid=
group=
context=default

Ejemplo archivo modificado:

; Autogenerated by /usr/sbin/dahdi_genconf on Tue May 20 00:35:50 2014
; If you edit this file and execute /usr/sbin/dahdi_genconf again,
; your manual changes will be LOST.
; Dahdi Channels Configurations (chan_dahdi.conf)
;
; This is not intended to be a complete chan_dahdi.conf. Rather, it is intended
; to be #include-d by /etc/chan_dahdi.conf that will include the global settings
;

; Span 1: WCTDM/0 "Wildcard TDM2400P Board 1" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-zaptel
channel => 1
callerid=
group=
context=default


Una vez modificado y guardado el archivo nos dirigimos a la web de elastix:

Zap Channel DIDs=>Add Channel

Rellenamos los datos necesarios:

Channel: En este campo debemos ingresar el identificador del pruerto en nuestra tarjeta ya 1,2,3,4, segun donde hayamos conectado nuestra linea analoga.
Description: Este campo es util para identificar el Zap Channel.
DID: Aqui debemos colocar nuestro numero telefonico asignado por el ISP de la linea telefonica. Ej: 555555555
Aceptamos y aplicamos los cambios en nuestra web.

Nos dirigimos a la opcion Inbound Routes=>Add Incoming Route:

Rellenamos los datos

Description: Descripcion del destino de la llamada entrante.
DID Number: Este campo de ser igual al DID del Zap Channel que acabamos de crear. Ej: 555555555
CID name prefix: Este campo se utiliza para alerta al llamante. si colocamos ventas esto saldra en la pantalla del softphone o telefono VoIP.

Set Destination Aca fijamos el destino de la llamada entrante.

aceptamos y aplicamos la configuracion.

Esta configuracion se realiza por linea instalada en nuestra tarjeta analoga.


******************************************************************************************************************************************************************