lunes, 27 de abril de 2015

Autenticación con Pendrive en GNU/Linux Debian




Actualmente me estaba preguntando como lograr un poco más de seguridad en mi sistema de autenticación de GNU/Linux, pero a la vez dar un poco de versatilidad al asunto; llegado al caso, me planteé que un Pendrive debería almacenar los datos de mi usuario, y así, al insertar el pendrive en mi equipo, el sistema detecte que soy yo y me permita ingresar a mi cuenta; al principio me reía imaginándome lo loco que estaba (xd y sigo estando, gracias a Dios jajajaja), sin embargo, cuando me puse a investigar, me percaté de que en realidad ya existía un paquete nativo de GNU/Linux que me permitiera hacerlo; ahora bien, vamos a ver como hacerlo.

Lo primero ha sido buscar un poco sobre "pam-usb".
$sudo aptitude search pam-usb
Esto me permite conocer que existe un paquete llamado "libpam-usb", lo que me lleva directamente a leer la descripción del paquete.
$sudo aptitude show libpam-usb
PAM es un módulo para autenticación usando dispositivos USB; trabaja con cualquier módulo de autenticación como su, así como también cualquier manejador como GDM o KDM.
Aunque en la descripción del paquete se nos indica que podemos obtener mayor información en la URL www.pamusb.org/, vale acotar que he intentado ingresar varias veces y el Sitio Web parece no estar en funcionamiento.

Procedemos a instalar el paquete
$sudo aptitude install libpam-usb
Configuración

Luego de instalar el paquete, tenemos el poder, solo debemos saber usarlo, ya que si no lo configuramos, solo seremos un tonto con poder, y en mi experiencia personal, eso es más peligroso jajaja.
Primero, colocamos el pendrive en el equipo, es importante recalcar que teniendo este pendrive, tendriamos acceso ilimitado a la permisología del usuario que le configuremos, así que no les recomiendo dar la permisología del usuario root, (esto no sería muy sano).
Luego de haber insertado el pendrive en el equipo, usaremos el comando que nos permite añadir el dispositivo USB a la tabla de pamusb.
$sudo pamusb-conf --add-device Rait3-USB
Vale acotar que el primer pendrive con el que intenté, no lo detectó el módulo, la máquina lo montaba y el pendrive funcionaba correctamente, sin embargo el módulo no lo detectaba, (no todo es perfecto, ¿no?); la pregunta del siglo, ¿qué hice?, simple, cambié de pendrive y el siguiente si me proporcionó una salida como la siguiente.
$sudo pamusb-conf --add-device Rait3-USB
Please select the device you wish to add.
* Using "Kingston (136C0932618F)" (only option)
Which volume would you like to use for storing data ?
* Using "/dev/sdb1 (UUID: 37AD-8A2F)" (only option)
Name: Rait3-USB
Vendor: Kingston
Model: DataTraveler 2.0
Serial: 50E549XXXXXXXXXXXX815354
UUID: 37XX-XX2F
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.
Vale acotar que este comando debe utilizarse para cada pendrive que se desee utilizar.

Ahora procederemos a configurar el usuario que hará uso de ese dispositivo en su método de autenticación.
$ sudo pamusb-conf --add-user Rait3
Which device would you like to use for authentication ?
* Using "myusb" (only option)
User        : Rait3
Device        : Rait3-USB
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.
Ahora ya está configurado para que el usuario Rait3 inicie sesión en este equipo, sin embargo, procederé a verificar que eso funcione, para ello hacemos uso del siguiente comando.
$sudo pamusb-check Rait3
*Authentication request for user "Rait3" (pamusb-check)
*Device "Rait3-USB" is connected (good).
*Performing one time pad verification...
*Regenerating new pads...
* Access granted.
Listo, ya está configurado y por ahora, el equipo permite el inicio de sesión por dos métodos, (1) con la clave, (2) con el pendrive.

Se procede a editar el archivo /etc/pam.d/common-auth
$nano /etc/pam.d/common-auth
Se debe verificar que la línea auth posea sufficient o required, dependiendo de lo que se desee; toma en cuenta que required hace un doble chequeo, obligando así a tener el pendrive Y la contraseña, mientras que sufficient indica que es "suficiente" tener uno de los dos para poder loguearse.
auth sufficient pam_usb.so
Copyleft Rait3 - 2015

jueves, 26 de marzo de 2015

Servidores Virtuales


 


Por razones estrictamente laborales me he visto obligado a estudiar un poco sobre virtualización, diversos software para virtualizar y la instalación de un sistema que permita virtualizar equipos para servidores; como resultado de la investigación, me he planteado la redacción del presente artículo, con el objetivo de ayudar a los que como yo, necesiten virtualizar equipos para distribuir servicios.

Para comenzar, vamos a definir Virtualización:

Hablamos de algo virtual cuando nos referimos a una cosa que es simulada, por ejemplo, la realidad virtual, es la simulación de una situación; podríamos decir que es la creación de una versión virtual (en lugar de real) de algo; para el caso específico en que trabajamos actualmente, ese algo es un sistema operativo.

Por lo tanto, cuando creamos un equipo y dentro del mismo virtualizamos (por ejemplo), dos sistemas operativos, tendríamos 3 sistemas diferentes compartiendo exactamente los mismos recursos; por ejemplo podrías tener GNU/Linux Debian, MS Windows y GNU/Linux Ubuntu corriendo simultáneamente en el mismo computador físico.

Microsoft, en su página oficial de españa, nos indica que "La virtualización del hardware implica utilizar software para crear maquinas virtuales (VM) que emulan un host físico. Esto crea un entorno de sistema operativo independiente que es, lógicamente, aislado del servidor host. Al ofrecer varias máquinas virtuales a la vez, este enfoque permite que varios sistemas operativos corran simultáneamente en una única máquina física." http://www.microsoft.com/spain/virtualizacion/products/server/default.mspx Marzo, 2015.

Ventajas y desventajas de la virtualización
Tener varios sistemas operativos en un mismo hardware nos permite, sin ocupar tanto espacio físico, poseer diversos servicios que se suministren desde un sistema operativo propio, así, si el sistema operativo se daña, no necesitas preparar todo el hardware para reinstalar el sistema, simplemente borrar la máquina virtual y crearla de nuevo.

El respaldo de máquinas virtuales (VM) en un estado específico es una gran ventaja, ya que al momento de restaurar, simplemente se restaura el archivo o conjunto de archivos de la VM y ya el equipo operaría como lo hacía en la fecha de ese respaldo.

Supongamos que poseemos un equipo i7 con 8 Gb de memoria RAM, y necesitamos tener un servidor Web y un servidor de datos, sin embargo, nuestro requerimiento nos obliga a que el servidor de datos sea GNU/Linux y el Web en MS porque lo desarrollaron para trabajar únicamente con ISS (o alguna escusa por el estilo; no se amarguen amantes y defensores del software libre, es sólo un ejemplo; yo también soy fan del free software y de GPL).

Si apagas el equipo donde tienes las máquinas virtuales, o se daña el mismo, obviamente todas las VM dejarán de funcionar, una gran desventaja a tomar en cuenta.

Hypervisor
Un hipervisor o monitor de máquina virtual (VMM por Virtual Machine Monitor) es una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar, al mismo tiempo, diferentes VM.

Tipos de Virtualización
Existen tres tipos específicos de virtualización, los cuales mencionaré a continuación:

  • Virtualización Completa
En la virtualización completa, "...los sistemas operativos (OS) usan drivers genéricos y estos OS permanecen inalterados. Se traduciría en que el hipervisor hace todo el trabajo sin alterar nada. Hoy en dia el rendimiento es bastante alto alto (aún haciendo el trabajo el hypervisor) porque al usar los mismos drivers genéricos que el host el kernel que usan es muy pequeño “Microkernel” y ademas aprovechan cualidades del hardware que cada vez mas esta preparado para la virtualización." 
http://blogs.itpro.es/problemas/paravirtualizacion/ Marzo, 2015

  • Virtualización Asistida por Hardware
No es muy fàcil de explicar sin complicar los conceptos y entrar a hablar sobre el funcionamiento de los sistemas operativos; por ahora sólo diré que el hardware permite pasar de un modo a otro para que el sistema operativo sea virtualizado.

  • Paravirtualización
Los sistemas virtualizados corren directamente sobre el procesador, sin emulación. Mientras que sistemas de virtualización completa como VMware y Virtual PC o Virtual Server de Microsoft utilizan una técnica conocida como binary translation, donde las instrucciones privilegiadas son reemplazadas con fragmentos de código que simulan las mismas; los sistemas que soportan paravirtualización (PV), parten de la base de que el sistema operativo huesped conozca que está siendo ejecutado en un entorno virtual, y por lo tanto modifique su comportamiento. Es importante acotar que un sistema operativo virtualizado no ejecuta el mismo código ni opera igual que si corriera en hardware real.

A diferencia de la PV, La técnica de virtualización completa es muy compleja y provoca grandes perdidas de rendimiento, sobre todo en aplicaciones con un uso intensivo de dispositivos. 

Ahora bien, sabiendo esto, podemos ver porqué decidí buscar un sistema de virtualización que aplicara la técnica de PV.

Software Analizados
Los software analizados para la virtualización fueron los siguientes
  1. Virtualbox
  2. VMware
  3. KVM
  4. XEN
  • Virtualbox
 Software de virtualización producido por Oracle, realmente es de fácil uso, y posee una versión distribuida bajo licencia GPL, gratuita. utiliza la técnica de virtualización completa.
  • VMWare
VMware es un sistema de virtualización por software que hace uso de la técnica virtualización completa, es muy bueno para entornos de estudio y pruebas, al punto que para los sistemas de estudio, tiendo a usar este sistema, sin embargo no usaría su versión gratuita para una virtualización de servidores puesto que no se explota al hardware en su máxima capacidad.
  • KVM
KVM (Kernel-based Virtual Machine) es una solución de software libre para virtualización completa y asistida por hardware, consiste en un módulo de kernel que provee la infraestructura de virtualización y un módulo específico de procesamiento (kvm-intel.ko o kvm-amd.ko. dependiendo del tipo de procesador sobre el cual corra). El componente de Kernel de KVM se encuentra incluido por definición en 2.6.20 y superiores.
  • XEN
Xen soporta ejecución de sistemas operativos invitados haciendo uso de las técnicas de Paravirtualización (PV) y virtualización Asistida por Hardware (HVM).

Tabla Comparativa

Aspecto a Comparar
XEN
KVM
Virtualbox
VMware
Full Virtualización
SI
SI
SI
SI
Paravirtualización
SI
SI
NO
NO
Licencia
GPL
GPL
GPL/Propietaria
Propietaria
Arquitecturas soportadas
i686, x86-64, IA64, PPC
i686, x86-64, IA64, PPC, S390
i686, x86-64
i686, x86-64
Rendimiento
Paravirtualización: Rápido
Virtualización Completa: Rápido
Paravirtualización: Rápido
Virtualización Completa: Rápido
Virtualización Completa: Rápida
Virtualización Completa: Rápida
Hotplug de Memoria y CPU
SI
SI
NO
SI
Necesita VT y AMD-V
Para Virtualización Completa
Requisito para cualquier usar cualquier técnica



Sabiendo esto se ha decidido hacer uso de XEN puesto que se ha encontrado mayor soporte y documentación para el mismo, además debo indicar que en un par de sitios leí que el rendimiento era 1 o 2 % mejor en XEN que en KVM, sin embargo, como no he podido comprobar esa información, no me basé en ella para mi decisión.

Instalación de XEN

    1.-Verificación de equipo

Como bien saben, yo soy fanático de Debian, por lo tanto, montaré mi equipo para máquinas virtuales (VM) en GNU/Linux Debian Stable (que para este momento es Debian Wheezy); ya teniendo una instalación limpia (totalmente nueva) de nuestro sistema operativo, procedo con la verificación y preparación del equipo para luego instalar y configurar XEN.

Lo primero que debemos hacer es comprobar que nuestro equipo soporte paravirtualización, para ello haremos uso del comando egrep.
"egrep es el componente más potente de la familia de órdenes grep. Al igual que fgrep, se puede utilizar para buscar múltiples objetivos. Lo mismo que grep, permite usar expresiones regulares para especificar los objetivos, pero proporciona un conjunto más completo y potente de expresiones regulares que grep. egrep acepta todas las expresiones regulares básicas reconocidas por grep, así como varias extensiones" http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/unix/unix1/contenido/node77.html Marzo, 2014
    #egrep '(vmx|svm)' --color=always /proc/cpuinfo

La opción –color obliga al sistema a remarcar en color las opciones indicadas entre comillas.
Debe aparecer remarcado "VMX" si el equipo es INTEL o "SVM" si el equipo es AMD.

    2.- Instalando XEN

Procederemos a instalar XEN
    #aptitude install xen-linux-system-XXX xen-utils-4.0 bridge-utils

Xen trae su propio Kernel, y de ahora en adelante, necesitamos que el equipo al arrancar, bootee por él; para ello debemos cambiarle la prioridad al archivo de inicio del grub, esto se logra haciendo
    #mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux

Ahora actualizamos el la configuración del grub con el comando
    #update-grub2

     3.- Configurando parámetros de red a las virtuales

Debemos editar el archivo principal de configuración del xen, para esto editaremos el archivo /etc/xen/xen-config.sxp
    #nano /etc/xen/xen-config.sxp

Y debemos descomentar las líneas que posean lo siguiente
    (network-script network-bridge)
    (vif-script vif-bridge)
    (dom0-min-mem 1024) 

Explico un poco todas:
(network-script network-bridge): Es un script de Xen para habilitar el modo bridge (puente) en las Maquinas Virtuales , de esta manera, el equipo HOST de MV recibe una IP y sus GUEST reciben otras, sin embargo todas las máquinas se conectarán sin inconvenientes a la red.

(vif-script vif-bridge): Este script se utiliza para controlar el modo bridge.

(dom0-min-mem 1024): Ponemos un mínimo de memoria al dom0 que es el XEN en realidad, esto con la finalidad de asegurarnos de que la RAM no baje nunca de ese limite y poder certificar que en ningún momento tenga asignada menos memoria de la necesaria para poder funcionar correctamente.

    4.-Configurando los parámetros que se le darán a las VM al crearlas

Primero debemos instalar el paquete xen-tools, para ello hacemos uso del comando
    #aptitude install xen-tools

El archivo /etc/xen-tools/xen-tools.conf contiene los parámetros iniciales de configuración de las MV, debemos editarlo
    #nano /etc/xen-tools/xen-tools.conf

dir = /xen/vm
install-method = debootstrap
 # Tamaño del /
size   = 10Gb
# Memoria RAM
memory = 256Mb
# Tamaño del Swap
swap   = 1024Mb
# Tipo de sistema de archivos para /
fs     = ext4
#La distribución a utilizar
dist   = wheezy
# Configuración de red de las virtuales
gateway    = 192.168.1.1
netmask    = 255.255.255.0

# Contraseña al sistema.
Passwd = 123456

# Previene que las VM utilicen algún repositorio genérico obligándolos a utilizar el repositorio del Dom0.
mirror = `xt-guess-suite-and-mirror --mirror`

# Ext3 posee algunos valores definidos tales como, noatime. Si deseas cambiarlos, devuelvelos a “defaults”.
ext3_options     = defaults

# Permitir al comando xen-create-image el uso de pygrub, de esta manera el Grub de las VM es utilizado por ellas, así no se hace necesario almacenar los Kernels fuera de las VM. En resumen, esto es para permitir que nuestras VM arranquen solas.
pygrub=1

Explicación de lo que se acaba de hacer

dir: hace referencia al directorio donde se guardarán las imágenes de las maquinas virtuales .
install-method: método de instalación del sistema operativo al crear la maquina virtual. Existen 4 tipos diferentes
  1. copy: Instala copiando recursivamente un directorio .
  2. debootstrap: instala un sistema basado en Debian dentro de un subdirectorio de otro sistema ya instalado
  3. rpmstrap: Exactamente lo mismo que debootstrap pero con sistemas RPM .
  4. tar: Instala descomprimiendo un fichero .
size: Tamaño asignada la imagen que se generará para la maquina virtual. Esto generara un “disk.img” de ese tamaño.
memory: Memoria asignada a la maquina virtual.
swap: Swap que se asigna a la maquina virtual. Esto generara un “swap.img” de ese tamaño.
fs: Sistema de ficheros de la maquina virtual.
dist: Distribución que se instalará en la maquina virtual.
gateway: Puerta de enlace de la tarjeta de red de la maquina virtual .
netmask: Mascara de red de la tarjeta de red de la maquina virtual .
passwd: Contraseña por defecto del usuario root de la maquina virtual .
mirror: Repositorios por defecto del sistema operativo de la maquina virtual.
ext3_options: Opciones de la extensión de archivos ext3 que se pueden dar al montar el sistema de archivos .

Con esto ya tenemos todo configurado, es hora de crear las maquinas virtuales.

    5.-Creamos una MV

Pedimos a nuestro xen que cree la imagen de nuestra primera virtual .
    #xen-create-image --hostname servidorWeb --ip 192.168.1.111 --vcpus 1

Este comando es demora bastante puesto que descarga los paquetes, los descomprime y luego los instala, por esta razón yo prefiero ejecutar el comando conectándome por ssh al equipo; así podría desde mi PC remota mandar a ejecutarse el comando, y a la vez, desde el propio xen podría abrir el archivo .log que me muestra exactamente lo que está haciendo el comando.

Entonces, desde otro equipo hago 
         $ssh root@MI-IP

Así me conecto por SSH al equipo

Ahora ejecuto
   #xen-create-image --hostname servidorWeb --ip 192.168.1.111 --vcpus 1 
Y desde el xen abro el archivo /var/log/xen-tools/NombreVM.log
        #tail -f /var/log/xen-tools/NombreVM.log
Una vez el comando haya creado la imagen y regresado entonces a nuestro prompt normal continuaremos con el paso 6.

    6.-Levantamos la MV
Ejecutamos el comando para que suba las .img que se acaban de crear.
    #xm create servidorWeb.cfg

Con esto ya se ejecuta nuestra máquina virtual en Debian Wheezy.

    7.- Comando útiles
Ahora bien, indico los comandos que se utilizan para gestionar las VM

Comando Función
xm shutdow servidorWeb Solicita a la VM que se apague
xm pause servidorWeb Pausar la VM para hacer respaldos y acciones especiales.
xm destroy servidorWeb Destruir una VM esto la forza a que el equipo se reinicie.
xm reboot servidorWeb Reiniciar una VM.
xm list Saber qué VM se están ejecutando en el equipo.
xm consoleNombreVM Conectarse a la VM desde el propio XEN. Nótese que a mi parecer es preferible instalar SSH en la VM y conectarse remotamente a ella; así no se congelan en la sala de servidores.
xm rename NombreActualVM NuevoNombreVM Cambiar el nombre de una VM
xm top Monitorear todas las VM en tiempo real
xm uptime Saber el tiempo que las VM llevan operativas
xm vcpu-list Visualizar cada una de las VM y la información sobre sus CPU
xm vcpu-set NombreVM 2 Cambiar el número de procesadores de una VM, en este ejemplo específico se está cambiando a 2
xm mem-max NombreVM 1024 Cambiar el valor de la memoria RAM máxima de una VM, en este ejemplo se está cambiando a 1024MB.

    8.-Pasos para remover una VM

Si en realidad quieres eliminar tu VM y que no se pueda utilizar nuevamente, el proceso a ejecutar es el siguiente:

Si la VM está corriendo, mándala a detener utilizando
    #xm destroy NombreVM
Borra las imagenes creadas
    #rm /xen/vm
Elimina el archivo de configuración de la VM ubicado en /etc/xen
    #rm /etc/xen/NombreVM.cfg

     9.-Cambiar el número de loops de XEN
Como root debemos ejecutar el siguiente comando
    #modprobe loop max_loop=64

Para más información al respecto, recomiendo la lectura de las siguientes URLs:

Virtualización VS Paravirtualización http://blogs.itpro.es/problemas/paravirtualizacion/ 

PD: Todas estas páginas fueron revisadas durante el mes de Marzo de 2015.
Copyleft 2015 - RAITE

lunes, 24 de noviembre de 2014

Servidor Multimedia (DLNA) en Debian Wheezy


Bueno, les comento que mi tlf Android pasó a mejor vida, al menos como teléfono jajajaja. La cosa es que mi flamante Motorola Atrix 4G, el cual fue un equipo extremadamente fiel desde que lo compré hasta ahora, tiene el táctil averiado, por lo que escribir en él se convirtió en algo semejante a una tortura china jejeje.

Pues dado el caso, me pasé a otro tipo de equipo, por ahora, sin embargo, no quería desprenderme de ese trasto, al menos no mientras aún le pueda sacar el jugo al procesador y la ram del equipo, así que me puse a ver de qué podía servirme el equipo y encontré algunas opciones interesantes; sin embargo la que más me llamó la atención fue la de crear en mi computador un servidor multimedia y poder acceder a él desde cualquier parte del sitio donde habito, siempre y cuando esté conectado a la red; es importante recordar que hoy en día, todo va a la wifi jajajajaja. La opción para lograr un servidor multimedia es hacer uso de DLNA, así que es hora de empezar a saber un poco más al respecto, y como ya es costumbre, aquí va la definición.
"DLNA (Digital Living Network Alliance), o "Alianza para el estilo de vida digital en red" en castellano, es una asociación de fabricantes de electrónica e informática sin ánimo de lucro fundada por Sony en junio de 2003. Su objetivo es definir directrices de interoperabilidad que permitan compartir medios digitales entre dispositivos de consumo como ordenadores, impresoras, cámaras, teléfonos móviles y otros dispositivos multimedia. Estas directrices toman como base estándares públicos ya existentes, pero sólo pueden obtenerse previo pago. DLNA especifica la forma de utilizar estos estándares con el fin de que los distintos dispositivos que pueda haber dentro de una misma red se interconecten entre ellos para compartir sus contenidos." http://es.wikipedia.org/wiki/Digital_Living_Network_Alliance Agosto, 2014

Sabiendo esto, procedemos a ver que necesitamos en nuestro equipo para convertirlo en un servidor DLNA; recordemos que aquí usamos Debian y para nuestro GNU/Linux tenemos un paquete llamado minidnla, el cual permite crear un servidor multimedia en el equipo. Buscaremos el paquete en nuestro repositorio y verificaremos la información del mismo; para ello haremos uso de los siguientes comandos.
aptitude search minidnla
Con ese buscamos el paquete para asegurarnos de que lo tenemos en los repositorios y de que aún no está instalado. Recuerda que si al principio de la línea donde aparece el paquete, nos indica una letra "p" significa que no está instalado, y si nos indica una "i" es porque si lo está; de igual manera podremos obtener toda esa información de una forma más explícita si le pedimos a aptitude que nos muestre la información de ese paquete, para ello haremos
aptitude show minidnla
Al hacer uso de ese comando yo recibí la siguiente información:
Package: minidlna                       
New: yes
State: installed
Automatically installed: no
Version: 1.0.24+dfsg-1
Priority: optional
Section: net
Maintainer: Beno??t Knecht
Architecture: i386
Uncompressed Size: 362 k
Depends: adduser, lsb-base, libavformat53 (>= 4:0.8-1~) | libavformat-extra-53
         (>= 4:0.8-1~), libavutil51 (>= 4:0.8-1~) | libavutil-extra-51 (>=
         4:0.8-1~), libc6 (>= 2.3.6-6~), libexif12, libflac8 (>= 1.2.1),
         libid3tag0 (>= 0.15.1b), libjpeg8 (>= 8c), libogg0 (>= 1.0rc3),
         libsqlite3-0 (>= 3.5.9), libvorbis0a (>= 1.1.2)
Description: lightweight DLNA/UPnP-AV server targeted at embedded systems
 MiniDLNA (aka ReadyDLNA) is server software with the aim of being fully
 compliant with DLNA/UPnP-AV clients.

 The minidlna daemon serves media files (music, pictures, and video) to clients
 on your network.  Example clients include applications such as totem and xbmc,
 and devices such as portable media players, smartphones, and televisions.

 MiniDLNA is a simple, lightweight alternative to mediatomb, but has fewer
 features. It does not have a web interface for administration and must be
 configured by editing a text file.
Homepage: http://sourceforge.net/projects/minidlna/
O lo que es lo mismo, se nos indica que minidlna es un software de servidor hecho con el objetivo de ser totalmente compatible con clientes DLNA y UPnP-AV y que el demonio servidor minidlna nos permitirá suministrar multimedia (música, imágenes y videos) a clientes de la red; ejemplo de esos clientes podrían ser totem, xbmx y dispositivos tales como reproductores portátiles, teléfonos y televisores inteligentes, entre otros.

Ahora, ya que sabemos que es DLNA y para qué sirve, así como también el nombre del paquete que nos permite, fácilmente, crear un servidor DLNA en nuestro debian, procederemos a crear nuestro server, muajajaja.
aptitude install minidlna
Eso es todo, ya con eso lo instalamos, pero eso no quiere decir que funcione, debemos configurarlo manualmente ya que el paquete no posee una interface Web para su administración; en este punto vamos a necesitar conocer la IP de nuestro servidor, así que si no se la saben, procedan a hacer uso del siguiente comando
sudo ifconfig
Con el cual obtendrémos toda la información de las configuraciones de red actuales en nuestro equipo.

Ahora abriremos el archivo de configuración de minidlna para editarlo

sudo nano /etc/minidlna.conf
Realmente el archivo es bastante intiutivo, lo único que necesitamos es saber inglés y la configuración se nos hará super fácil; sin embargo les daré unos datos, venga que yo no soy tan cruel, joder jajajajajaja.

Ya tenemos nuestro servidor instalado, y de más está decir que sabemos en qué carpetas de nuestro disco duro tenemos los archivos que deseamos compartir; el parámetro "media_dir" es el que debe contener dicha información.

media_dir=/media/data
Observa que le estoy indicando a minidlna que en la ruta /media/data hay archivos multimedia que deseo compartir; supongamos sin embargo que nosotros deseamos especificarle a DLNA en cual carpeta conseguirá música, en cual conseguirá imágenes y en cuales tendrá videos, para eso debemos añadir un parámetro a la línea anterior.
  • Si el archivo es de Audio debo colocar "A," despues del símbolo de igualdad.
  • Si el archivo es una Imagen debo colocar "P," despues del símbolo de igualdad.
  • Si el archivo es un Video debo colocar "V," despues del símbolo de igualdad.

Ejemplos

  • media_dir=A,/media/data/Music
  • media_dir=V,/media/data/Videos
  • media_dir=P,/media/data/Pictures

Con esto le indico al minidlna que en la ruta /media/data/Music debe buscar sólo archivos de audio, mientras que la imágenes a compartir están en /media/data/Pictures y los videos en /media/data/Videos.

Igualmente debemos configurar friendly_name para reconocer nuestro servidor rápidamente en la red, en mi caso lo llamaré Rait3-DLNA, a continuación muestro como queda la línea.

friendly_name=Rait3-DLNA
Podemos decirle a minidlna que automáticamente añada nuevos archivos a la biblioteca, obviamente, esos archivos serán añadidos una vez los hayamos colocado en las carpetas de música, imágenes o videos, para ello descomentamos la línea del inotify dejándola como sigue
inotify=yes
Igualmente le decimos a nuestro servidor cual es la dirección IP que va a escuchar, o sea, la dirección IP de nuestro equipo, en mi caso particular
listening_ip=192.168.3.15
Les recomiendo observar, y si lo desean, cambiar, el puerto por el cual minidlna está transmitiendo, sólo para saber que debemos desbloquear en los firewalls, en caso de tenerlos; la línea que indica el puerto es
# Port number for HTTP traffic (descriptions, SOAP, media transfer).
port=8200
Guardamos el archivo
Ctrl + o
Y lo cerramos
Ctrl + x
Ahora simplemente reiniciamos el servicio
sudo /etc/init.d/minidlna restart
Y listo, el servidor está funcionando a la perfección. Yo instalé MediaHouse en mi android para hacer uso de mi servidor desde ese equipo, igualmente he estado probando con el DLNA Player, pero no termina de gustarme del todo.

En mi caso el servidor no actualizó los archivos cuando los añadí a mi carpeta multimedia, así que lo que hice fue eliminar el archivo que tiene la base de datos de minidlna y reiniciar el servicio, de tal manera que el servidor genere de nuevo la base de datos; para ello se hace uso de los siguientes comandos

sudo rm -f /var/lib/minidlna/
Y para reiniciar el servidor usamos
sudo /etc/init.d/minidlna restart
Ahora, una imágen que encontré en la Web cuando estudiaba un poco sobre DLNA, me pareció agradable y decidí descargarla, sin embargo, aunque no es mía, no recuerdo de donde la descargué jeje.


A esto más o menos es a lo que hace alución Digital Living Network Alliance.

Bueno linuxeros, estamos a la orden, cualquier cosa, no duden en comentar, incluso para agradecer.

Copyleft 2014 - RAITE

Servidor Web, Correo y DNS -- Parte VIII ISPConfig


Por último, nuestro ISPConfig, que herramienta más útil por Dios...

A ver, descargaremos el tar.gz, lo descomprimiremos y luego entraremos a la carpeta de instalación.
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Acto seguido, corremos el script que lo instala
php -q install.php
Nos pedirá alguna información básica como el idioma a instalar el programa y la clave de root de MySQL, de resto, en mi caso personal, no cambié ningún valor, a todos les dejé por defecto presionando "enter"

Luego de culminado el proceso, puedes ingresar a ISPConfig haciendo uso de

https://TU-IP:8080/ o en su defecto https://Nombre-Equipo:8080/

Como login y clave debes usar admin admin.

Listo muchachos. Gracias por leerme.

Copyleft 2014 - RAITE

Servidor Web, Correo y DNS -- Parte VII SquirrelMail



Primero procederemos a instalar SquirrelMail
aptitude install squirrelmail
Y luego debemos configurarlo
squirrelmail-configure
Debemos decirle a SquirrelMail que estamos usando Dovecot-Imap/Pop3.

Inicialmente, nos aparecerá un menú principal, en el cual la primera opción que seleccionaremos es la de "Definir los valores específicos predeterminados para servidores IMAP, esto lo hacemos con la opción "D"

Luego indicaremos que nuestro servidor IMAP es "dovecot"

Presionaremos cualquier tecla para continuar.

S para guardar
Q para salir

Con esto está funcionando nuestro SquirrelMail, pero aún no podemos ingresar al mismo vía Web, para ello debemos habilitarlo en nuestro PHP.
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
Con los comandos anteriores creamos el ln de nuestro archivo de configuración Apache del SquirrelMail y reiniciamos apache.

Ahora abrimos nuestro archivo de configuración
nano /etc/apache2/conf.d/squirrelmail.conf
Y procedemos a añadir unas cuantas líneas al  "" quedando la sección como se muestra a continuación

  Options FollowSymLinks
 
    AddType application/x-httpd-php .php
    php_flag magic_quotes_gpc Off
    php_flag track_vars On
    php_admin_flag allow_url_fopen Off
    php_value include_path .
    php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
    php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
    php_flag register_globals off
 
Crearemos un directorio temporal para el uso de nuestro SquirrelMail
mkdir /var/lib/squirrelmail/tmp
Y definiremos que www-data sea su usuario, para que pueda jugar con el a su antojo, recordemos que este es el usuario Web.
chown www-data /var/lib/squirrelmail/tmp
Reiniciamos apache
/etc/init.d/apache2 reload
Para ingresar a nuestro correo utilizaremos
http://TU-IP/squirrelmail

Copyleft 2014 - RAITE

Servidor Web, Correo y DNS -- Parte VI FTP, Quotas y DNS



Ya sabemos bien que es un FTP (para cualquier duda, lea el post http://ojedareinaldo.blogspot.com/2014/03/ftp-desde-consola.html en el cual se define FTP y se habla de como ingresar a un servidor FTP desde cónsola de comandos). Ahora bien, debemos instalar en nuestro equipo el servicio FTP también, para ello procederemos a hacer uso del pure-FTP.

Pure-FTP es un servidor FTP libre (bajo licencia BSD), seguro, cumple los estándares y provee una calidad asegurada para sistemas de producción. Para mayor información puede referirse a su página oficial.
http://www.pureftpd.org/project/pure-ftpd (Inglés) Noviembre, 2014
aptitude install pure-ftpd-common pure-ftpd-mysql
Debemos asegurarnos de que el FTP está configurado para iniciar como standalone y con el chroot virtual activado, para esto debemos abrir el archivo pure-ftpd-common con nuestro editor favorito
nano /etc/default/pure-ftpd-common
El archivo debe tener estas dos líneas, tal como se indica
STANDALONE_OR_INETD=standalone

VIRTUALCHROOT=true
Debemos configurar también Pure-FTP para que permita sesiones TLS, esto con el fin de añadir mayor seguridad a nuestro servidor, para ello ejecutaremos el siguiente comando.
echo 1 > /etc/pure-ftpd/conf/TLS
Y crearemos igualmente los certificados SSL, primero creamos su carpeta.
mkdir -p /etc/ssl/private/
Y luego el certificado como tal.
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Se le solicitará cierta información, la cual debe llenar con la mayor exactitud posible ya que de ella dependerá la fiabilidad de su certificado SSL.

Luego procederemos a cambiarle la permisología al certificado SSL

chmod 600 /etc/ssl/private/pure-ftpd.pem

QUOTES

Ahora bien, ¿qué es una Quota?

Wikipedia nos permite saber que "...Una quota es un límite indicado por el administrador de sistema con el fin de restringir ciertos aspectos del uso del sistema de archvios, su objetivo principal como tal es indicar el máximo de espacio (mb) que un usuario puede llegar a poseer en un sistema determinado." http://en.wikipedia.org/wiki/Disk_quota (Inglés) Noviembre, 2014

Procederemos entonces a instalar las herramientas necesarias para el Quota
aptitude install quota quotatool
Y deberemos reiniciar nuestro demonio de Pure-FTP para que tome las configuraciones
/etc/init.d/pure-ftpd-mysql restart
Se debe ahora editar el fstab para que monte los quotes
nano  /etc/fstab
Y se añade la siguiente línea
/dev/mapper/server1-root /               ext4    errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0       1
Activamos los quotes
mount -o remount /
quotacheck -avugm
quotaon -avug
Instalaremos el servidor BIND DNS.
aptitude install bind9 dnsutils
Y ahora unas cuantas herramientas de administración y estadísticas Web.
aptitude install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl
Evitaremos que awstats nos envíe correos editando su configuración y comentando todas las líneas que generan reportes, para ello usaremos nuestro editor favorito.
nano /etc/cron.d/awstats
Quedando nuestro archivo de la siguiente manera
#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Copyleft 2014 - RAITE

Servidor Web, Correo y DNS -- Parte V Opcache y Estadísticas




PHP es un lenguaje interpretado, por lo tanto, con cada ejecución, el servidor tiene que compilar el código. Un sistema opcode cache se encarga de almacenar en memoria los códigos php compilados para evitar tener que compilarlos nuevamente.

Xcache es un opcode cacher veloz y estable totalmente testeado en sistema GNU/Linux. Para mayor información puede visitar su página oficial.

http://xcache.lighttpd.net/ (Inglés) Noviembre, 2014

Procederemos a instalar Xcache

aptitude install php5-xcache

Luego de instalarlo, deberemos reiniciar apache para que opere con nuestro opcode cacher

/etc/init.d/apache2 restart

PHP-FPM

Un manejador de procesos que entre sus funciones principales incluye

  • Estadísticas básicas de apache
  • Manejo avanzado de procesos con posibilidad de iniciarlos y finalizarlos
  • Habilidad de iniciar usuarios con diferentes uid/gid/chroot/ambiente
  • Reinicio de emergencia en caso de una destrución accidental por el opcode cacher

Procederemos entonces a instalar PHP-FPM

aptitude install libapache2-mod-fastcgi php5-fpm

Ahora deberemos activar el módulo y reiniciar apache


a2enmod actions fastcgi alias
/etc/init.d/apache2 restart
Copyleft 2014 - RAITE