B.S.O. The Secret of Monkey Island
Paradoja de Olbers. ¿Por qué el cielo es negro?
B.S.O. The Secret of Monkey Island
Paradoja de Olbers. ¿Por qué el cielo es negro?
Nos conectamos por SSH al servidor. Antes de nada instalamos otras utilidades necesarias:
#apt-get install bzip2
#apt-get install unzip
#apt-get install uudeview
#apt-get install cksfv (en los repositorios de debian lenny no está, tendremos que activar momentáneamente los repositorios de testing)
Una vez allí lo primero es situarnos en la carpeta home del usuario root, donde descargaremos el archivo comprimido del programa, y con el que trabajaremos a partir de ahora:
#cd /root
#wget http://download2.berlios.de/tf-b4rt/torrentflux-b4rt_1.0-beta2.tar.bz2
Tras descargar el archivo, debería tardar poco, tenemos que descomprimirlo de la siguiente manera:
#bunzip2 torrentflux-b4rt_1.0-beta2.tar.bz2
#tar xvf torrentflux-b4rt_1.0-beta2.tar
Ahora vamos a crear la carpeta de torrentflux y por eso tendremos que copiar allí todo lo que haya en la carpeta html:
#mkdir /home/usuarioweb/www/torrentflux
#cp-r html / * /home/usuarioweb/www/torrentflux
Le cambiamos el propietario a la carpeta asignándole www-data que es utilizado por el usuario de Apache (el servidor web) pueda acceder a los archivos utilizados por TorrentFlux.
#chown-R www-data:www-data /home/usuarioweb/www/torrentflux
Ahora hay que abrir un navegador dirigirlo allí: http://la Ip del servidor o Pc/torrentflux
y tendrías que ver algo como esto:

Pasaremos por varios Continue en donde elegiremos la base de datos (en nuestro caso MySQL) y comprobará el PHP5, hasta que llegamos al siguiente punto importante, donde elegiremos la ruta donde guardará los archivos, aunque esa ruta será relativa pues en esa carpeta creará una carpeta por cada usuario que use y descargue algo con torrentflux-b4rt, pero lo que si es importante es que esa ruta tenga los permisos correctos, es decir que www-data el usuario de Apache2 pueda escribir en ella. Lo guardaremos en “/media/Archivos“, para no tener problemas de permisos le he pasado el comando chmod con la opción 777, como veis a continuación, luego he indicado la ruta en el script de instalación del programa como veis en la captura:
#chmod 777 /media/Archivos/

Pasado este punto, comprobará, de nuevo tras varios Continue, que tenemos todos los ejecutables que necesita para aprovechar todas las funciones, correctamente instalados, como veis en la captura a mi solo me falta uno, VLC, que solo se usa para hacer Streaming a través de la red directamente desde el propio programa, pero yo no necesito esa opción y me parece excesivo instalar VLC así que no lo instalo. Pero si os parece una función necesaria solo tenéis que instalarlo antes de este paso y lo detectará automáticamente. Podéis verlo en la captura:
Una vez superado este punto hemos llegado al punto final del script de instalación, donde como podéis ver en la captura, nos comenta un detalle importante, cuando nos salga por primera vez la ventana de login, el usuario y la contraseña que introduzcamos serán las que el programa guardará como las del usuario SuperAdmin, así que fijaros bien que escribís que luego necesitaréis esa clave y user.

Tras este paso veremos la ventana de Login, como veis en la captura, el usuario y la contraseña que introduzcáis ahora serán las que se guardarán como las del usuario SuperAdmin, así que aseguraos bien que ponéis y recordadlo claro.

Una vez puestos Username y Password, veremos la pantalla de configuración de Torrentflux-b4rt, y podremos configurar todos los aspectos del programa. Aquí os dejo una del programa en acción para que veáis como es funcionando:
Un consejo: es muy recomendable configurar bien los límites de subida y bajada de acuerdo a nuestra conexión. De lo contrario consumirá todo el ancho de banda de nuestro servidor pudiéndose dar el caso de que no se puedan ofrecer otros servicios tan básicos durante la ejecución de torrentflux tales como la compartición de archivos.
Hasta aquí. Seguramente habrán muchas más utilidades para un servidor, pero con estas a mí me basta. De todos modos siempre es bueno conocer otras cosas que en cualquier momento futuro puedan llegar a ser útiles.
Vamos a agregar un servicio de DNS al servidor para que resuelva todos los nombres y direcciones IP que necesite desde la red de área local. Lo que ganamos con esto es simplemente tiempo. No es lo mismo acceder a un servidor DNS de nuestro proveedor de servicios de Internet ( ISP ) por nuestro router que acceder a una maquina que está conectada a nuestra red interna donde la velocidad de conexión es mucho mayor que la que nos pueda ofrecer cualquier ADSL
Para instalarlo accedemos a una Terminal, nos identificamos como súper usuario root con el comando su y procedemos a su instalación con:
#apt-get install bind9
Ahora vamos a editar antes de nada el fichero resolv.conf
#nano /etc/resolv.conf
Veremos algo así:
nameserver 89.29.160.2
nameserver 192.168.0.1
Lo modificamos dejándolo así:
search ejemplo.no-ip.info #dirección del servidor
nameserver 127.0.0.1 #lo dejamos así
nameserver 192.168.0.1 #ip del router o puerta de enlace
Una vez modificado vamos ha hacer una copia de seguridad del archivo de configuración de bind9 named.conf.options
#cp /etc/bind/named.conf.options /etc/bind/named.conf.optionsOLD
Ahora lo editamos con:
#nano /etc/bind/named.conf.options
Veremos algo así:
options {
directory “/var/cache/bind”;
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
modificamos las lineas …
// forwarders {
// 0.0.0.0;
// };
y añadimos la linea …
query-source address * port 53;
introducimos nuestra IP localhost y descomentamos las lineas quedándonos así :
options {
directory “/var/cache/bind”;
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
query-source address * port 53;
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.
forwarders {
127.0.0.1;
192.168.0.1;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
Ahora podríamos reiniciar solo los servicios de la RED y del DNS pero yo prefiero reiniciar para ver si todo arranca perfectamente y no tiene problemas con otros programas que tengamos instalados:
#reboot
Una vez reiniciada la maquina vamos a ver que tal funciona. Como podremos ver a continuación el acceso a nombres en Internet va a ser súper rápido una vez accedamos a el por primera vez ya que todos los nombres que resolvamos conforme vallamos navegando se irán guardando en una tabla cache localmente en nuestro servidor.
Vamos a usar para esto el comando dig, probaremos con el dominio google.com
#dig www.google.com
;; Query time: 26 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 9 18:14:57 2009
;; MSG SIZE rcvd: 244
Si nos fijamos a tardado unos 26 milisegundos, pero si repetimos veremos que es muchísimo mas rápido que la primera vez:
#dig www.google.com
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 9 18:16:54 2009
;; MSG SIZE rcvd: 244
2 milisegundos es lo que ha tardado la segunda vez. Como veis es una manera mas de agilizar nuestra navegación en Internet ya que siempre sera mas rápido nuestro cable de red local conectado a 10/100 Mbps que no el ancho de banda que nos pueda ofrecer nuestro Router.
Si necesitamos ofrecer servicio de DNS a todos los ordenadores que quisieran usar nuestro servidor desde Internet tan solo tendríamos que abrir el puerto 53 y redireccionarlo hacia la IP de nuestro servidor aunque esto es una cosa que no recomiendo ya que si se sirven de este servicio muchos ordenadores a la vez podríamos tener problemas. No hablo de nuestro servidor ya que el haría su trabajo sin problemas pero nuestro ancho de banda de la ADSL es tan pequeño que incluso podríamos tener problemas a la hora de acceder a Internet.
Localmente es una solución ideal para entornos donde se conectan varios ordenadores a Internet desde una misma área local agilizando la traducción de nombres a ips.
Ahora ya tenemos nuestro propio servidor DNS listo para la trabajar. Seguidamente vamos a configurar todos nuestros ordenadores para que puedan hacer uso de él.
En la mayoría de los sistemas Linux incluyendo, podemos configurarlo en el fichero resolv.conf agregando la IP de nuestro servidor en la linea nameserver y nuestro dominio en la linea search. Como ejemplo, en un ordenador de nuestra red privada:
#nano /etc/resolv.conf
Dejándolo tal que así:
search ejemplo.no-ip.info #dirección del servidor
nameserver 192.168.0.XXX #ip del servidor
nameserver 192.168.0.1 #ip del router o puerta de enlace
La aplicación que vamos a usar para protegernos se llama Fail2Ban y se va a encargar de hacer de guardián las 24 horas del día bloqueando a todo aquel que tenga un numero de intentos fallidos de login en alguno de nuestros servicios. Vamos con su instalación. Ejecutamos una Terminal y nos logeamos como súper usuario root con el comando su, a continuación lo instalamos con
#apt-get install fail2ban
Ahora vamos a renombrar el fichero de configuración jail.conf por jail.confOLD ya que este mismo nos puede servir como referencia
#cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.confOLD
Como podemos ver en el interior de el archivo jail.confOLD, ya hay varias opciones editadas por defecto y solo están a la espera de ser editadas para ser activadas. A continuación os voy a exponer cual es mi configuración para que os sirva como ejemplo.
Creamos un nuevo jail.conf para asignarle nuestras propias regla
#nano /etc/fail2ban/jail.conf
Especificando un poco sobre el fichero de configuración:
ignoreip : IPs de nuestra área local que queremos que se haga la vista gorda en caso de equivocación.
bantime : Tiempo que el usuario que fallo el logeo se quedara sin poder acceder al servicio especificado en segundos.
maxretry : Numero de intentos de logeo.
backend : Permite de un modo o otro la escritura de ficheros log.
destemail : Dirección de correo donde nos enviara las alertas.
action : Forma en que iptables aplica sus reglas.
mail-whois-lines : Se especifica que queremos que nos envié al correo en caso de intrusión.
Esas lineas explican la configuración básica de el fichero, a continuación vamos a ver un ejemplo de las celdas que creamos para cada servicio:
[ssh] : Tomare ssh como ejemplo pero esta es una linea que da igual lo que pongamos, ya que no afecta a la configuración.
enable : Podemos introducir true para activarlo y false para desactivarlo.
port : Nombre del servicio relacionado con el puerto.
filter : Nombre del archivo .conf ubicado en el subdirectorio /etc/fail2ban/filter.d, este va relacionado con algún filtro ya creado.
logpath : Ruta donde se ubica el fichero log donde se almacena toda la información de el servicio en cuestión.
maxretry : Numero de intentos fallidos, aquí podemos especificar un carácter diferente para cada celda que creemos.
findtime : Si alguien prueba x intentos en este periodo de tiempo especificado en segundos se le considera ataque.
Yo voy a proteger a los servicios SSH, FTP, y al WWW que son los que ofrecen mi servidor hacia internet. A cada uno le voy a dar un retardo de 300 segundos que vienen a ser unos 5 minutos para que durante ese tiempo el usuario que quiera conectarse no le sea una molestia esta medida de seguridad. 5 minutos es suficiente para evitar el uso malintencionado de un ataque por fuerza bruta o también llamado diccionario de nombres.
Si nos fijamos en mi fichero de configuración veréis un ejemplo de como lo tengo yo montado
# Fail2Ban configuration file.
#
# This file was composed for Debian systems from the original one
# provided now under /usr/share/doc/fail2ban/examples/jail.conf
# for additional examples.
#
# To avoid merges during upgrades DO NOT MODIFY THIS FILE
# and rather provide your changes in /etc/fail2ban/jail.local
#
# Author: Yaroslav O. Halchenko <debian@onerussian.com>
#
# $Revision: 281 $
#
# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards.
[DEFAULT]
# “ignoreip” can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.0.0/24
bantime = 300
maxretry = 3
# “backend” specifies the backend used to get files modification. Available
# options are “gamin”, “polling” and “auto”.
# yoh: For some reason Debian shipped python-gamin didn’t work as expected
# This issue left ToDo, so polling is default backend for now
backend = polling
#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost
#
# ACTIONS
#
# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overriden globally or per
# section within jail.local file
banaction = iptables-multiport
# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional ‘mail’.
mta = sendmail
# Default protocol
protocol = tcp
#
# Action shortcuts. To be used to define action parameter
# The simplest action to take: ban only
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
# ban & send an e-mail with whois report to the destemail.
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
# ban & send an e-mail with whois report and relevant log lines
# to the destemail.
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]
# Choose default action. To change, just override value of ‘action’ with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_)s
#
# JAILS
#
# Next jails corresponds to the standard configuration in Fail2ban 0.6 which
# was shipped in Debian. Enable any defined here jail by including
#
# [SECTION_NAME]
# enabled = true
#
# in /etc/fail2ban/jail.local.
#
# Optionally you may override any other parameter (e.g. banaction,
# action, port, logpath, etc) in that section within jail.local
[ssh]
enabled = true
port = XXX
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
# Generic filter for pam. Has to be used with action which bans all ports
# such as iptables-allports, shorewall
[pam-generic]
enabled = false
# pam-generic filter can be customized to monitor specific subset of ‘tty’s
filter = pam-generic
# port actually must be irrelevant but lets leave it all for some possible uses
port = all
banaction = iptables-allports
port = anyport
logpath = /var/log/auth.log
maxretry = 6
findtime = 600
[xinetd-fail]
enabled = false
filter = xinetd-fail
port = all
banaction = iptables-multiport-log
logpath = /var/log/daemon.log
maxretry = 2
findtime = 600
[ssh-ddos]
enabled = false
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6
findtime = 600
#
# HTTP servers
#
[apache]
enabled = false
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 3
findtime = 600
# default action is now multiport, so apache-multiport jail was left
# for compatibility with previous (<0.7.6-2) releases
[apache-multiport]
enabled = false
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6
findtime = 600
[apache-noscript]
enabled = false
port = http,https
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 3
findtime = 600
[apache-overflows]
enabled = false
port = http,https
filter = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 2
findtime = 600
#
# FTP servers
#
[vsftpd]
enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
# or overwrite it in jails.local to be
# logpath = /var/log/auth.log
# if you want to rely on PAM failed login attempts
# vsftpd’s failregex should match both of those formats
maxretry = 6
findtime = 600
[proftpd]
enabled = false
port = ftp,ftp-data,ftps,ftps-data , XXX
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
maxretry = 3
findtime = 600
[wuftpd]
enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = wuftpd
logpath = /var/log/auth.log
maxretry = 6
findtime = 600
#
# Mail servers
#
[postfix]
enabled = false
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
findtime = 600
[couriersmtp]
enabled = false
port = smtp,ssmtp
filter = couriersmtp
logpath = /var/log/mail.log
findtime = 600
#
# Mail servers authenticators: might be used for smtp,ftp,imap servers, so
# all relevant ports get banned
#
[courierauth]
enabled = false
port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter = courierlogin
logpath = /var/log/mail.log
findtime = 600
[sasl]
enabled = false
port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter = sasl
logpath = /var/log/mail.log
findtime = 600
# DNS Servers
# These jails block attacks against named (bind9). By default, logging is off
# with bind9 installation. You will need something like this:
#
# logging {
# channel security_file {
# file “/var/log/named/security.log” versions 3 size 30m;
# severity dynamic;
# print-time yes;
# };
# category security {
# security_file;
# };
# }
#
# in your named.conf to provide proper logging
# Word of Caution:
# Given filter can lead to DoS attack against your DNS server
# since there is no way to assure that UDP packets come from the
# real source IP
[named-refused-udp]
enabled = false
port = domain,953
protocol = udp
filter = named-refused
logpath = /var/log/named/security.log
findtime = 600
[named-refused-tcp]
enabled = false
port = domain,953
protocol = tcp
filter = named-refused
logpath = /var/log/named/security.log
findtime = 600
Como podéis ver en la configuración anterior se especifican reglas para cada servicio especificando el puerto, filtro, ruta donde se ubica el fichero log que genera el servicio y el máximo de intentos de logeo. Una vez editado este fichero de configuración salimos y guardamos. A continuación ejecutamos nuestro guardián con:
#fail2ban-client start
Si todo va bien veremos algo así:
2009-05-13 19:15:49,367 fail2ban.server : INFO Starting Fail2ban v0.8.3
2009-05-13 19:15:49,368 fail2ban.server : INFO Starting in daemon mode
Si lo configuramos correctamente solo veremos esta linea, si no veremos alguna linea tipo Warning. ( ATENCIÓN : Ella siempre nos especifica el problema que tenemos en el fichero fail.conf).
Si queréis ver que tal andamos de bloqueos podéis ver el fichero fail2ban.log que se ubica en la ruta /var/log donde se guardan todos los bloqueos, ips, fecha y hora de quien nos está atacando
Suponiendo que tenemos instalado en nuestro servidor ProFTPD y OpenSSL, podemos configurar el servicio FTP para que trabaje con un poco más de seguridad. Las transmisiones a través de FTP son de por sí inseguras por que viajan en texto plano. Con TLS conseguiremos cifrar la información. Para activarlo debemos modificar el archivo de configuración de ProFTPD:
#cd /etc/proftpd/
#nano proftpd.conf
Y añadir lo siguiente:
# Includes DSO modules
Include /etc/proftpd/modules.conf
Y….
# This is used for FTPS connections
Include /etc/proftpd/tls.conf
Para poder trabajar con TLS debemos crear un certificado SSL. Para ello crearemos antes una carpeta para guardarlos:
# mkdir /etc/proftpd/ssl
Entonces generaremos el certificado:
# openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
Ahora abriremos el archivo de configuración de TLS:
# nano /etc/proftpd/tls.conf
Y añadimos lo siguiente:
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
</IfModule>
Ahora tan solo debemos reiniciar ProFTPD:
# /etc/init.d/proftpd restart
Cabe señalar que la opción TLSRequired especifica la exclusividad de usar en el cliente FTP con TLS. Si la tenemos activada, como es el caso no podremos conectarnos al servidor por medio del FTP clásico.
No todos los clientes FTP disponen de conexión vía TLS. Sin embargo Filezilla sí. Para instalarlo:
# apt-get install filezilla
Había una vez un hermoso príncipe que le preguntó a la bella Princesa:
- ¿Te quieres casar conmigo?
- Y ella le respondió: – ¡¡¡NO!!!Y el príncipe vivió feliz por muchos años yendo a pescar, a cazar y al bar todos los días con sus amigos y tomaba mucha cerveza, vino y whisky, se ponía hasta las orejas de copas cuantas veces quería. Jugaba al golf y comía caviar porque le alcanzaba la pasta para eso y mucho más. Dejaba la ropa tirada en la silla del comedor y follaba con mujeres de la noche y vecinas y amigas y no tenía que competir con vecinos y amigos por el mejor coche, el mejor lugar de vacaciones, etc…
Y se tiraba pedos a mansalva y meaba salpicando la tapa del inodoro y con la puerta del baño abierta. Cagaba leyendo sin límite de tiempo y cantaba eructando y se rascaba los güevos. Escuchaba música a pleno volumen y veía fútbol todo el fin de semana… y no le tocaban las pelotas!!!!.
FIN
Leido en ubuntulife.
El comando que nos muestra el uso de espacio de todas las particiones es “df“. Proporciona la cantidad de espacio usado en disco y la cantidad de espacio disponible. Para usarlo es sencillo, sólo escribimos en la consola df. Nos mostrará la información de todos los sistemas de archivos que se encuentren montados actualmente y nos arrojará la información en bloques de 1kb. Podemos hacer uso del parámetro “-h”. Éste lo que hará es que nos mostrará la información de manera más legible, es decir en Mb y Gb. Si sólo queremos saber la capacidad de una partición podemos hacer que se muestre sólo esa agregando su ruta después del -h, ésto sería algo así: df -h /media/disk. Referencia http://huevas.wordpress.com/
# df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/sda1 19G 903M 17G 6% /
tmpfs 2,0G 0 2,0G 0% /lib/init/rw
udev 10M 80K 10M 1% /dev
tmpfs 2,0G 0 2,0G 0% /dev/shm
/dev/sda6 67G 200M 63G 1% /home
/dev/sda7 367G 30G 319G 9% /mnt/datos.01
/dev/sdb1 463G 344G 96G 79% /mnt/datos.02
Fusilado de: http://www.eniac2000.com/?p=608
En líneas generales, un SAI (sistema de alimentación ininterrumpida) es un dispositivo que permite mantener la alimentación de dispositivos electrónicos (en este caso, un PC) cuando hay un corte en la corriente eléctrica, durante un período variable en función de las baterías con las que vaya equipado el SAI, pero que suele rondar el cuarto de hora-media hora, más que suficiente para que vuelva la luz o alguien vuelva a poner los plomos en su sitio. Además el SAI actua como estabilizador de corriente, protegiendo al PC de las variaciones en el suministro (lo que se suele conocer como “la chispa adecuada” -adecuada para achicharrarte el equipo-).
Eso ya de por sí estaría bien, pero puestos a llevar la situación al extremo, podría suceder que el apagón tuviera una duración mayor del tiempo que el SAI es capaz de suministrar energía, o que no hubiera nadie para volver a dar los plomos. El corte indeseado de corriente se produciría igualmente, pero con una cierta demora. Sin embargo, los SAIs vienen equipados con un puerto de comunicación (generalmente serie o USB) que permite al ordenador saber cuándo la batería del SAI está llegando a un nivel crítico, y apagarse de manera automática. Pues bien, Linux está preparado para llevar a cabo este proceso, en concreto haciendo uso de NUT (Network UPS Tools).
Para configurar la monitorización de un SAI en Debian el procedimiento a seguir sería el siguiente:
Instalación de NUT
En Debian es tan simple como instalar NUT mediante apt-get:
# apt-get install nut
Instalación de paquetes auxiliares
Puede ser necesario realizar una instalación de paquetes auxilares. Estos paquetes son los siguientes:
Configuración de NUT
Una vez realizado el proceso de instalación mediante apt-get, es preciso realizar la configuración de NUT para que reconozca nuestro SAI. En primer lugar, es preciso editar el archivo /etc/default/nut para hacer que los demonios de NUT se inicien de manera automática. El contenido del archivo debe ser el siguiente:
# start upsd
START_UPSD=yes
# start upsmon
START_UPSMON=yes
Una vez hecho esto, es preciso añadir el usuario nut al grupo dialout y tty, propietario de los puertos serie:
# adduser nut dialout
# adduser nut tty
A continuación hay que configurar el controlador de nut. Los archivos de configuración del controlador deben encontrarse en el directorio /etc/nut. Sin embargo, la instalación de apt-get crea el directorio, pero no incluye por defecto ningún archivo en el directorio, siendo preciso copiarlos desde el directorio /usr/share/doc/nut/examples/:
# cp /usr/share/doc/nut/examples/*.conf.sample /etc/nut
# cp /usr/share/doc/nut/examples/*.users.sample /etc/nut
(Luego habrá que renombrarlos quitándole la terminación *.sample.)
En primer lugar ha de editarse el archivo /etc/nut/ups.conf. Su contenido ha de ser el siguiente:
[misai]
driver = megatec_usb
port = auto
La primera línea designa el nombre que vamos a dar a nuestro SAI. La segunda indica a NUT el driver a usar para comunicarse con nuestro SAI, y la tercera indica qué puerto de comunicación a usar (en este caso, el primer puerto serie -COM1-).
En segundo lugar ha de configurarse el archivo /etc/nut/upsd.conf, que indica las máquinas con permisos para acceder al demonio upsd. Un ejemplo de configuración sería el siguiente:
ACL localhost 127.0.0.1/32
ACL local_network 192.168.0.0/24
ACL all 0.0.0.0/0
ACCEPT monitor localhost
ACCEPT local_network
REJECT all all
Con esta configuración se está indicando que se permita el acceso al demonio al equipo local, así como a aquellos equipos que pertenezcan a la red local (siendo las direcciones de la red 192.168.0.xxx), y que rechace al resto de equipos.
En tercer lugar se ha de indicar en el archivo /etc/nut/upsd.users qué usuarios tienen permisos para acceder al sistema de control de NUT, así como los permisos que tiene cada usuario. Un ejemplo de contenido sería el siguiente:
[admin]
password = passwordadmin
allowfrom = localhost local_network
actions = SET
instcmds = ALL
[control]
password = passwordcontrol
allowfrom = localhost local_network
upsmon master
[clientes]
password = passwordclientes
allowfrom = local_network
upsmon slave
El código entre corchetes indica el nombre del usuario creado; la línea password especifica la contraseña del usuario, la línea allowfrom indica desde dónde (definido en el archivo /etc/nut/upsd.conf) se puede conectar ese usuario. La línea actions define las acciones que ese usuario puede realizar, la línea instcmds define los comandos que pueden ser usados por el usuario, por último, la línea upsmon master define que ese usuario será el controlador del servidor, y upsmon slave será el controlador remoto.
Por último, se ha de configurar el archivo /etc/nut/upsmon.conf, que controla el acceso al monitor NUT del SAI. Un ejemplo de archivo sería el siguiente:
MONITOR misai@localhost 1 control passwordcontrol master
RUN_AS_USER nut
MINSUPPLIES 1
SHUTDOWNCMD “/sbin/shutdown -h +0″
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYMSG ONLINE “UPS: Normal state”
NOTIFYMSG ONBATT “UPS: Cable communication error”
NOTIFYMSG LOWBATT “UPS: Battery low”
NOTIFYMSG FSD “UPS: Starting shutdown”
NOTIFYMSG COMMOK “UPS: Communication restored”
NOTIFYMSG COMMBAD “UPS: Communication lose”
NOTIFYMSG SHUTDOWN “UPS: Shutting down”
NOTIFYMSG REPLBATT “UPS: Replace battery”
NOTIFYFLAG ONLINE SYSLOG
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL
NOTIFYFLAG FSD SYSLOG+WALL
NOTIFYFLAG COMMOK SYSLOG
NOTIFYFLAG COMMBAD SYSLOG
NOTIFYFLAG SHUTDOWN SYSLOG
NOTIFYFLAG REPLBATT SYSLOG
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Nótese que en en este archivo la línea MONITOR especifica que queremos monitorizar el SAI llamado misai, conectado a la máquina localhost (localmente), que tiene 1 batería, el usuario es control, nuestro password es passwordcontrol y estamos en modo master. Por otro lado, el archivo permite configurar el comando de apagado, los mensajes de aviso del estado del SAI.
# chown root:nut /etc/nut/*
# chmod o-r /etc/nut/*
Por último, se ha de iniciar el servidor mediante el siguiente comando:
# /etc/init.d/nut restart
Se puede monitorizar el SAI desde línea de comandos:
# upsc misai@localhost
Monitorización remota mediante servicio web
Una posibilidad bastante interesante que soporta NUT es la monitorización del SAI mediante servicio web. Para ello provee de un script CGI que permite acceder al estado del SAI haciendo uso de un navegador.
En primer lugar, ha de instalarse el paquete nut-cgi mediante apt-get:
# apt-get install nut-cgi
Este comando instala el paquete, así como los scripts cgi en el directorio por defecto de instalación de ficheros cgi-bin de nuestro servidor web (con apache, /usr/lib/cgi-bin).
En segundo lugar es preciso crear los archivos de configuración de nut-cgi. Como en el caso anterior, la instalación por defecto no copia estos archivos en el directorio de nut, por lo que es preciso copiarlos desde /usr/share/doc/nut-cgi/examples/:
# cp /usr/share/doc/nut-cgi/examples/*.* /etc/nut
(Luego habrá que renombrarlos quitándole la terminación *.sample.)
Una vez hecho esto, se ha de editar el archivo hosts.conf para indicar a qué SAIs se quiere permitir el acceso desde el servicio web. Un ejemplo de contenido sería el siguiente:
MONITOR misai@localhost “Belkin Active Battery Backup”
Por último, se ha de editar el archivo /etc/nut/upsset.conf para indicar desde qué equipos puede accederse al script cgi. Un ejemplo de contenido sería el siguiente:
<Files upsset.cgi>
deny from all
allow from 192.168.0.0
</Files>
De esta manera, estamos indicando que sólo puede accederse desde los equipos pertenecientes a la red local.
Para acceder al scritp, hemos de entrar en la siguiente dirección desde nuestro navegador favorito:
http://IP/cgi-bin/nut/upsstats.cgi
Las pantallas de monitorización serían como las siguientes:

Pantalla inicial de nut-cgi

Monitorización del SAI