Archivo de etiquetas de 'servidor'

UUID: Una Buena Solución Para Evitar Problemas de Montaje

A veces, incluir un nuevo disco duro en nuestro servidor puede ser cuanto menos una odisea. Me refiero al hecho de que en alguna ocasión el sistema renombra los /dev/sdxx de nuevo, con un orden distinto al que había antes. Esto, como es lógico supone un problema de montaje. La solución es bastante sencilla. Basta con reconfigurar el archivo fstab, cambiando los /dev/sdxx de cada disco duro por su UUID.

Para averiguar el UUID de cada disco duro:

# blkid

Arrojará algo como esto:

/dev/sda1: UUID=”7ae64ce1-cd96-459d-ab78-5ad34b475660″ TYPE=”ext3″
/dev/sda5: TYPE=”swap”
/dev/sda6: UUID=”cf8ce289-0418-456a-952b-707750728f25″ TYPE=”ext3″

Como vemos la partición swap no ha sido mostrada. Para que se nos muestre la partición swap:

# swapoff -a

# mkswap /dev/sda5

Configurando espacio de intercambio versión 1, tamaño = 3043315 kB
no label, UUID=50ebe50e-a41f-42db-bb7b-4ee5d4ef021e

# swapon -a

(donde /dev/sda5 es la partición swap en el ejemplo)

Ahora cada vez que usemos el comando blkid nos mostrará también el UUID de la partición swap.

# blkid

/dev/sda1: UUID=”7ae64ce1-cd96-459d-ab78-5ad34b475660″ TYPE=”ext3″
/dev/sda5: TYPE=”swap” UUID=”50ebe50e-a41f-42db-bb7b-4ee5d4ef021e”
/dev/sda6: UUID=”cf8ce289-0418-456a-952b-707750728f25″ TYPE=”ext3″

Luego debemos modificar el alchivo fstab sustituyendo el nombre de las particiones /dev/sdxx por el del UUID de forma que queda algo como lo siguiente:

# nano /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
UUID=7ae64ce1-cd96-459d-ab78-5ad34b475660 /               ext3    errors=remount-ro 0       1
UUID=cf8ce289-0418-456a-952b-707750728f25 /home           ext3    defaults        0       2
UUID=50ebe50e-a41f-42db-bb7b-4ee5d4ef021e none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Ahora ya no importa si conectamos un nuevo disco duro al servidor.

Cambio de Placa Base en el Servidor

Hace poco tuve un problema con el servidor: kernel panic. Después de googlear un poco, averigué que todo apuntaba a un fallo de memoria. La odisea para intentar depurar el error fue muy engorrosa, y aunque me olía que uno de los módulos podía estar dañado, no acabé de confiar y decidí cambiar la placa base (Asus P5QC por una Aus P5K-E). En realidad era del otro pc que tengo en casa. Mantuve el procesador (un poco más veloz que el del servidor aunque también Core 2 Duo) y mantuve la memoria instalada (2G+2G). ¿Como lo hice? pues “a las bravas” que dirían por México: cambié todo diréctamente y arranqué el servidor. Inició perfecto sin fallo aparente, aunque un diagnóstico posterior sacó a relucir un error en la conexión a internet (fallo de la tarjeta de red). De hecho fue lo único que no reconoció, lo demás (puertos usb, pci, controlador sata, etc) lo reconoció sin problemas. Sin embargo un análisis posterior arrojó la conclusión de que en realidad sí reconoció la tarjeta de red, pero la renombró como eth2 en lugar de eth0.

Basandome en las indicaciones de diegoacosta busqué en el directorio /etc/udev/rules.d/ el fichero correspondiente a la configuración de red de mi servidor (/etc/udev/rules.d/70-persistent-net.rules) que contenía la siguiente información:

# PCI device 0×1969:0×1026 (ATL1E)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:22:………”, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

# Firewire device  (nodemgr)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1e:
………“, ATTR{type}==”24″, KERNEL==”eth*”, NAME=”eth1″

# PCI device 0×11ab:0×4364 (sky2)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1d:
………“, ATTR{dev_id}==”0×0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth2″

# USB device 0×0bda:0×8187 (rtl8187)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:15:
………“, ATTR{dev_id}==”0×0″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″

En este caso, la interfaz nueva es la que tiene la mac 00:1d:………, es suficiente con borrar la línea correspondiente a la mac antigua y cambiar eth2 por eth0:

# PCI device 0×11ab:0×4364 (sky2)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1d:
………“, ATTR{dev_id}==”0×0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

# USB device 0×0bda:0×8187 (rtl8187)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:15:
………
“, ATTR{dev_id}==”0×0″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″

Luego de hacer el cambio, simplemente se reinicia el ordenador y listo.

Montaje de un Servidor Ciego con Debian Lenny (16.-Instalación de TorrentFlux-b4rt)

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.

Montaje de un Servidor Ciego con Debian Lenny (15.-Servidor DNS con Bind9)

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

Montaje de un Servidor Ciego con Debian Lenny (14.-Seguridad con Fail2ban)

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

Un Poco de Seguridad en las Transmisiones FTP: ProFTPD con TLS

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

Monitorización de un SAI en Debian Lenny

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:

  • nut-usb: Necesario si el SAI sólo tiene conexión USB (el Yukai dispone de puerto serie y USB; yo he elegido utilizar el puerto serie para tener un puerto USB más disponible)
  • nut-snmp: Necesario si se necesita un driver SNMP para monitorizar el SAI en red local
  • nut-cgi: Este paquete ofrece una interfaz web, programada en CGI, para monitorizar el SAI desde un navegador web
  • knutclient: Este paquete proporciona una aplicación cliente de KDE para monitorizar el SAI

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
Pantalla inicial de nut-cgi

Monitorización del SAI
Monitorización del SAI

Montaje de un Servidor Ciego con Debian Lenny (13.-Servidor de Archivos NFS)

Antes de nada aprenderemos a formatear y particionar un nuevo disco duro desde la consola en Debian. Esto nos será muy útil para poder añadirle discos duros a nuestro servidor cuando lo necesitemos, ya que no disponemos de monitor ni entorno gráfico para hacerlo como de costumbre.

Conectamos el disco duro a la placa base y le suministramos alimentación (en mi caso voy a probar con un disco muy antiguo de 8 Gb que resucité de un pc antiguo). Una vez hecho esto, iniciamos el servidor y desde un terminal nos logeamos como root y tecleamos:

#fdisk -l

Veremos algo parecido a esto:

Disco /dev/hda: 80.0 GB, 80026361856 bytes

255 heads, 63 sectors/track, 9729 cylinders

Units = cilindros of 16065 * 512 = 8225280 bytes

Disk identifier: 0xe29f786e

Disposit. Inicio Comienzo Fin Bloques Id Sistema

/dev/hda1 * 1 9399 75497436 83 Linux

/dev/hda2 9400 9729 2650725 5 Extendida

/dev/hda5 9400 9729 2650693+ 82 Linux swap / Solaris

Disco /dev/hdc: 8455 MB, 8455200768 bytes

255 heads, 63 sectors/track, 1027 cylinders

Units = cilindros of 16065 * 512 = 8225280 bytes

Disk identifier: 0×753fd0ae

Disposit. Inicio Comienzo Fin Bloques Id Sistema

Como podéis ver en la imagen el disco duro de 80 Gb es el que tiene ya las particiones echas, las tres ultimas lineas ofrecen información sobre el disco duro de 8 Gb.

Seguidamente vamos a editar el segundo disco llamando al dispositivo en cuestión. En mi caso hdc:

#fdisk /dev/hdc

Veremos algo como:

El número de cilindros para este disco está establecido en 1027.

No hay nada malo en ello, pero es mayor que 1024, y en algunos casos

podría causar problemas con:

1) software que funciona en el inicio (p.ej. versiones antiguas de LILO)

2) software de arranque o particionamiento de otros sistemas operativos

(p.ej. FDISK de DOS, FDISK de OS/2)

Orden (m para obtener ayuda):

Como podéis ver nos muestra un aviso así que no tenemos que hacerle demasiado caso ya que solo me sale en discos duros grandes y de momento no me a dado problemas.

Pulsamos la tecla n para crear una nueva partición.

Acción de la orden

e Partición extendida

p Partición primaria (1-4)

Primero nos deja optar por si vamos a querer que nuestra partición sea primaria o extendida. En mi caso voy a usar este disco con una sola partición así que voy a elegir primaria pulsando la tecla p

Número de partición (1-4):

Para el numero de partición introducimos el 1

Primer cilindro (1-1027, valor predeterminado 1):

Pulsamos la tecla Enter

Se está utilizando el valor predeterminado 1

Último cilindro o +tamaño o +tamañoM o +tamañoK (1-1027, valor predeterminado 1027):

Pulsamos la tecla Enter y listo

Orden (m para obtener ayuda):

Ahora guardamos los cambios y salimos del programa fdisk con la tecla w

Llamando a ioctl() para volver a leer la tabla de particiones.

Se están sincronizando los discos.

Una vez echo esto lo que aremos a continuación es darle formato para que sea compatible con nuestro Linux formateando la partición en ext3 con el siguiente comando:

#mkfs.ext3 /dev/hdc1

Veremos algo así:

mke2fs 1.41.3 (12-Oct-2008)

Etiqueta del sistema de ficheros=

Tipo de SO: Linux

Tamaño del bloque=4096 (bitácora=2)

Tamaño del fragmento=4096 (bitácora=2)

516096 nodos-i, 2062336 bloques

103116 bloques (5.00%) reservados para el superusuario

Primer bloque de datos=0

Número máximo de bloques del sistema de ficheros=2113929216

63 bloque de grupos

32768 bloques por grupo, 32768 fragmentos por grupo

8192 nodos-i por grupo

Respaldo del superbloque guardado en los bloques:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Escribiendo las tablas de nodos-i: hecho

Creating journal (32768 blocks): hecho

Escribiendo superbloques y la información contable del sistema de ficheros: hecho

Una vez completado el formateo veremos un mensaje informándonos sobre cuando se ejecutara una revisión del disco en busca de errores.

Este sistema de ficheros se revisará automáticamente cada 28 montajes o

180 días, lo que suceda primero. Utilice tune2fs -c o -i para cambiarlo.

Ahora vamos a montar esta partición, en mi caso la voy a usar como almacén y necesitamos crear un directorio para montar dicha partición. Creamos el directorio donde queremos que se monte nuestra nueva partición:

#mkdir /mnt/almacen

Ahora vamos a introducir los datos de esta partición en el fichero fstab para que al arrancar el ordenador se monte automáticamente como una partición mas del sistema.

#nano /etc/fstab

Veremos algo así:

# /etc/fstab: static file system information.

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

/dev/hda1 / ext3 errors=remount-ro 0 1

/dev/hda5 none swap sw 0 0

Lo que vamos a introducir son los datos de nuestra partición especificando en que directorio queremos que nos la monte. En mi caso voy a usarla de almacén y la voy a montar dentro de la carpeta de montaje mnt con el nombre almacen como podéis ver a continuación:

# /etc/fstab: static file system information.

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

/dev/hda1 / ext3 errors=remount-ro 0 1

/dev/hda5 none swap sw 0 0

/dev/hdc1 /mnt/almacen ext3 noatime 0 1

Ahora hacemos una prueba y cargamos todo el contenido del fichero fstab con el comando:

#mount -a

Desde ya tendríamos que tener la partición montada y lista para ser usada en /mnt/almacen, vamos a ver si esta montada ejecutando el comando:

#mount

Veremos que está montada correctamente:

/dev/hda1 on / type ext3 (rw,errors=remount-ro)

tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)

proc on /proc type proc (rw,noexec,nosuid,nodev)

sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)

procbususb on /proc/bus/usb type usbfs (rw)

udev on /dev type tmpfs (rw,mode=0755)

tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)

devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)

/dev/hdc1 on /mnt/almacen type ext3 (rw,noatime)

Y una vez visto esto, vamos a ver cómo configurar un servidor NFS en Linux para poder compartir una partición en nuestra red local y montarlo como si de una unidad mas se tratase en un cliente remoto.

Para comenzar vamos a abrir una terminal, nos identificaremos con nuestro súper usuario root e instalaremos los paquetes necesarios para la configuración de servidor de archivos NFS. Mas adelante configuraremos los clientes:

#apt-get install portmap

#apt-get install nfs-common

#apt-get install nfs-kernel-server

En la instalación de este ultimo veremos una pantalla como esta

nfs

Seleccionamos la opción Keep your currently-installed version y continuamos ejecutando el comando:

#rpcinfo -p

Nos mostrará un resultado como este:

programa vers proto puerto

100000 2 tcp 111 portmapper

100000 2 udp 111 portmapper

100024 1 udp 39787 status

100024 1 tcp 42048 status

100003 2 udp 2049 nfs

100003 3 udp 2049 nfs

100003 4 udp 2049 nfs

100021 1 udp 36153 nlockmgr

100021 3 udp 36153 nlockmgr

100021 4 udp 36153 nlockmgr

100003 2 tcp 2049 nfs

100003 3 tcp 2049 nfs

100003 4 tcp 2049 nfs

100021 1 tcp 51935 nlockmgr

100021 3 tcp 51935 nlockmgr

100021 4 tcp 51935 nlockmgr

100005 1 udp 40975 mountd

100005 1 tcp 47076 mountd

100005 2 udp 40975 mountd

100005 2 tcp 47076 mountd

100005 3 udp 40975 mountd

100005 3 tcp 47076 mountd

Tenéis que tener los mismos servicios que yo, así que si no ves alguno de ellos revisa la instalación de los programas anteriores.

Ahora necesitamos saber la ruta donde se encuentra la partición o directorio que queremos compartir con las maquinas conectadas a nuestra red. En mi caso voy a compartir un disco duro completo que usare como almacén de datos (el de 8 Gb), esté lo tengo montado en la ruta /mnt/almacen del servidor.

Para configurar la compartición de forma que todos los archivos que se creen en el servidor sean de un mismo propietario y grupo, sea cual sea el terminal desde el que se acceda, vamos a crear un propietario nuevo llamado nfs. Lo crearemos sin directorio home puesto que no vamos a darle uso como un usuario normal sino tan solo como propietario de los archivos compartidos de la red local.

#adduser –no-create-home nfs

Y modificamos los números UID y GID asignados por defecto en los archivos passwd y group, cambiándolos por 1111 y 1111, respectivamente. Esto lo hacemos para evitar que los números UID y GID del usuario nfs creado en el servidor coincida con los números UID y GID de otro usuario creado en otro teminal de la red y por tanto, los archivos creados desde allí aparezcan con el propietario del terminal (aunque sólo aparecerían en el propio terminal ya que si los viésemos desde el servidor aparecerían como propietario nfs).

#nano /etc/passwd

#nano /etc/group,

Una vez hecho esto necesitamos editar el archivo exports para indicarle que particiones o directorios queremos compartir.

#nano /etc/exports

Añadiremos lo siguiente:

# /etc/exports: the access control list for filesystems which may be exported

# to NFS clients. See unfsd(8).

/mnt/almacen 192.168.0.*(rw,sync,all_squash,anonuid=1111,anongid=1111)

donde /mnt/almacen es la ruta de montaje, 192.168.0.*es la ip broadcast acabada en asterisco, y (rw,sync,all_squash,anonuid=1111,anongid_1111) son las carácetrísticas que podemos darle al disco:

rw: permiten exportar el recurso para escritura y lectura.

sync:ndica que se realicen las operaciones de escritura en el disco instantáneamente. Permite una mayor tolerancia ante una falla del sistema que pudiera provocar inconsistencias en el file system, pero empeora el desenvolvimiento. Por defecto es async (la opuesta de sync).

all_squash:habilita el squashing para todos los usuarios, o sea todos los identificadores en el cliente se mapean al identificador del usuario nobody en el servidor.

anonuid y anongid:indican que al hacer squash no se traduzcan los identificadores de grupo y usuario a los de nobody sino a los del usuario y grupo indicados mediante estas opciones.

Si quisiéramos podríamos compartir X directorio con maquinas especificas y con permisos diferentes dependiendo de nuestras necesidades. Yo como quiero compartir esta unidad con toda mi red he optado por dar permisos de lectura y escritura para toda la red y no para una maquina especifica.

Damos permisos para que todos puedan leer y escribir en la unidad:

#chmod -R 777 /mnt/almacen

Seguidamente reiniciamos el servidor NFS para que coja los cambios que acabamos de hacer con:

#/etc/init.d/nfs-kernel-server restart

Ahora vamos a configurar el ordenador cliente. Existen dos formas:

1.-Mediante el archivo fstab

Para ello instalamos:

#apt-get install nfs-common

Luego creamos la carpeta donde se montará el disco:

#mkdir /mnt/servidor_almacen

Para que cuando arranque el solito nos conecte a nuestra unidad de red automáticamente vamos a configurar el fichero de montaje de unidades fstab y agregaremos nuestro nuevo dispositivo:

#nano /etc/fstab

Añadimos:

# /etc/fstab: static file system information.

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

/dev/sda1 / ext3 errors=remount-ro 0 1

/dev/sda6 /home ext3 defaults 0 2

/dev/sdb1 /media/datos01 ext3 defaults 0 2

/dev/sda5 none swap sw 0 0

/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0

/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

192.168.0.XXX:/mnt/almacen /mnt/servidor_almacen nfs rw,hard,intr,user,defaults 0 0

Si nos fijamos en el ejemplo he agregado en la ultima linea la dirección ip de mi servidor, el directorio de montaje y la ruta donde quiero que se monte la unidad compartida.

2.-Mediante autofs

Para ello tendremos que instalar:

#apt-get install nfs-common

#apt-get install autofs

Esta otra forma de montaje en mi opinión es mejor. Lo que vamos a hacer es no montar desde el arranque el disco compartido, si no que sólo lo montaremos cuando accedamos a él. Mientras permanecerá sin montar. ¿Qué ventajas tiene esto? Bueno, para empezar que si no tenemos en un determinado momento el servidor encendido no pasará nada. En cambio con fstab intentará montar el disco (aunque con la opción soff en lugar de hard evitamos en cierto modo esto). Otra ventaja es que cuando son muchos clientes ahorramos recursos.

Autofs consulta el mapa maestro del archivo de configuración /etc/auto.master para ver qué puntos de montaje se han definido. Luego arranca un proceso automount con los parámetros adecuados para cada punto de montaje. Cada línea del mapa maestro define un punto de montaje y un archivo de mapa separado que define el sistema de archivos que se tiene que montar en este punto de montaje. Vamos a añadir un punto de montaje al archivo auto.master

#nano /etc/auto.master

Agregamos la línea dejándolo tal que así.

#

# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $

#

# Sample auto.master file

# This is an automounter map and it has the following format

# key [ -mount-options-separated-by-comma ] location

# For details of the format look at autofs(5).

#/misc /etc/auto.misc –timeout=60

#/smb /etc/auto.smb

#/misc /etc/auto.misc

#/net /etc/auto.net

/servidor /etc/auto.servidor –timeout=60

La estructura es <Punto de Montaje> <Ruta archivo auto.montaje> y una tercera opción <–timeout=xx> para indicar tiempo de desmontaje desde que entramos por última vez.

Ahora vamos a crear el archivo auto.servidor y en él especificaremos la carpeta de montaje, las opciones para definir el montaje y la ruta con la ip del servidor del disco a montar. Pondremos algo tal que así:

almacen -rw,soft,intr,rsize=8192,wsize=8192 192.168.0.XXX:/mnt/almacen

Como podemos ver <almacen> será el nombre de la carpeta donde se nos montará el disco. Luego vemos las opciones precedidas de un – <–opciones> y por último <ipdelservidor:rutacompartir>.

Ahora, podemos crear un accedo directo en cualquier parte para que se nos muestre la carpeta.

#ln -s /servidor/almacen /mnt/servidor_almacen

También compartiremos por ejemplo el directorio que antes creamos para el servicio FTP. Para ello, abrimos como root el archivo exports

#nano /etc/exports

Yagregamos la línea:

ftp -rw,soft,intr,rsize=8192,wsize=8192 192.168.0.XXX:/home/ftp

Ahora le cramos un acceso directo:

#ln -s /servidor/ftp /mnt/servidor_ftp

De este modo podremos gestionar los archivos del servidor FTP a través de un gestor de archivos desde cualquier terminal de la red.

CURIOSIDADES

http://miguelcarmona.name/blog/windows-como-cliente-nfs

Si tenemos algún PC con windows, existe una forma sencilla de acceder a nuestro servidor linux sin tener que instalar y configurar Samba (que sería más idóneo que NFS para estos casos).

Descargamos el software Servicios de Windows para UNIX 3.5 desde http://www.microsoft.com/downloads/details.aspx?familyid=896C9688-601B-44F1-81A4-02878FF11778&displaylang=en

Si tenemos Windows Xp Home, el software no funcionará para esta versión. En esta dirección http://oreilly.com/pub/h/2883 explican como corregirlo.

Extraemos los archivos (en una ruta que recordemos, por ejemplo c:\UNIX_services).

Lanzamos el asistente de instalación, aceptamos la licencia y elejimos “Custom Instalation”

Desactivamos todas las entradas excepto “Client for NFS” y “Authentication tools for NFS

Continuamos, finalizamos y reiniciamos el equipo

En cualquier explorador de windows, elejimos Herramientas -> Conectar a unidad de red. Elejimos letra de unidad y en carpeta, introducimos los datos de acceso con la siguiente estructura:

servidor:/ruta_al/recurso_compartido/

Finalizamos y nos saldrá una confirmación con el usuario por el cual se está conectando al servidor nfs. Podemos también Examinar y seleccionar los recursos compartidos.

Montaje de un Servidor Ciego con Debian Lenny (12.-Encendido Remoto con Wake On Lan)

fuente: http://usuariodebian.blogspot.com

Aprovechando que los ordenadores actuales no están totalmente apagados sino en reposo, es decir con alimentación constante mientras lo tenemos apagado, podemos encenderlos remotamente.

Wake On LAN (WOL) es un estándar de redes que permite encender un equipo de forma remota, mediante el envío de un paquete mágico (Magic Packet). Magic Packet es, como indica la propia palabra, un paquete especial que recibe la tarjeta de red.

Las utilidades que se le pueden dar son muy variadas, desde encender un servidor web/ftp, acceder a los archivos que guardas en tu ordenador, o en el ordenador del trabajo y hasta por pura vagancia para no tener que levantarse e ir a la habitación de al lado.

Requisitos necesarios:

1.-Disponer de una fuente de alimentación ATX, actualmente todos los equipos incorporan fuentes ATX, pero todavía nos podemos encontrar con algunos equipos antiguos que usan fuentes AT, las cuales son incompatibles con Wake On LAN (WOL). Las antiguas fuentes AT se activan mediante un interruptor que proviene de la misma fuente a través de un cable, mientras que las ATX la enciende y la apaga la placa base. Esto hace imposible un encendido por software con fuente AT ya que cuando apagamos el ordenador no existe corriente alguna en la placa base.

Como distinguir entre un conector AT y otro ATX

2.- Disponer de una placa base con soporte wake on lan (wol), y activarla la opción correspondiente en la BIOS.

3.- Tener una tarjeta de red con soporte wake on lan (wol), la tarjeta de red debe tener un cable de tres pines que es necesario conectar a la placa base


A si es como quedaría la tarjeta de red en la placa base vista desde arriba.

Activar en la BIOS el soporte para Wake On LAN. Dependiendo de la BIOS que utilice tu ordenador se habilitara con una opción u otra diferente.

Si la tarjeta de red viene integrada en la placa base no hará falta conectar ningún tipo de cable adicional, lo único necesario en este caso en configurar la BIOS.

Para finalizar la explicación, conviene saber que hay dos estándares de administración de energía, APM y ACPI. El segundo es mas reciente y se diseñó para sustituir al estándar APM incluyendo nuevas características. Algunos equipos soportan ambos, pero no se pueden tener activados simultáneamente.

Si no se tiene activado ninguno será imposible encender por software nuestro equipo, ya que al apagarlo lo hacemos del todo. Lo más conveniente es activar el estándar ACPI si es posible, ya que incluye más opciones de configuración, tal y como muestro aquí:

  • S0 Encendido y completamente operativo.

  • S1 El sistema esta en modo baja energía (sleep mode). El reloj de la CPU parado, pero la RAM esta encendida y operativa

  • S2 Similar al anterior, solo que la CPU está totalmente apagada.

  • S3 La RAM se encuentra en standby, con la mayoría de los otros componentes apagados.

  • S4 Modo hibernación.

  • S5 Completamente apagado.

La elección que debemos hacer es la S3, o en su defecto la S1 (Muchas placas solo permiten estos dos modos

Instalación en el ordenador que estará apagado, o sea el servidor

Instalamos los paquetes necesarios. Para ello nos logeamos como root:

#apt-get install ethtool etherwake wakeonlan

En primer lugar usaremos el comando ethtool, con este programa podremos ver y modificar las características y configuración de la tarjeta de red. Lo usamos en el ordenador que queremos “encender remotamente”, este comando nos informa si nuestra tarjeta de red tiene soporte Wake On LAN (WOL)

#ethtool eth0

Se nos mostrará algo así:

Settings for eth0:

Supported ports: [ TP MII ]

Supported link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

Supports auto-negotiation: Yes

Advertised link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

Advertised auto-negotiation: Yes

Speed: 100Mb/s

Duplex: Full

Port: MII

PHYAD: 32

Transceiver: internal

Auto-negotiation: on

Supports Wake-on: pumbg

Wake-on: d

Current message level: 0×00000007 (7)

Link detected: yes

Como vemos, esta tarjeta soporta Wake On LAN (WOL), eso nos dice la linea siguiente:


Supports Wake-on: pumbg

También nos dice que esta desactivado, en la siguiente linea:


Wake-on:d

d= disable (desactivado)

Para activarlo no tenemos nada más que hacer:

#ethtool -s eth0 wol g

Si volvemos a teclear en consola ethtool eth0 tendremos que ver:

Settings for eth0:

Supported ports: [ TP MII ]

Supported link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

Supports auto-negotiation: Yes

Advertised link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

Advertised auto-negotiation: Yes

Speed: 100Mb/s

Duplex: Full

Port: MII

PHYAD: 32

Transceiver: internal

Auto-negotiation: on

Supports Wake-on: pumbg

Wake-on: g

Current message level: 0×00000007 (7)

Link detected: yes

Ahora, para que la tarjeta de red active siempre que se encienda el servidor esta opción por defecto, configuraremos el archivo interfaces colocando la siguiente línea up ethtool -s eth0 wol g justo debajo de la configuración de la tarjeta.

#nano /etc/network/interfaces

Se nos quedará algo así:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet static

up ethtool -s eth0 wol g

address 192.168.0.XXX # IP del Servidor

netmask 255.255.255.0 # Máscara de Subred

network 192.168.0.0 # Grupo de Trabajo

broadcast 192.168.0.255 # Bcast

gateway 192.168.0.1 # IP del Router

Instalación en el ordenador que estará encendido

En este ordenador, el que tiene que enviar el paquete mágico (Magic Packet), instalamos uno de estos dos paquetes:

#apt-get install etherwake

o
#apt-get install wakeonlan

pero hemos de diferenciar entre uno y otro, etherwake necesitas de privilegios de root, y wakeonlan cualquier usuario puede hacer uso de el.

el método es bien sencillo

# etherwake -i “interfaz para el envio” “MAC address del ordenador remoto” mac=”" del=”" equipo=”" remoto=”"

Ejemplo ficticio:
# etherwake -i eth1 11:22:33:44:55:66

Si no especificamos “la interfaz para el envío” con la opción -i, el paquete mágico (Magic Packet) sera enviado a través de la interfaz por defecto establecida por el programa eth0.

Ejemplos ficticio:


# etherwake 11:22:33:44:55:66

o bien usando este otro programa:

$ wakeonlan “MAC address del ordenador remoto”

Ejemplos ficticio:


$ wakeonlan 11:22:33:44:55:66

Para conocer la dirección MAC de nuestra tarjeta no tenemos más que teclear:

#ifconfig

Obtendremos

eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx

inet addr:192.168.0.XXX Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::280:5aff:fe68:fe96/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:231 errors:0 dropped:0 overruns:0 frame:0

TX packets:182 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:24947 (24.3 KiB) TX bytes:19077 (18.6 KiB)

Interrupt:17 Base address:0xa800

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:8 errors:0 dropped:0 overruns:0 frame:0

TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)

donde xx:xx:xx:xx:xx:xx es la MAC.

Con esto nos conectaremos desde nuestra red privada. Conectarnos desde internet es harina de otro costal…

Montaje de un Servidor Ciego con Debian Lenny (11.-Estadísticas con Awstats)

Una vez completemos la instalación y configuración de este software tendremos información al detalle como por ejemplo el tiempo que ha estado un usuario conectado a nuestra web, visitas por mes, semana, día, de donde provienen las visitas, en fin todo lo que necesitamos saber de lo que viene a ver que tenemos en nuestro servidor.

Para su instalación vamos a comenzar por arrancar nuestro servidor, nos logeamos como usuario root y lo instalamos:

#apt-get install awstats

Para su instalación en el sistema vamos a ejecutar un script de configuración escrito en Perl situado en la ruta ( /usr/share/doc/awstats/examples )

#cd /usr/share/doc/awstats/examples

#perl awstats_configure.pl

Para su configuración nos encontraremos con algunas preguntas que tendremos que responder. Lo que esta en negrita son las respuestas:

—– AWStats awstats_configure 1.0 (build 1.7) (c) Laurent Destailleur —–

This tool will help you to configure AWStats to analyze statistics for

one web server. You can try to use it to let it do all that is possible

in AWStats setup, however following the step by step manual setup

documentation (docs/index.html) is often a better idea. Above all if:

- You are not an administrator user,

- You want to analyze downloaded log files without web server,

- You want to analyze mail or ftp log files instead of web log files,

- You need to analyze load balanced servers log files,

- You want to ‘understand’ all possible ways to use AWStats…

Read the AWStats documentation (docs/index.html).

—–> Running OS detected: Linux, BSD or Unix

Warning: AWStats standard directory on Linux OS is ‘/usr/local/awstats’.

If you want to use standard directory, you should first move all content

of AWStats distribution from current directory:

/usr/share/doc/awstats/examples

to standard directory:

/usr/local/awstats

And then, run configure.pl from this location.

Do you want to continue setup from this NON standard directory [yN] Y

—–> Check for web server install

Enter full config file path of your Web server.

Example: /etc/httpd/httpd.conf

Example: /usr/local/apache2/conf/httpd.conf

Example: c:\Program files\apache group\apache\conf\httpd.conf

Config file path (’none’ to skip web server setup):

>/etc/apache2/apache2.conf

—–> Check and complete web server config file ‘/etc/apache2/apache2.conf’

—–> Need to create a new config file ?

Do you want me to build a new AWStats config/profile

file (required if first install) [y/N] ? N

—–> Add update process inside a scheduler

Sorry, configure.pl does not support automatic add to cron yet.

You can do it manually by adding the following command to your cron:

/usr/share/doc/awstats/examples/wwwroot/cgi-bin/awstats.pl -update -config=myvirtualserver

Or if you have several config files and prefer having only one command:

/usr/share/doc/awstats/examples/tools/awstats_updateall.pl now

Press ENTER to continue…

No config file was built. You can run this tool later to build as

much config/profile files as you want.

Once you have a config/profile file, for example ‘awstats.demo.conf’,

You can manually update your statistics for ‘demo’ with command:

> perl awstats.pl -update -config=demo

You can also read your statistics for ‘demo’ with URL:

> http://localhost/awstats/awstats.pl?config=demo

Press ENTER to finish…

Una vez completada la instalación vamos a configurar el archivo awstats.conf que se encuentra en la ruta /etc/awstats/

#nano /etc/awstats/awstats.conf

Una vez dentro buscamos la linea …

LogFile=”/var/log/apache/access.log”

y la substituimos por …

LogFile=”/var/log/apache2/access.log”

Cambiamos la linea …

LogFormat=4

por …

LogFormat=1

Buscamos la linea …

SiteDomain=””

Aquí vamos a indicarle cual es nuestro dominio, para esto vamos a usar el nombre que le pusimos a nuestro servidor.

SiteDomain=”ejemmplo.no-ip.info”

Una vez hechas estas modificaciones guardamos y guardamos y salimos.

Ahora vamos ha hacer una copia de este fichero pero con nuestro nombre de dominio, adjuntando awstats y conf

#cd /etc/awstats/

#cp awstats.conf awstats.ejemplo.no-ip.info.conf

Vamos a darle permisos al fichero log que almacena apache2 para que awstats pueda leerlo sin problemas

#chmod o+r /var/log/apache2/access.log

Ahora vamos a ejecutar la configuración que antes hicimos con el archivo awstats.conf pero para nuestro servidor

#/usr/lib/cgi-bin/awstats.pl -config=awstats.ejemplo.no-ip.info.conf

Una vez hecho esto se actualizara y tomara la información de los ficheros Log de nuestro apache2.

Ahora vamos a crear un enlace simbólico de la carpeta cgi-bin que awstats nos a creado en la ruta /usr/lib/ hacia el directorio de nuestro servidor. Nos logemamos como usuarioweb y

$ln -s /usr/lib/cgi-bin /home/usuarioweb/www/cgi-bin

Podemos restringir su acceso creando un archivo .htaccess en el interior de la carpeta cgi-bin.

Seguidamente configuraremos el fichero apache2.conf para que se muestren bien las imágenes en los resultados de las estadísticas. Nos logeamos como root y

#nano /etc/apache2/apache2.conf

Nos situamos al final del fichero y agregamos las siguiente lineas …

Alias /awstatscss “/usr/share/doc/awstats/examples/css/”

Alias /awstatsicons “/usr/share/awstats/icon/”

ScriptAlias /awstats/ “/usr/lib/cgi-bin/”

y finalmente agregaremos estas lineas al final del archivo

Alias /awstats-icon/ /usr/share/awstats/icon/

<Directory /usr/share/awstats/icon>

Options None

AllowOverride None

Order allow,deny

Allow from all

</Directory>

Guardamos y cerramos.

Ahora podemos abrir un navegador y veremos los resultados de todo esto (modifica la dirección y el archivo de awstats)

http://ejemplo.no-ip.info/cgi-bin/awstats.pl?config=awstats.ejemplo.no-ip.info.conf

Como podéis ver el programa de estadísticas esta listo para mostrarnos todo lo que hacen nuestros usuarios, con que lo hacen y cuando lo hacen. Si queremos que no todo el mundo pueda acceder a él tendremos que proteger la carpeta /home/usuarioweb/www/cgi-bin con un archivo .htaccesss, tal y como se describió en el apartado de apache2.

Ya tan solo nos queda un ultimo paso para automatizar la tarea de actualización de este programa. Para esto vamos a usar el programador de tareas Crontab que lleva nuestra Linux Debian de serie.

Con lo que veremos a continuación vamos ha hacer que se actualice una vez cada 60 minutos, así no sobrecargamos mucho nuestra maquina y tenemos prácticamente actualizada la información a la hora de verla.

Programamos la tarea

#nano /etc/crontab

Veremos algo así:

# /etc/crontab: system-wide crontab

# Unlike any other crontab you don’t have to run the `crontab’

# command to install the new version when you edit this file

# and files in /etc/cron.d. These files also have username fields,

# that none of the other crontabs do.

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command

17 * * * * root cd / && run-parts –report /etc/cron.hourly

25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.daily )

47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.weekly )

52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.monthly )

Nos situamos en el final del fichero y pegamos esta linea

0-59/60 * * * * root /usr/lib/cgi-bin/awstats.pl -config=ejemplo.no-ip.info -update >/dev/null

Ahora ya tenemos el programa AwStats funcionando y esperando movimiento en nuestro servidor para ofrecernos las estadísticas al detalle.