viernes, 24 de enero de 2014

Angelucho's interview

Recientemente, Angel Pablo Avilés aka Angelucho (@_Angelucho_), el creador del blog que lleva su mismo nombre, fue entrevistado en el pasado ESET Security Forum, en su segunda edición.

Como ya sabréis la mayoría, Angelucho se ha hecho famoso por explicar el mundo del internet de una forma que absolutamente todas las personas, independientemente de su edad, puedan entenderlo. Ahí tenemos los ejemplos de los abuelos internautas, como por ejemplo, Longinos (padre).

¿Qué más queréis que cuente? Aquí os dejo el pequeño vídeo de 5 minutos:

miércoles, 22 de enero de 2014

Windows camello

Como todos sabemos (o deberíamos) los sistemas basados en Unix, Linux, etc son case-sensitive. Es decir: son sensibles a las mayúsculas y a las minúsculas. También sabemos muy bien que los sistemas Windows no lo son, es decir, son case-insensitive. Por lo que aunque un fichero o ejecutable se llame

msconfig.exe

funcionará igual si vas a una consola de símbolo de sistema y lo ejecutas como

Ejecutando msconfig en el cmd con mayúsculas, minúsculas...
Ejecutando msconfig en el cmd con mayúsculas, minúsculas...
Por lo tanto, como se puede ver, no da ningún mensaje de error ya sea porque escriba msconfig todo en minúsuclas, o todo en mayúsculas o en formato camello. Para el que no sepa qué es el formato camello, que en el ejemplo lo he exagerado mucho,  es lo que en programación de java se hace a la hora de escribir las variables que contienen más de una palabra. No sólo las variables, también los métodos. Un ejemplo rápido que me desvío de lo que quería mostrar:

int elNumeroDeLaCasaDeAlguien;

ó

public void getElNumeroDeLaCasaDeAlguien();

Muy bien. Pero: sabíais que aunque el nombre del fichero esté escrito en minúsculas, el sistema de búsqueda del botón inicio del Wndows 7 te lo ofrece según lo estás escribiendo?

Buscando msconfig alternando el tipo de letra
Buscando msconfig alternando el tipo de letra
pero, en C:\Windows\System32\:

c:\Windows\System32\msconfig
c:\Windows\System32\msconfig

Cosa curiosa. También lo es que los nombres de las imágenes que construyen este post no les suceda. ¿Verdad?

lunes, 20 de enero de 2014

Mozilla Firefox: checkeador de actualizaciones

Estaba haciendo algunas cosillas con el Firefox, y resulta que me ha saltado esta página:

Mozilla Firefox: plug-ins obsoletos y potencialmente vulnerables
Mozilla Firefox: plug-ins obsoletos y potencialmente vulnerables
Como podréis observar, me está advirtiendo de que tengo una serie de plugins que están desactualizados o que pueden ser peligrosos. Alguno de ellos son peligrosos porque se sabe que existen exploits para los mismos. Y seguro que lleva mucho, mucho tiempo implementado, pero me acabo de dar cuenta ahora. Como tampoco es que lo utilice mucho...

No está nada mal que podamos verlo. También da miedo ya que los de Mozilla saben qué tienes instalado, al menos como plugin. Y si ese plugin está puesto, significa que seguro, seguro que tienes el programa asociado al mismo. Por ejemplo: VLC. Si estos muchachos de Firefox saben qué plugins son: ¿qué impediría a un atacante saberlo también? Es más: poniéndonos en el peor de los casos, montarse un sistema para poder atacar las distintas instalaciones, de por ejemplo, java. Teniendo en cuenta las noticias del año pasado  con respecto a los distintos 0 days que salieron. O, ¿fue en el 2012? Bueno. Pero seguro que me entendéis. 

El enlace para comprobarlo es este: https://www.mozilla.org/es-ES/plugincheck/

En cambio, en el Chrome, tenemos otra forma de ver los plugins: chrome://plugins. En cambio, según he podido ver, no te dice si está actualizado o no. Pero sí te da información sobre la URL en la que se encuentra la DLL asociada, alguna que otra descripción, los tipos de fichero (en formato MIME) que es capaz de abrir / utilizar. 

Para usarlo como "herramienta" de advertencia de actualizaciones, al menos para algunas, no estará del todo mal. Al menos como una revisión de emergencia o rápida no estará nada mal. 

sábado, 11 de enero de 2014

Entradas de la RootedCon 2014 abiertas en breve

Hola a todos!!

Hace unas horas han publicado en la lista de la RootedCon información muy importante para este año, entre otras cosas, que a partir de la semana de que viene se abrirá el registro para poder comprar las entradas para el evento de este año 2014:

Os anunciamos que el lunes 13 de enero, se abrirá el formulario de registro para adquirir vuestras entradas para la próxima edición de Rooted CON, la quinta, cuyas fechas serán 6, 7 y 8 de Marzo.
A continuación presentamos los tramos de entradas, según tipos (EstudianteProfesionalProfesional con Descuento):
TramoEstudiantesEstándarCon descuento
13 Enero 2014 → 31 Enero 201440€90€80€
1 Febrero 2014 → 13 Febrero 201460€120€110€
14 Febrero 2014 → 28 Febrero 201480€160€140€
01 Marzo 2014 → 05 Marzo 2014140€320€280€
Venta en puerta180€400€340€
Os recomendamos que reviséis con calma las condiciones generales puesto que desde el año pasado se añadieron una serie de restricciones para la adquisición de entradas con descuento de estudiante. En concreto, solamente aceptaremos registros como estudiante de personas que NO estén en activo en forma alguna y que acrediten su condición de estudiante con la matrícula vigente para este curso (ojo, de ninguna manera vamos a aceptar carnets de estudiante). Y, sobre todo, menos todavía vamos a emitir facturas a gente que se haya registrado como estudiante.
Como novedad este año, y tras multitud de peticiones por vuestra parte, será posible el pago de la entrada durante el propio proceso de registro mediante tarjeta de crédito.
http://www.rootedcon.es/index.php/fechas-para-la-apertura-del-registro-y-compra-de-entradas-para-rooted-con-2014/ 

Espero veros allí!!

martes, 7 de enero de 2014

Formación de peritajes

Hace unos días desde Conexión Inversa, Pedro Sánchez (@ConexionInversa) nos informaba de que tanto él como Lorenzo Martínez (@lawait), con su empresa Securizame, habían montado junto a muchos otros un curso de formación para ampliar conocimientos en los que a forense y peritaje se refiere.

Este curso estará formado por 8 módulos de 6 horas cada uno de ellos, a razón de 2 horas diarias, 3 días a la semana. Un copypaste del contenido del curso, enlazado arriba, sería este:

MODULO I – Delitos Informáticos y Criminalidad en Internet – 3 horas – Profesor: Álvaro Andrade
  • Terminología a emplear
  • Introducción a los delitos informáticos y la criminalidad en Internet
  • Conceptualización y Clasificación de los Delitos Informáticos.
  • Organismos Internacionales de Persecución y Represión del Cibercrimen.
  • Análisis de la legislación internacional.
  • Tipos de delitos reconocidos por la ONU.
  • Análisis técnico jurídico sobre “la Flagrancia” en Delitos Informáticos.
  • Jurisprudencia internacional. (Cómo encontrarla en segundos)
MODULO II – Informática Forense y Evidencia Digital – 3 horas – Profesor:  Álvaro Andrade
  • Terminología a emplear
  • Introducción a la Informática Forense
  • Evidencia digital Vs. Evidencia Física
  • Peritaje Judicial y Extra Judicial
  • Procedimientos especiales para pericias informáticas
  • Evidencia Digital
  • Características de la Evidencia Digital
  • Reglas de la Evidencia Digital para procesos judiciales
  • Cadena de custodia y Cumplimiento en materia de evidencia Digital
  • Principios Periciales
  • Metodología de un análisis de informática forense
  • Herramientas de Informática forense
  • Elaboración del Dictamen Pericial
 MODULO III – Análisis forense en Windows  - 6 horas – Profesor: Juan Garrido
  • Sistema operativo Windows
  • Diferencias entre Windows 7 y Windows 8
  • Tratamiento de las evidencias
  • Análisis de navegación
  • Análisis temporal de la información
  • Búsquedas basadas en firmas
  • Análisis de la papelera de reciclaje
  • El registro del sistema
  • Prefetching en sistemas Windows
  • Copias en la sombra. Diferencias entre Windows 7 y Windows 8
  • Análisis Forense de procesos
  • Procesos en Windows
  • Tipos de cuentas en Windows
  • Análisis y correlación de procesos
  • Relación de procesos, puertos y conexiones realizadas
  • Análisis Forense de logs
  • Las auditorías de los sistemas
  • Análisis de registros
  • Consolidación del logs
  • Correlación y forense
Módulo IV: Análisis de sistema de ficheros NTFS, Los ficheros  del registro de Windows. Análisis de la memoria en Windows. Indicadores de compromiso  – 6 horas – Profesor: Pedro Sánchez
  • Estructura interna de NTFS
  • Estructura de una partición
  • La tabla Maestra de Archivos (MFT)
  • Cabeceras e identificadores
  • Los Metadatos de ficheros
  • Ficheros de atributos $MFT, $LogFile, $Volume
  • Ficheros Indice
  • Cómo extraer evidencias de la tabla maestra de archivos
  • Herramientas de extracción
  • Recuperación de ficheros
  • Cómo crear una línea de tiempo (Timeline)
  • Ficheros persistentes de entradas de registro
  • Setupapi
  • setuperr.log
  • miglog.xml
  • PreGatherPnPList.log
  • Fase de configuración en línea
  • Cómo extraer evidencias de información de dispositivos
  • Cómo obtener claves y datos del registro de Windows
  • La memoria en Windows
  • Arquitectura de la memoria en Intel 32 y 64
  • Cómo obtener la memoria RAM y fichero Pagefile.sys
  • Cómo extraer contraseñas de la memoria
  • Cómo analizar Malware utilizando la memoria
  • Cómo obtener un ejecutable o fichero de la memoria
  • Herramientas de extracción
  • Cómo automatizar los procesos de búsqueda en memoria
  • Indicadores de compromiso
  • Ataques APT, ejemplos reales
  • Cómo se desarrolla un indicador de compromiso
  • Cómo se aplica en la búsqueda de una intrusión
  • Ejemplos de indicadores de compromiso
  • Búsqueda de ataques APT utilizando indicadores de compromiso
  • Aplicando Indicadores a la memoria RAM y a dispositivos
  • Inteligencia
  • Modelos Open Source para la mitigación de ataques
Módulo V: Análisis Forense en Linux – 6 horas – Profesor: Lorenzo Martínez
  • Análisis Forense a entornos Linux
  • Distribuciones Live Forenses
  • Forense de la memoria RAM
  • Análisis forense de sistemas de ficheros
  • Análisis de la memoria SWAP
  • Líneas de tiempo
  • Recuperación avanzada de ficheros
  • Recuperación de elementos clave
  • Cómo descubrir malware pasivo en el sistema
  • Caso práctico: escenario de un ataque
Módulo VI: Logs, Rootkits e Ingeniería Inversa – 6 horas – Profesor: Yago Jesus
  • Detección de patrones sospechosos
  • Análisis de logs
  • Correlación de logs
  • Integridad del sistema (binarios, kernel, procesos)
  • Obtención de evidencias
  • Rootkits
  • Fundamentos sobre rootkits
  • Tipos de rootkits
  • Detección de rootkits
  • Ingeniería inversa
  • Fundamentos de ingeniería inversa
  • Debuggers
  • Análisis estático de ejecutables
  • Análisis dinámico de ejecutables
Módulo VII: Análisis forense en red y Antiforense -6 horas – Profesor: Giovanni Cruz
  • Análisis Forense en red
  • Definición
  • Tipos de Captura
  • Análisis de Ataques de fuga de información
  • AntiForense
  • Definición
  • Retos del análisis
  • Principales técnicas
Módulo VIII: Análisis forense en IOS – 6 horas – Profesor: Jaime Andrés Restrepo
  • Introducción  – ¿Por qué hacer análisis forense digital a un móvil?
  • Adquiriendo la evidencia digital
  • Adquisición desde un Backup de iTunes
  • Adquisición de copia bit a bit
  • Adquisición de copia lógica
  • Análisis de la evidencia adquirida
  • Análisis de Contactos, Llamadas, Mail, Fotos y Videos, Mensajes de Texto, Notas, Calendario de Eventos, Navegación desde Safari, Spotlight, Mapas, Notas de Voz, Preferencias del Sistema, Logs del Sistema, Diccionarios Dinámicos, Aplicaciones Third Party, Información Eliminada
  • Análisis Con Herramientas libres o gratuitas
  • Análisis Con Herramientas Comerciales
  • Recomendaciones adicionales para la entrega del informe
 Módulo IX: Análisis Forense en Android – 6 horas – Profesor: Luis Delgado
  • Plataforma Android
  • Arquitectura y modelo de seguridad
  • ROM y BootLoaders
  • Android SDK y ADB
  • Emuladores
  • Acceso al dispositivo
  • Entornos preconfigurados
  • Consideraciones iniciales
  • Análisis del sistema de ficheros (FAT & YAFFS)
  • Características principales
  • Directorios y ficheros de interés
  • Evasión de restricciones de acceso
  • Técnicas de análisis lógico
  • Análisis de la SDCard
  • Análisis de backups
  • Elevación de privilegios
  • Creación de imágenes de interés
  • Técnicas forense tradicionales
  • Otras técnicas de análisis
  • Herramientas comerciales
  • Reversing de aplicaciones
El curso, además de dar un módulo cada uno de ellos, también lo imparten, entre otros, Juanillo aka Sileverhack aka @tr1ana, Álvaro Andrade (@aandradex), Yago Jesús (@yjesus), Giovanni Cruz, Jaime Andrés Restrepo (@dragonjar) y Luis Delgado (@ldelgadoj).

Con los aquí presentes, y el contenido, tiene muy buena pinta y son cosas cuyo conocimiento conviene mejorar. De hecho, a ver si me pongo las pilas y antes de que comience soy capaz de publicar (volviendo a jugar) una cosa que tenía montada con Volatility y que lleva unos cuantos años ahí paralizada.

Por cierto: El sistema WebEx ya lo experimenté en su momento y cuando lo hice, no estaba nada mal. Este sistema está genial porque no dependes de tener que ir a un emplazamiento al salir de trabajar, después ir corriendo a coger el transporte público para volver a casa... En cuanto se sepan los horarios, podré ver si me puedo apuntar.

lunes, 6 de enero de 2014

Volviendo a configurar WPA y la red en Debían

Esta configuración, aunque básica, es de esas que se hacen apenas una vez por instalación y te olvidas. Como hacía tiempo que no tenía que ponerla, había cosas que no me acordaba cómo se indicaban en los ficheros correspondientes. Por lo que aquí voy a contar, lo más rápido posible, qué poner para que al menos funcione todo el tinglado. A tener en cuenta que algunas cosas a lo mejor sobran.

El fichero /etc/network/interfaces:

#auto fuerza a que se cargue al iniciar el sistema
auto lo
iface lo inet loopback

#allow-hotplug iniciliza la interfaz cuando el kernel detecta que se ha conectado la interfaz en caliente
allow-hotplug wlan0
auto wlan0

#quiero que el direccionamiento sea estático
iface wlan0 inet static
  addess 192.168.1.123
  netmask 255.255.255.0
  gateway 192.168.1.1
  wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

En realidad, después de la instalación, me había metido mucha más morralla, pero entre que no me acababa de gustar, que no me conectaba a la wifi, y que podía indicarle esos datos por otros medios, decidí comentarla. Con estas líneas, funciona bien.

Para más información (como por ejemplo, más configuraciones), podemos encontrarla este mismo enlace, buscando este fichero que estamos modificando.

Para la resolución de nombres, es decir, para los DNSs, puedes introducir los datos en el fichero /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Siempre tengo la duda de si es nameserver o nameservers. He puesto estas direcciones como podría haber puesto otras. Con esto debería de servir.

Ahora, vamos a modificar /etc/wpa_supplicant/wpa_supplicant.conf. Creo recordar que la primera vez que hice la configuración de wpa_supplicant estaba directamente en /etc/, pero viendo que puedes indicar dónde tiene que buscar el fichero, lo mismo da. Con tal de que el sistema sepa dónde cogerlo, no debería de importar mucho:

#Directorio donde se crearán los distintos sockets para cada una las interfaces de red que necesiten estas ocnfiguraciones:
ctrl_interface=/var/run/wpa_supplicant
#Grupo o GID de aquellos que quieras que puedan cambiar la configuración de la interaz. Por defecto (y si no se pone), será el de root. Podrías cambiarlo, por ejemplo, al nombre de grupo wheel.
ctrl_interface_group=0

network={
  ssid="nombreDeTuRed"
  scan_ssid=1
  proto=WPA
  key_mgmt=WPA-PSK
  psk="elChorroDeLaPassMásGrandeEnFormatoCamelloSiAsíLoDeseas"
}

En principio, teniendo esto cargado, debería de funcionar. Una forma de probarlo, y ver wpa_supplicant está funcionando, sería ejecutar esto:

wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf

Si se queja de que algún parámetro no está bien puesto, tendrás que mirarlo. En micaso eran alguno de las opciones del wpa_supplicant.conf que no existían o tenían un valor erroneo. Y me indicaban cuál era. A mi me está dando un aviso, pero sí me funciona la conexión:

ioctl[SIOCSIWENCODEEXT]

Sale dos veces. Pero, las pocas búsquedas que he hecho no me han ayudado mucho (también mucha perecitis, después de la comilona de hoy).

Aún así, si quieres más información sobre qué significa cada cosa, tenemos un ejemplo de fichero de configuración que está comentado.

En principio, esto ya funciona y está conectado al router / AP y a internet. Si haces ping hacia una dirección externa deberías de poder salir hacia afuera.

Con esto, ya tenemos una pequeña documentación para cuando dentro de unos pocos años volvamos a necesitarlo, poder tirar de aquí sin ningún problema.

sábado, 4 de enero de 2014

Pepelux's perl script

Como ya sabéis, he estado montando una FreePBX en una raspberry pi. Una de las cosas que tenía pendientes era pasar un script que Pepelux (Jose Luis Verdeguer, @pepeluxx) montó para la última Rooted (2013) y que analizaba la configuración del sistema. De esta forma, se podía saber si alguna de esas configuraciones era deseable que estuviese por defecto o no. En mi caso, he tenido que comentar dos líneas que son las que hacen referencia al netstat, porque, posiblemente, no existe esa librería para la arquitectura de la rasp.

Este es el estado en el que me he encontrado mi sistema:

Perl Pepelux Script: Estado actual del asterisk
Estado actual del asterisk
Por lo tanto, vamos a ir viendo cómo puedo ajustar los valores en la medida de lo posible.

Lo primero que he hecho ha sido crearme un usuario nuevo:

#useradd -G users -m -N paquitoelchocolatero
#passwd paquitoelchocolatero

Ahora, podremos acceder al sistema utilizando este usuario desde el servcio de ssh. Por si las moscas, asegúrate de que es así. Además, prueba que puedas elevar privilegios. ¿Funciona? Muy bien. En el caso de que no sea así... Ahora no se me ocurre la razón. En caso contrario, ahora serás root. Y, estando con este usuario, vas a tener que abrir con el editor nano el fichero /etc/ssh/sshd_conf

#nano /etc/ssh/sshd_conf

Busca la línea PermitRootLogin y cambia el estado de yes a no. Vamos a reiniciar el servicio, por lo que tus sesiones se van a cerrar:

#/etc/init.d/ssh restart

Ahora, podemos comprobar cómo el usuario root no es capaz de acceder al sistema. En cambio, paquitoelchocolatero sí que podrá entrar. Además, será capaz de elevar privilegios, por lo que podremos volver a ejecutar el script y el aviso sobre PermitRootLogin habrá desaparecido.

Ya puestos a manipular el servicio ssh, vamos a autorizar sólo las conexiones internas. Tendremos que descomentar ListenAddress (en mi caso, para IPv4) y ponerle un valor. Yo he puesto la misma IP que tiene la tarjeta de red. ¡Ojo! Si se hace mal podrías perder la conexión con el dispositivo y para solucionarlo acceder de forma local. Si no tienes una pantalla y un teclado conectados... Malo. Yo reiniciaría otra vez el servicio.

Ahora voy a arreglar el aviso que dice que los logs son propiedad de asterisk. Estos logs se buscan en /var/log/. Por lo tanto, visitando esta ruta, nos encontramos con que la carpeta que hace referencia a asterisk tiene tanto el usuario como el grupo pricipal asterisk. Lo que voy a hacer va a ser lanzar un cambio de dueño y de grupo recursivo para root.

#chown -R root asterisk/
#chgrp  -R root asterisk/

Eso sí,  mucho ojo porque, de momento, con esta forma dejará de dar la alerta de los propietarios de estos ficheros mientras que no reinicies el equipo. Después se vuelven a crear algunos con permisos de Asterisk.

Otro cambio que voy a hacer es eliminar la posibilidad de que se conecten "invitados". Por lo que seguiré el consejo del script y pondré el valor allowguest = no en el fichero /etc/asterisk/sip.conf. Pero, ¡ojo! Te dicen que no lo cambies, por lo que tendrás que hacer las modificaciones a través de la interfaz web. Habrá que ir a Settings --: Asterisk SIP Settings, y buscar Allow SIP Guests. Como de costumbre, habrá que guardar los cambios y aplicarlos con el botón rojo que aparecerá después de guardarlos. Por cierto: si estás con la distribución raspbx tendrás que hacer un cambio en el script:
  1. En mi distribución está buscando en un fichero que no es el que se espera. Habría que cambiar la apertura del fichero sip.conf al sip_general_additional.conf.
Si el script no encuentra el valor allowguest=no devolverá que está puesto a yes. Independientemente de si tiene asignado ese valor o si ni siquiera aparece dicha asignación.

Con respecto al useragent que dice que hay que cambiar, he hecho varias pruebas. Por no hacer más caótico todo esto, vamos a ver si puedo explicarlo rápido. Se puede añadir el parámetro desde la misma sección del Asterisk SIP Settings. Abajo del todo, puedes añadir otros valores. Ahí he puesto el parámetro useragent, con el valor que más me ha gustado. Ahora bien, nos encontraremos con que tenemos el parámetro repetido dos veces en el fichero sip_general_additional.conf. Podrías modificarlo, algo desaconsejado, porque cualquier cambio que apliques con el famoso botón rojo puede echarlo para atrás. No sirve quitar el valor que no deseamos, tarde o temprano, volverá.

Ahora voy a cambiar la configuración del AMI. Según he podido leer, las siglas AMI proceden de Asterisk Manager Interface. La entrada de mi búsqueda de la cual me he leído los dos primeros párrafos es esta. Lo que quería ver es si al desactivarlo, un softphone sigue funcionando, ya que esperaba que éste hiciese de cliente. Pero, editando /etc/asterisk/manager.conf:

FreePBX /etc/asterisk/manager.conf
FreePBX /etc/asterisk/manager.conf
...dicen que FreePBX (que es en lo que se sustenta nuestra distribución) tiene que tenerlo activado, por lo que poner el valor enabled = no no será una opción. Pero sí podremos cambiar las contraseñas por defecto. La primera contraseña la tendrás que cambiar desde Settings --> Advanced Settings. Ahí donde pone Asterisk Manager Password. Te recomiendo que hagas un backup de la instalación/configuración. Me ha dado una serie de problemas. Si cuando guardes el cambio (justo a la derecha del textbox donde introducirás la nueva contraseña), y después de darle al típico botón rojo de "apply changes", te diese algún error gordo indicándote de que no se puede hacer el cambio, como podría ser
WARNING[5297] security_events.c: Required IE '50' for security event type '12' not present
NOTICE[5297] manager.c: 127.0.0.1 failed to authenticate as 'admin'
hay una posible solución. A mi, después de varias pruebas, me ha funcionado lo siguiente:

  1. Cambiar a mano los ficheros /etc/amportal.conf y /etc/asterisk/extensions_additional.conf . 
  2. Busca el campo que tiene la contraseña amp111. Le tendrás que poner el mismo valor que se ha puesto en la interfaz web.
  3. Reiniciar el dispositivo.
  4. Para terminar, volver a la interfaz web y aplicar los cambios. 

Con respecto a la alerta de la versión, tengo malas noticias. Tendría que salir un dato entre paréntesis. Pero no sale nada. Eso es porque el error que nos salta sobre yum es que intenta lanzar un comando de un gestor de instalación de paquetes que no tenemos. Hay varias formas:

  • apt-cache showpkg freepbx : Esta es la que encontré por mi mismo. Pero no me servía muy bien porque tenía que hacer mucho scripting del que tengo muchas lagunas. 
  • apt-show-versions freepbx : Nuestra distribución no cuenta con este, por lo que también lo descarto. Los otros mostrados de apt no me gustaban. No me hace falta saber nada sobre los paquetes remotos.
  • aptitude versions freepbx : Casi: pero ese retorno de carro...
  • dpkg -s freepbx | grep Version | sed -e 's/Version: /''/g' : Este creo que sí que me va a servir. 
    • Obviando el sed: Nos devuelve una sóla línea que empezará por "Version: ".
    • El comando sed se encargará de reemplazar esa misma cadena por otra vacía. Aunque con las expresiones regulares se podría obviar esta última pipe.
Tendremos que editar el script, y en el contenido del método version(). Será el contenido de la función system(), con alguna de las opciones que acabo de describir. Después, habrá que acordarse de cambiar las expresiones regulares que hay dentro del while(). Me gustaría poder decir que he tenido suerte y que he conseguido que me guarde el resultado en el fichero, pero sale vacío si se hace desde perl. Por lo que no he podido ajustar este script a nuestra versión. Pero habiendo ejecutado el comando raspbx-upgrade, y apt-get update y apt-get upgrade, ya debería de estar actualizado.

[update]
Para el tema de la versión, tenemos este otro post.
[/update]

Ahora podríamos ponernos con los permisos para que sólo se pueda acceder al sistema desde la red interna. Ya habíamos solucionado el que se refiere al ssh, puesto que ya estábamos de paso en ese fichero De todas formas, tenemos un warning que más adelante veré cómo solucionar. 
  • Para el servidor web: tendremos que editar /etc/apache2/ports.conf y modificar la línea Listen 80 y ponerle Listen IP_DISPOSITIVO:80. Ejecuta /etc/init.d/apache2 restart.
  • Para el servicio de TFTP, tendremos que configurar dnsmasq. Es el servicio que está corriendo el pueto 69, que es el que utiliza TFTP. Si consigo configurarlo, os aviso.
  • Para Asterisk Manager tendremos que cambiar el valor que tiene bindaddr en el fichero /etc/asterisk/manager.conf por la dirección IP de tu dispositivo la dirección de loopback (para que nos entendamos: 127.0.0.1) o por localhost. Si pones la dirección IP, como por ejemplo, 192.168.1.123, la interfaz web te puede indicar que hay algún problema y no poder realizar algunos cambios. Que a lo mejor no pasa nada, pero a mi me ha dado problemas hasta que he puesto localhost.
  • Para Asterisk, tendremos que ir a Settings --> Advanced SIP Settings, y abajo del todo, pondremos un campo nuevo que se va a llamar dindaddr, cuyo valor será, tal y como hemos ido haciendo con los otros campos, la dirección IP de la interfaz de red. Acuérdate de guardar los cambios y aplicarlos con el botón rojo que te aparecerá una vez se han guardado los cambios.
Ahora mismo, el estado de la centralita, está bastante mejor que antes. Sí. Es muy mejorable. Pero bueno. Menos da una piedra.