Archivo de la Categoría 'cartas náuticas'

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.

DOSBox en Debian Lenny

Después de un tiempo incierto sin escribir nada voy a retomar el blog hablando de DOSBox.

DOSBox es una emulación de DOS, útil cuando por alguba razón necesitamos correr algún programa escrito para MS-DOS y no tenemos más que linux para trabajar, o bien cuando por ejemplo queremos jugar a algún juego abandoware (que no se ejecute con scummvm).

Lo bueno es que es realmente sencillo.

Instalación:

# apt-get install dosbox

¿Como usarlo?

Primero lanzarlo:

$ dosbox

Para pasar el teclado a español:

Z:\> keyb sp

Para montar una unidad C en tu directorio de usuario:

Z:\> mount c /home/usuario/

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

Mostrar el Uso de Espacio en Disco desde Consola

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

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.