jueves, 25 de septiembre de 2014

Cifrado del home con LUKS.

¿Qué es LUKS?

Linux Unified Key Setup-on-disk-format (LUKS), es un estándar de cifrado para particiones en Linux. Esto hace que además de facilitar la compatibilidad entre las distribuciones, también proporciona una gestión segura de contraseñas para múltiples usuarios (aunque en este caso lo único que haremos será cifrar el /home completamente). 

El tener cifrados nuestros datos es particularmente importante cuando se trata de portatils y medios extraibles (pendrives por ejemplo)

¿Qué hace?
  
  • Cifra los dispositivos por bloques enteros, lo cual lo convierte en idoneo para proteger nuestros dispositivos móviles.
  • Utiliza el subsistema del kernel para mapeo de dispositivos.
  • Proporciona multiples algoritmos de cifrado, y nos provee un fortalecimiento de la password para protegernos contra ataques de diccionario.
  • Los dispositivos cifrados con LUKS contienen múltiples key-slots, lo que nos permite agregar llaves o frases de acceso de respaldo.

 
¿Cómo cifrar el home de manera sencilla?

Lo primero que vamos a hacer es un backup de nuestro home, lo podemos hacer con cp o con cualquier otra herramienta.

  # cp -a /home/* /homebackup

Ahora, vamos a proceder a cifrar el home, para ello usaremos la herramienta cryptsetup, que es con la cual cifraremos la partición donde se encuentra el home, en mi caso es /dev/sda3

  # cryptsetup -v --cipher aes-xts-plain64 -s 256 -h sha1 -i 1000 --use-urandom -y luksFormat /dev/sda3

Donde:
  • --cipher es el tipo de cifrado que usaremos, en este caso usamos el algoritmo AES con el modo de cifrado XTS (XEX-based tweaked-codebook mode with ciphertext stealing)
  • -s es el tamaño de la clave.
  • -h Hash con el cual se almacenará nuestra clave. A día de hoy es seguro usar SHA1. (Aunque en un futuro... https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1 )
  • -i Número de milisegundos para completar con el procesamiento de la contraseña.  
  • --use-urandom Fuente de aleatoriedad de la llave maestra para cifrar el volumen.
  • -y Modo LUKS.
Una vez tenemos cifrada nuestra partición, ejecutamos el comando:

  # cryptsetup luksOpen /dev/sda3 chome

Con esto haremos que se guarde la configuración. Posteriormente damos formato a nuestra nueva partición cifrada.

  # mkfs.ext4 /dev/mapper/chome

Ya solo nos quedará añadir a crypttab y modificar fstab con nuestra nueva configuración con respecto a nuestro /home.

En /etc/crypttab añadimos (Ojo, eso es en mi caso, vuestra partición puede estar en otra partición):
chome /dev/sda3 none luks,timeout=30 cipher=aes-xts-plain64,size=256

Y en /etc/fstab modificamos el "UUID=..." de la línea que se refiere a nuestro /home por /dev/mapper/chome:

/dev/mapper/chome   /home     ext4    rw,relatime,data=ordered   0 2


Ahora solo nos quedará, o bien reiniciar y probarlo y ver que se monta correctamente una vez descifrada la partición, o por el contrario montar la partición y restaurar el backup.

Por ejemplo, después de reiniciar, entramos con la cuenta de root y hacemos:

  # cp -av /homebackup/* /home/

Evidentemente, una vez tengamos todos nuestros archivos en nuestro /home cifrado y veamos que esta todo OK. Eliminamos /homebackup de forma segura (con la herramienta shred, por ejemplo).


miércoles, 22 de enero de 2014

Asterisk en Fedora

Asterisk es una aplicación software que proporciona las funcionalidades de una central telefónica PBX. Entre estas funcionalidades tenemos: buzón de voz, música en espera, transferencia de llamadas, envío de mensajes de voz a email, etcétera.

En primer lugar instalaremos asterisk y algunos sonidos en español que pondremos a la centralita.

# yum install asterisk asterisk-sounds-core-es asterisk-sounds-core-es-gsm


Una vez que tenemos instalado asterisk, para activar el servicio basta con hacer un

# systemctl asterisk start


y si queremos que se inicia cada vez que arranquemos nuestra máquina

# systemctl enable asterisk


Pero antes de hacer esto conviene configurar el servidor, asterisk es un mundo en cuanto a configuraciones, nosotros vamos a hacer una muy básica, para la cual solo editaremos los archivos de configuración sip.conf y extensions.conf, ambos se encuentran en /etc/asterisk/

- En el archivo sip.conf se crearan los usuarios que utilizaran conexiones SIP.

- En el archivo extensions.conf se encontraran los planes de marcado (Dialplan) que asignaremos a cada usuario, estos planes de marcado se usan para gestionar las llamadas a extensiones, este archivo hace que asterisk se comporte como un conmutador.

Para añadir un usuario SIP. Añadimos al archivo de configuracion sip.conf las siguientes lineas:

[1000]                    ;Username
type=friend          ;Permite recibir y realizar llamadas.
secret=password      ;Contraseña
callerid=miID      ;Identificador del usuario
qualify=yes           ;Comprobación si es alcanzable.
nat=yes                 ;Si se conecta a través de una red con NAT.
host=dynamic       ;Si su IP es variable.
canreinvite=no
context=helloworld ;El contexto en el plan de marcado de esta extension

Para añadir el contexto nos vamos  al archivo de configuración extensions.conf y añadimos las siguientes lineas (por ejemplo, el hola mundo :)):

[helloworld]
exten => _[1-3]X,1,Answer()                  ;Responde a una llamada que esta sonando
exten => _[1-3]X,2,Playback(/usr/share/asterisk/sounds/es/hello-world) ;Reproduce sobre un canal activo un sonido.
exten => _[1-3]X,3,Hangup()                  ;Cuelga un canal activo

La sintaxis que se usa para añadir un contexto es:
[contexto]
exten => extension,prioridad,Aplicación(funciones)

Para las extensiones se pueden y deben usar patrones, recuerda Traductores, Compiladores e Interpretes y Teoria de Automatas. :D
En el ejemplo que puse antes, la extensión _[1-3]X, quiere decir que si marcamos dos dígitos y el primer dígito empieza por 1,2 y 3, sonará el Hola Mundo. :)

* Cada vez que editéis algo en extensions.conf  para que se efectuen los cambios en asterisk, basta con abrir un prompt y hacer un dialplan reload. El comando reload es para reiniciar el servicio y se realicen incluido los cambios que se efectuado en sip.conf

# asterisk -r
asterisk*CLI> dialplan reload
asterisk*CLI> reload


 
Como he dicho, esto es solo un ejemplo, Asterisk tiene mil funciones más, ya que es una centralita software bastante completa.

Ya solo nos falta buscar un cliente y probarlo, para ello tenemos varios, por ejemplo en Linux tenemos Ekiga o Linphone entre otros, y para Android Zoiper, por ejemplo. Una vez estemos registrados en el sistema marcamos 15 (por ejemplo) y la centralita nos pondrá el sonido "Hola Mundo".