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

jueves, 4 de septiembre de 2014

Servidor Web, Correo y DNS -- Parte IV Activación Módulos de Apache


Debemos ahora activar los módulos suexec, rewrite, ssl y actions, include, dav, dav_fs y auth_digest en apache; para ello haremos uso del siguiente comando.
a2enmod suexec rewrite ssl actions include

a2enmod dav_fs dav auth_digest
Las definiciones, como de costumbre.

El módulo Suexec provee a los usuarios de apache la habilidad de correr programas CGI y SSI haciendo uso de IDs diferentes de las de aquel que hace el llamado al servidor Web.

El módulo rewrite se utiliza para reescribir URL en aire. O sea permite hacer redireccionamiento web automático, provee entonces una forma de manipular URLs haciendo uso de un ilimitado número de reglas, cada una de las cuales puede tener un ilimitado número de condiciones adicionales.

El módulo ssl provee soporte de SSL versión 2 y 3 así como también TLS versión 1.

El módulo actions permite ejecutar scripts CGI cuando se solicita un archivo con cierto contenido MIME, (Directiva de acción); igualmente permite correr scripts CGI cuando un método sea utilizado; el uso de este módulo hace mucho más fácil ejecutar scripts en momentos adecuados.

El módulo include provee un filtro que procese archivos antes de enviarlos al cliente; permite texto condicional así como también la inclusión de otros archivos o programas, así como la configuración de impresión y variables de entorno.

El módulo dav permite crear, mover, copiar y borrar recursos y colecciones de recursos de un servidor remoto.

El módulo dav_fs provee soporte al módulo dav y permite acceder a recursos localizados en el sistema de ficheros del servidor.

El módulo auth_digest provee una alternativa al módulo de autenticación básica en el cual la contraseña no es transmitida como texto simple.

Luego de haber hecho uso de esos comandos, tendremos todas las funcionalidades que necesitamos en nuestro Apache.

Para mayor información sobre los módulos de Apache pueden dirigirse a la fuente original (en inglés) http://httpd.apache.org/docs/2.2/mod/ Septiembre, 2014

Luego, debemos proceder a comentar la sección de FilesMatch y añadir la línea
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml -
En el archivo
/etc/apache2/mods-available/suphp.conf
 Por lo tanto el archivo debe quedar como indico a continuación

    #
    #    SetHandler application/x-httpd-suphp
    #
        AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
        suPHP_AddHandler application/x-httpd-suphp

    
        suPHP_Engine on
    

    # By default, disable suPHP for debian packaged web applications as files
    # are owned by root and cannot be executed by suPHP because of min_uid.
    
        suPHP_Engine off
    

# # Use a specific php config file (a dir which contains a php.ini file)
#       suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type .
#       suPHP_RemoveHandler 
Ahora, como deseamos que todos los módulos y cambios sean cargados de una vez, procederemos a reiniciar el Apache haciendo uso del siguiente comando.
 /etc/init.d/apache2 restart
Copyleft 2014 - RAITE

miércoles, 3 de septiembre de 2014

Servidor Web, Correo y DNS -- Parte III Paquetes de servidores de correo y sus adicionales


Instalaremos ahora binutils, rkhunter, postfix y dovecot.

GNU BINUTILS es una colección de herramientas de programación que hacen uso de la librería de descripción binaria de archivos para ejecutar operaciones de bajo nivel en el equipo, las binutils han sido migradas para la mayoría de las variantes de UNIX, incluso para Android y OSX.

En las Binutils se encuentran ensambladores, compiladores entre otras utilidades.

Para mayor información al respecto pueden visitar http://www.gnu.org/software/binutils/ Agosto, 2014

RKHUNTER, su nombre hace alución a Rootkit Hunter o cazador de Kits de Root. Y la información del proyecto nos indica que es un escaner que nos permite estar seguros de que nuestro sistema se encuentra lo mas limpio posible, evitando herramientas malintencionadas en el mismo. El kit permite buscar kits de root (rootkits), puertas traseras (backdoors) y exploits en nuestro sistema.
http://rkhunter.sourceforge.net/ Septiembre, 2014

Dovecot fue definido en la primera entrega de esta serie, puede verla haciendo clic aquí: http://ojedareinaldo.blogspot.com/2014/08/servidor-web-correo-y-dns-parte-i.html Agosto, 2014

Bien, ya sabemos el software instalaremos para operar con los protocolos POP3 e IMAP, sin embargo, no tenemos aún alguno para dialogar con SMTP, para ello procederemos con la instalación de postfix.

Postfix es un servidor de correo creado para ser rápido, fácil de administrar y seguro, permite de igual manera su integración con otras aplicaciones que provean filtros contra spam y virus entre otras.
He aquí la página del proyecto.
http://www.postfix.org/ Agosto 2014

Para proceder a instalar los aplicativos anteriormente mencionados debemos proceder a hacer uso del siguiente comando:
aptitude install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve
Al terminar la descarga e instalación de paquetes, el sistema nos solicitará la siguiente información:

Tipo de configuración general? (General type of mail configuration)

Debemos seleccionar Internet Site pues nuestro correo será configurado para trabajar en la Web, no es un servidor de correo local pues.
Nombre del sistema de correo? (System mail name)
Usaremos nuestro DNS.
Debemos decirle a nuestro equipo que puertos van a someterse a TLS y SSL, esto se hace descomentando las secciones de submission y smtps en archivo /etc/postfix/master.cf con su editor favorito, en mi caso haré uso de nano.
nano /etc/postfix/master.cf
Debes dejar el archivo de la siguiente manera.
...
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
...

Luego debemos proceder a reiniciar el Postifx haciendo uso del comando
/etc/init.d/postfix restart
Ahora debemos configurar MySQL para que escuche todas las interfaces de red, para ello abrimos el archivo /etc/mysql/my.cnf con nuestro editor favorito, en mi caso, nano.
nano /etc/mysql/my.cnf
Procederemos ahora a comentar la línea que ata MySQL con la ip local colocándole un símbolo # al inicio, de tal manera que quede así:
#bind-address           = 127.0.0.1
Como acabamos de hacer cambios a MySQL, debemos reiniciar su servicio para que el cambio tome efecto, esto lo hacemos con el siguiente comando:
/etc/init.d/mysql restart
Si queremos asegurarnos de que MySQL está escuchando conexiones por cualquier puerto de la red podemos hacer uso del siguiente comando:
netstat -tap | grep mysql
Obteniendo, entre otras cosas, una respuesta como la que sigue
tcp        0      0 *:mysql                 *:*                     LISTEN
Que nos indica que con el protocolo TCP, se está escuchando cualquier cosa que entre hacia MySQL, desde cualquier usuario; claro está que MySQL tendrá sus restricciones de acceso, sin embargo las mismas serán consideradas en él.

Ahora procederemos a instalar los paquetes que nos permitirán hacer el filtrado de spam y virus al correo, los cuales son: Amavisd-new, SpamAssassin, y Clamav.

Amavisd: es una interface de alto rendimiento que se ubica entre los MTA de correo y los filtradores de virus y spam, se comunica con MTA haciendo uso de SMTP, funciona mejor con Postfix, Courier y qmail. http://www.ijs.si/software/amavisd/ Septiembre, 2014

SpamAssasin: es un proyecto de filtro de correo electrónico para identificar Spam. Spamassassin hace uso de ina variedad de mecanismos, incluido el análisis de cabeceras y texto, filtrado "Bayesian" (un filtrado inteligente que hace uso de listado de palabras y diversas clasificaciones de texto para compararlo con el texto del correo, entre otros métodos...)
http://wiki.apache.org/spamassassin/ Septiembre, 2014

Clamav: Motor para detectar troyano, virus, malware y otras amenazas maliciosas. http://www.clamav.net/index.html Septiembre, 2014
aptitude install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
ISP Config 3 hace uso de Amavisd, el cual carga los filtros de SpamAssassin internamente, de tal manera podemos detener SpamAssassin para liberar algo de RAM (esto obviamente dependerá de las especificaciones del equipo que estemos usando), si deseamos hacerlo procederemos a utilizar los siguientes comandos
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Copyleft 2014 - RAITE

miércoles, 27 de agosto de 2014

Servidor Web, Correo y DNS -- Parte II Instalación Servidor LAMP



Bueno, luego de haber obtenido y analizado los requerimientos, así como también observado algunos conceptos generales, procederemos a instalar los paquetes necesarios.

Primero debemos tener nuestro Debian instalado, en mi caso voy a hacerlo con una instalación totalmente fresca (nueva), lo único diferente en esta instalación es que estoy generando una partición especial para /var pues como allí voy a guardar todo lo de mi www (que no es más que el directorio Web de apache).

Teniendo ya el GNU/Linux Debian full instalado, procedo a convertirlo en un Web Server LAMP (Linux, Apache, MySQL y PHP); para ello instalo Apache2, PHP5 y phpMyAdmin, haciendo uso del siguiente comando.
aptitude install install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached mysql-server-5.5 phpmyadmin mysql-client
Si se preguntan la utilidad específica de alguno de estos paquetes, siempre pueden hacer uso de un aptitude show xxx donde xxx sería el nombre del paquete, por ejemplo, aptitude show libexpat1 me dará la información específica de ese paquete, el cual "...contiene la biblioteca compartida ejecutable de expat, la biblioteca de manejo de XML de C. Expat es un manipulador orientado a flujos, en él la aplicación registra manejadores para cosas que el manipulador puede encontrar en el documento XML (como etiquetas de inicio)."

Sin embargo, a continuación mencionaré los paquetes que pueden parecer extraños
mcrypt es un programa de cifrado, destinado a reemplazar al antiguo crypt(1) de UNIX. Aunque puede hacer mucho más, ya que con su biblioteca libmcrypt puede cifrar y descifrar los siguientes algoritmos: BLOWFISH, TWOFISH, DES, TripleDES, 3-WAY, SAFER-sk64, SAFER-sk128, SAFER+, OKI97, GOST, RC2, RC6, MARS, IDEA, RIJNDAEL-128, RIJNDAEL-192, SERPENT, RIJNDAEL-256, CAST-128 (conocido como CAST5), CAST-256, ARCFOUR, ENIGMA, PANAMA, XTEA y WAKE.
El uso que le daremos es simplemente de seguridad (simplemente jajajaja), puesto que en el futuro cifraremos la información que pasa del servidor de correo a los clientes.

imagemagick es un conjunto de programas para crear, editar y componer imágenes de mapas de bits. Puede leer, convertir y escribir en diversos formatos (sobre 100) incluyendo DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG y TIFF. Use ImageMagick para trasladar, voltear, reflejar, rotar, escalar, recortar y transformar imágenes, ajustar los colores, aplicar varios efectos especiales, o dibujar texto, lineas, polígonos, elipses y curvas de Bezier. Lo usarán algunos códigos de nuestro servidor de correo.

memcached Sistema de caché de objetos en memoria de alto rendimiento.
Memcached optimiza específicamente aplicaciones de alta carga de servicio que están diseñadas para tomar ventaja de este sistema de acceso a memoria versátil y no bloqueante.

ssl-cert Es una envoltura sencilla para la utilidad de solicitud de certificados de OpenSSL a la que hay que entregar las variables de usuario correctas.
Además de los paquetes para el servidor, siempre es recomendable tener la hora del equipo sincronizada, por lo tanto recomiendo la instalación de los paquetes de NTP (Network Time Protocol)necesarios haciendo uso del siguiente comando
aptitude install ntp ntpdate
Para mayor información sobre NTP siempre tenemos Wikipedia http://es.wikipedia.org/wiki/NTP, Agosto 2014.

Y ya saben, cualquier duda sobre la utilidad de un paquete, pueden usar aptitude show paquete.
Copyleft 2014 - RAITE

jueves, 14 de agosto de 2014

Servidor Web, Correo y DNS -- Parte I (Requerimientos)


Primero debemos saber exactamente qué deseamos hacer y con qué recursos contamos para hacerlo.

Necesitamos crear un servidor de correo interno para una institución, el computador que prestará el servicio debe almacenar todos los correos electrónicos, teniendo entonces una límite de espacio por cada correo.

Tenemos un equipo con una IP Pública fija, que es en el cual deseamos  instalar el servidor de correo, actualmente ese equipo puede estar prestando otros servicios, lo importante es que podamos instalar los paquetes que deseamos; adicionalmente tenemos un DNS configurado que nos redirige a ese equipo, o sea, tenemos un dominio dirigiendo a la IP pública que tiene ese equipo; por ahora digamos que la dirección de nuestro dominio es propio.com.

Conociendo entonces los requerimientos, es necesario que procedamos a entender un poco de lo que vamos a instalar.
ISPConfig 3: Es una aplicación de software libre que permite manejar servidores directamente desde el navegador, creando cuentas de usuario, limitándolas, editándolas y borrándolas de nuevo; en nuestro caso específico, lo usaremos para manejar nuestro servidor de correo, pero vale acotar que este software también posee muchas otras cualidades. Puedes ir a la página oficial para mayor información al respecto. "http://www.ispconfig.org/page/home.html" Agosto 2014.
Apache: Es una aplicación de software libre que permite convertir un equipo en un servidor HTTP (o servidor Web) para sistemas operativos como GNU/Linux y Windows. El objetivo del proyecto "Apache HTTP server" es proveer un servidor seguro, eficiente y extensible que proporcione servicios HTTP en sincronía con los estándares HTTP actuales.
"http://httpd.apache.org/" Agosto 2014.
BIND: (Berkeley Internet Name Domain) es un servvidor DNS, actualmente el más usado en Internet, especialmente en sistemas Unix; provee una plataforma estable y robusta sobre la cual las organizaciones pueden distribuir sistemas de cómputo sabiendo que dichos sistemas cumpliran con los estándares de DNS.
Para mayor información al respecto puedes ir a la página oficial del proyecto:
"http://www.isc.org/downloads/bind/" Agosto 2014.
Dovecot: es un servidor de correo POP3 e IMAP para sistemas GNU/Linux y Unix, desarrollado pensando primero en la seguridad. Dovecot es una excelente opción puesto que es rápido, fácil de configurar y no requiere administración especial, además de hacer uso de pocos recursos del sistema.
"http://www.dovecot.org/" Agosto 2014.
Squirrelmail: es un paquete de servidor de correo escrito en PHP, soporta protocolos IMAP y SMTP y todas sus páginas son hechas en HTML 4.0 puro (no requiere JavaScript)."http://squirrelmail.org/" Agosto 2014.
En pocas palabras, Dovecot se comunica con los protocolos mientras que squirrelmail me proporciona una GUI (Graphic User Interface) para manejar el correo, es por eso que este paquete es tan denominado webmail.
La idea es preparar nuestro flamante Debian para que sea un gran servidor y a la vez, levantar nuestro pecho con orgullo al mostrar que tenemos un correo configurado por nosotros solos jejejeje (mi sobrino diría "lo hice yo solito jajajaja).
Copyleft 2014 - RAITE

lunes, 9 de junio de 2014

Predespacho jajajajaja

El título es un poco jocoso pues en realidad el artículo es sólo para indicarles que en unos días estaré subiendo la primera parte del manual para montar servidores Web en GNU/Linux Debian Wheezy.

No es el predespacho a una rumba, pero les puedo decir que cuando lo monté full, me sentí como si hubiera llevado a cabo la mejor y más exitosa rumba del año jejejeje.

Bueno, un abrazo my fellow citizens, see you later, may the force be with you!

sábado, 29 de marzo de 2014

Problema descomprimir RAR en Wheezy

Desde hace un tiempo (mucho tiempo en realidad, pero estaba de holgazán y no me había dedicado a solventarlo), he estado teniendo un problema con mi sistema GNU/Linux para descomprimir archivos que vengan en RAR. Si, lo se, es preferible utilizar archivos que vengan en versiones libres, pero muchachos(as), seamos objetivos, no le podemos pedir a todo el mundo que use los formatos libres, por ejemplo, subdivx.com no va a dejar de subir un subtítulo sólo porque quien lo hizo lo puso en rar.

Ahora bien, vale acotar que siempre he tenido instalado en mi computador el paquete rar y unrar-free, normalmente con estos dos paquetes puedo comprimir y descomprimir archivos en este formato, pero por alguna extraña razón, desde hace un tiempo para acá, esa opción ya no ha funcionado más; los detalles del problema son los siguientes:
  • El archivo rar se podía abrir sin inconvenientes;
  • Cuando intentaba descomprimir, el proceso se cumplía (aparentemente) sin problemas; sin embargo, cuando iba al directorio, resulta que no aparecía el archivo descomprimido. Vale acotar que esto pasaba con cualquier rar.
A continuación indicaré cómo lo solucioné.

Para poder hablar de la descompresión de archivos con extensión RAR, es necesario que primero entendamos que un archivo RAR es un fichero comprimido, que puede contener muchos otros ficheros y directorios, es como decir, un paquete de archivos, que además, ocupan menos espacio estando empaquetados.

Nuestra muy apreciada Wikipedia [http://es.wikipedia.org/wiki/RAR (marzo, 2014)] nos indica que:
es un formato de archivo propietario, con un algoritmo de compresión sin pérdida utilizado para la compresión de datos y archivación, desarrollado por el ingeniero de software ruso, Eugene Roshal.
RAR utiliza un algoritmo de compresión basado en el LZSS que, a su vez, se basaba en el LZ77, de James Storer y Thomas Szymanski (1982). El tamaño del diccionario puede variar entre 64k y 4 Mb.
Nótese bien que el formatos es PROPIETARIO, o lo que es lo mismo, no posee licencia libre, como nuestro adorado GNU/Linux.

Ahora bien, me puse a leer un poco y me encuentro con que en el equipo tengo instalado un programa llamado p7zip. Hize uso de este comando para averiguarlo.
sudo aptitude search p7zip
Esto me permite conocer que nombre del paquete es "p7zip-full". Ya en el pasado había visto y usado ese programa en Ms Windows y vale acotar que me pareció espectacular, ahora vengo y busco detalles del paquete haciendo uso del comando
sudo aptitude show p7zip-full
Lo cual en pocas palabras me indica que 7zip es un compresor de archivos de gran poder que además viene hecho para interactuar con fille-roller, el descompresor de archivos por defecto de Debian.

Lo interesante y que nos simplifica las cosas está en la "Lista de Formatos Soportados" en la cual nos indica que, solamente para descompresión, se soportan los siguientes:
APM, ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, LZMA2, MBR, MSI, MSLZ, NSIS, NTFS, RAR (only if non-free p7zip-rar package is installed), RPM, SquashFS, UDF, VHD, WIM, XAR and Z.
Esto me hizo empezar a buscar el paquetico, primero intenté de la manera mas sencilla.
sudo aptitude search p7zip-rar
Pero por alguna extraña razón, el paquete no estaba, ya que sé que el paquete no es libre, debe estar en la rama non-free de los repositorios, pero como no quiero meterme en ellos, busco el paquete directamente en la web y lo descargo de la página oficial de paquetes de Debian (cómo me gusta usar software libre).
https://packages.debian.org/wheezy/i386/p7zip-rar/download (marzo, 2014)

Lo descargo para mi tipo de arquitectura, i386.

Y luego, procedo a instalarlo, haciendo uso de otro comandito
sudo dpkg -i /home/raite/Descargas/p7zip-rar_9.20.1~ds.1-3_i386.deb
Si estás siguiendo los pasos, es seguro que tu ruta debe ser distinta, no creo que tu usuario tenga el mismo nombre que el mío.
La cosa es, con este comando el sistema instala el paquete y... listo, eso nos permite abrir y descomprimir archivos .RAR en nuestro sistema GNU/Linux Wheezy.

Copyleft 2014 - RAITE

FTP desde Cónsola

Si queremos transferir archivos por FTP desde la cónsola de GNU/Linux tendremos que hacer uso de unos pocos comandos (en serio, son muy pocos comandos jeje). Sin embargo, comenzaré por una definición básica de FTP para los newbies.
FTP: File Transfer Protocol o en nuestro adorado español, Protocolo de Transferencia de Archivos tal como indica http://es.wikipedia.org/wiki/Ftp (marzo 2014)
"...es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo."
En resumen, tienes un equipo con el servicio de FTP activo, te conectas desde otro equipo para poder subir y bajar archivos, en realidad es muy simple, de hecho, es tan simple que es extremadamente potente.

Ahora bien, supongamos que en el momento en el cual necesitas subir archivos por a tu FTP, tu conexión simplemente "apesta", o bueno, quizá estés conectándote desde el celular y no quieres "chuparte" todas tus megas de un solo trancazo, y bien sabemos que conectarnos por entorno gráfico siempre usa un poco más de datos de los realmente necesarios, así que buscamos una manera de conectarnos rápido, y consumir la menor cantidad de datos posibles, pues, "te lo tengo" jajajaja (broma solo para venezolanos); conéctate por cónsola.

Aja, pero ¿Cómo me conecto por cónsola, it's that even possible?

Oh my friend, there is no power as the one that hide's behind the black console!
¡Oh amigo mio, no hay poder como el que se esconde detrás de esa cónsola negra!

Primero, abre la cónsola :D

Ahora, lo que tienes que hacer es asegurarte de que el paquete FTP esté instalado en tu sistema, en mi caso, yo soy usuario de Debian, por lo tanto, el comando que utilizo es el siguiente:
sudo aptitude search ftp
 Y en la respuesta que me da el servidor puedo ver que hay una "i" antes del paquete denominado así.





A continuación una pequeña imagen de lo que indico, nótese que les coloqué el cursor cerca del paquete ftp para facilitar el trabajo.





Si deseamos conocer más detalles del paquete, bien podemos hacer uso del comando
aptitude show ftp
En caso de que en vez de una i tengas una p antes del nombre del paquete, debes proceder a instalarlo haciendo uso del comando
sudo aptitude install ftp
Una vez el paquete está instalado en nuestro GNU/Linux, procederemos a usarlo

Para acceder debemos escribir el comando
ftp LaDirecciónDeTuFTP
El sistema nos pedirá que indiquemos nuestro nombre de usuario.
Y luego nos solicitará la contraseña.

Luego de esto, estaremos conectados a nuestro ftp, la mejor forma de notarlo es observando que el prompt de nuestra cónsola es como sigue
ftp>
Podemos hacer movernos por los directorios, listar los mismos, eliminar archivos, cambiar permisos, cambiar dueños, tal y como lo haríamos en nuestro equipo.

Si queremos subir archivos debemos hacer uso del comando put de la siguiente manera
ftp> put RutaArchivo/NombreArchivo.Extensión
Y si lo que deseamos es descargar un archivo, hacemos uso de
ftp> get ArchivoDescargar.extensión
Una vez hayamos terminado de subir y/o bajar nuestros archivos, haremos uso del siguiente comando para cerrar nuestra sesión.
ftp> quit
Aquí les dejo el vínculo a una página que también contiene toda esta información y un poco más.

viernes, 28 de marzo de 2014

Requerimientos de Hardware para Servidor de Moodle Act. 2014


He estado verificando los requerimientos actuales para la instalación de Moodle en un servidor, me interesaba conocer detalles de lo que necesito tener en el equipo para que mi moodle funcione sin inconvenientes. Es importante tener claro un par de deficiones básicas.

Usuario concurrente:
Máximo de usuarios que estarán usando moodle al mismo tiempo (para actividades evaluaciones).
Usuario de Navegación:
Número máximo de usuarios que pueden navegar en tu Moodle, es el número de computadoras en tu organización o en tu curso, por decirlo de alguna manera. Claro está, algunas veces no es tan fácil obtener este número ya que veces no se tiene planificado el alcance de la plataforma a instalar; en estos casos, habla con los que están solicitando el LMS (Learning Managment System - Eso es Moodle) para intentar definir un aproximado.
Sabiendo esto, la fórmula más o menos inicial, sería:

Aprox máximo de usuarios concurrentes= RAM (GB) * 50.
Aprox máximo de usuarios de navegación= concurrentes *5.

O lo que es lo mismo, necesitaremos 1GB RAM por cada 50 usuarios concurrentes.
Y al multiplicar el número de usuarios concurrentes por 5, obtendremos el número de usuarios de navegación.

Ok, digamos que tengo ya el equipo, sin embargo lo quiero mejorar, en ese caso, bien podríamos citar a http://docs.moodle.org/20/en/Performance_recommendations#Hardware_configuration (marzo, 2014)

Incrementar la RAM del servidor te presentará beneficios inmediatos, ya que esto permitirá reducir la necesidad del proceso de swaping al disco, y permitirá también que el mismo maneje un mayor número de usuarios.
Hay mayor rendimiento al obtener mayor capacidad de procesamiento, así como también procesamiento multi hilo.
De ser posible, usa disco duros SCSI en lugar de SATA; ya que los disco duros SATA incrementarán el uso del CPU, a diferencia de los SCSI que tienen su propio procesador integrado.
A medida de lo posible, intenta que tus disco duros posean tiempo de búsqueda bajos "low seek time". Pues esto mejorará la velocidad de tu sistema.
Haz que tu partición swap posea 4 veces el tamaño de tu RAM.
Haz uso de Gigabit Ethernet (si puedes), para mejorar la latencia. Esto es bastante relevante si tienes tu servidor de Base de Datos separado del servidor Web.
También se posee un caso de estudio, (inglés) el cual muestra cierta información de estadísticas de uso del hardware en un ambiente de 300 usuarios https://moodle.org/mod/forum/discuss.php?d=68579 (marzo, 2014).
Y por último, en http://www.factorsim.info/2012/04/16/necesito-un-moodle-que-tendra-x-usuarios-concurrentes-de-media-que-servidor-ponemos-aguantara/ (marzo, 2014) se muestra también un poco de información sobre el cálculo de usuarios concurrentes.

Off topic: Honey, I'm back! - O como lo diría Estopa "Vuelvo a las andadas".

RAITE - Copyleft 2014