lunes, 10 de diciembre de 2007

Comandos Utiles Linux III

Dejo este post para ampliar algo el que puse en su día sobre los comandos para controlar el sistema.

Un uso habitual de ps es ps -auxf que muestra los procesos con las dependencias entre padres e hijos.

También se puede ver el uso de memoria y cpu (como el administrador de tareas de Windows, pero en modo texto) con el comando top.

Si queremos saber cuanta memoria se está usando y de que tipo (si Ram o swap) usamos el comando free.

Para controlar los puertos abiertos y en 'escucha' usamos netstat de la siguiente manera, netstat -ln que es equivalente a netstat -a | grep ESCUCHANDO (o LISTEN).

Y con iptables controlamos el cortafuegos a nivel de núcleo. Con iptables -L -n nos muestra en pantalla todas las reglas activas (en otro post posterior ya hablaré del iptables, que se merece una atención especial).

Para finalizar, si queremos escanear algún otro ordenador desde la red, vamos a usar nmap de la siguiente manera, nmap -sS -vv -p1-65535 -P0 mi.maquina.com, para que busque en todos los puertos desde el 1 hasta el 65535 sin hacer un ping previo (si la máquina está medio protejida rechazará los pings).

Que os aproveche.

[Error] Falta ntldr

Hace un momento acabo de solventar el bien conocido problema de "Falta ntldr. Presione Ctrl+Alt+Supr para reiniciar el sistema".


Sí, ya sé que no es nuevo y que la solución es muy sencilla, pero paso a ponerla aquí para la próxima vez que me ocurra poder ir al grano y no ponerme a buscar por el google (como decía el aquel, "tempus fugit").


Los pasos son los siguientes:
1.- Arrancar el pc con el disco de XP y elegir Reparar Sistema cuando aparezca el Asistente de instalación.
2.- Montar la partición donde tenemos Windows instalado (normalmente la 1) e introducir la contraseña del administrador (el 80% de los casos está vacía, así que a darle a Intro).
3.- Teclear fixmbr, darle a Intro y decir que sí a realizar la acción.
4.- Para asegurarnos de que todo vaya a ir bien copiar los ficheros ntldr y ntdetect.com del cd en la partición

copy d:\i386\ntldr c:\
copy d:\i386\ntdetect.com c:\

Siendo d: la unidad del cd desde el que arrancamos.

Con esto y un poco de suerte tendremos el sistema reparado.

Por si las moscas yo le haría algún tipo de búsqueda de clusteres defectuosos al disco duro, no vaya a ser que nos dure 2 telediarios y no hayamos tomado las precauciones necesarias.

lunes, 26 de noviembre de 2007

¡¡¡Outlook Express no imprime!!!

Que cosa más rara, que un sistema Windows parece tener vida propia y no responda a nuestras órdenes.

Y llevarán razón los Sres. de Microsoft cuando lo achaquen a algún virus (este es el caso) o un uso 'inadecuado' del pc. Pero también con algunas actualizaciones el ordenador deja de 'hacernos caso' para vivir su propia vida.

Pero bueno, también es increíble que no se pueda recurrir nada más que a los técnicos propios del entorno porque no queda ningún registro de a que se puede deber el fallo.

La cuestión es que se me plantea un problema por parte de un cliente de que su outlook express no imprimía. Era curioso porque no aparecía ningún error ni cartelito de aviso de esos graciosos de error que no los entiende ni el propio Guillermo Puertas.

Buscando, buscando encontré en uno de los foros de google dedicados a windows la solución.

El enlace a la página es este.

La solución pasa por re-registrar librerías de windows (digo lo de re-registrar porque supongo que, por avatares del destino, el registro estaría eliminado, si no no me lo explico).

Los comandos a poner en la ventana de Ejecutar (Inicio --> Ejecutar o 'Tec. Windows' + r) son los siguientes (los que me han funcionado a mi):

regsvr32 ole32.dll
regsvr32 vbscript.dll
regsvr32 jscript.dll


A mi no me hizo falta reiniciar Windows.

Ahora a luchar contra el virus, a ver si hay suerte.

lunes, 19 de noviembre de 2007

[Hoax] 2, sobre el google "negro"

Otro hoax que circula por ahí es el relativo al blackle.com o "google negro". En él se explica que si es bueno para el cambio climático, que se ahorra energía, y cosas similares, por supuesto que no son ciertas y es una 'trola' más de las que corren por ahí como podemos leer en el siguiente enlace

http://googleblog.blogspot.com/2007/08/is-black-new-green.html

Así que otra leyenda urbana a la basura. A ver si conseguimos aplacar los 'cientos' de correo basura que recibimos en nuestros buzones avisándonos del 'fin del mundo' o regalándonos dinero si lo reenviamos.

¿Alguno ha pensado el tiempo que perdemos en leer esas basuras y que podríamos aprovechar en cualquier otra cosa?

Hasta la próxima, a cuidarse.

martes, 6 de noviembre de 2007

Comandos útiles Linux II

Navegando por Internet he podido encontrar una forma fácil y rápida de descargar páginas web completas (eso de completas es un decir de momento, me baja de 7 en e7 archivos, supongo que habrá que leerme la ayuda del comando).
Es con el comando linux wget, de tal manera que si ponemos
wget -r http://www.paginaweb.com

nos guardará el contenido de la misma.

Así de fácil.
A divertirse.

miércoles, 17 de octubre de 2007

[Hoax] 1, sobre la "leche en Tetra Brik"

En fin, dado la cantidad de correos basura que circulan por ahí, y lo rabioso que nos ponemos la mayoría cuando nos cuelan algún tipo de bulo, me he decidido a abrir una 'sección' de post en las que colgar los hoax (correos de anuncios falsos) que me llegan y que no hacen más que crear 'leyendas urbanas' con algún oscuro motivo.
El primero que voy a poner es uno que habla sobre la leche en Tetra Brik, la repasteurización y un número que viene en la parte inferior de los envases.
El correo me llegó con un powerpoint adjunto de título eslaleche.pps y un extracto de su contenido es el siguiente:

La leche en cartón, al no ser vendida dentro de determinado plazo, ¡regresa para la fábrica para que sea repasteurizada de nuevo!

Esto puede ocurrir hasta 5 veces , lo que termina dejando la leche con un sabor diferente, aumentando la posibilidad de cuajar reduciendo significativamente su calidad, hasta su valor nutricional disminuye.

Cuando la leche vuelve para la venta al consumidor final, el pequeño numero que está marcado en la figura arriba con un círculo rojo es modificado. Ese número varia de 1 a 5 lo ideal es comprar hasta el número 3. Números superiores significan que la calidad de la leche será dudosa. Ese pequeño número queda localizado en el fondo del cartón; si compras una caja cerrada, basta verificar apenas un empaque, todas las demás tendrán la misma numeración.

Por ejemplo, si un empaque tiene el número 1, significa que es la primera vez que sale de la fábrica y llega al supermercado para la venta final; pero si tiene el número 4, significa que ya fue repasteurizado 4 veces y luego volvió para el supermercado para tratar de ser vendido y así sucesivamente…

¡¡¡EN EL ARCHIVO ADJUNTO SE VE DÓNDE ESTA EL NÚMERO QUE HAY QUE BUSCAR!!!


La explicación siguiente la he sacado de un post curiosoperoinutil.com donde nos habla sobre el bulo.

Tras tan grandes esperanzas puestas en CPI, no podía menos que emplearme a fondo. Aprovechando mis contactos en la Camorra napolitana y una amiga que tengo en Pascual (¡Gracias, Mery!), pasé el correo, que llegó hasta la jefa de producto, quien, por supuesto, ya lo había recibido por otros lados.

La respuesta de Pascual es la esperable: Pascual, por supuesto, no repasteuriza su leche, que ya sale de sus instalaciones estupendamente pasteurizada y no necesita pasar de nuevo ese proceso. Lo del numerito en la base del cartón es falso. Además, dato muy importante, a Pascual le llegan los números ya impresos desde Tetra Pak, la empresa que fabrica los briks de leche y de mil otros productos, por lo que no tiene mucho sentido que sirvan para numerar algo cambiante como el número hipotético de “reciclados” de un litro de leche. Seguro que algún biólogo/médico/bioquímico/etc nos puede ayudar y contarnos si la idea misma de “repasteurizar” tiene sentido.

Faltaba, pues, averiguar exactamente qué demonios era ese numerito. Así que la jefa de producto escribió a Tetra Pak (Tetra para los amigos :) ), que contestó enseguida proporcionando la información:

Los envases de Tetra Pak se producen en grandes bobinas como ésta que tiene 1,60 metros de ancho. Esta bobina contiene varios rollos con secuencias de envases.

Cada rollo de una bobina recibe una numeración (1 al 5) que permite identificar en qué posición de la bobina fue producido un determinado envase [clic para ampliar]:

Los números se imprimen durante la fabricación de los envases en las fábricas de la firma Tetra Pak, empresa que produce los envases.

De esa forma, Tetra Pak:
1.- tiene un control de la producción de los envases y así
2.- garantiza la máxima calidad de los envases.

NO hay ninguna relación entre los números en la base del envase y el producto contenido.

Para más información podeis recurrir al post que está colgado en http://curiosoperoinutil.com/2007/05/22/consultorio-cpi-leche-en-tetra-brick/ , en el que han desarrollado un trabajo impecable para desenmascarar el engaño.

lunes, 15 de octubre de 2007

Crear diagramas Gantt en Excel

Intentando controlar las facturas periódicas que recibo en la empresa empecé a buscar alguna utilidad (gratuita por supuesto) que me facilitará mi labor, pero encontré un enlace que explicaba como hacer un gráfico Gantt en Excel (o en su contrapartida gratuita de openoffice, esto está por probar), sin necesidad de tener que buscar el MS Project (ya que hay que ser pirata solo lo justo).
Ahí va su traducción, intentaré ser lo más fiel posible (lo he probado y los resultados son excelentes).
El artículo original lo podéis encontrar en perfecto inglés en http://office.microsoft.com/en-us/excel/HA010346051033.aspx

Para poder crear un diagrama de este tipo
hay que seguir los siguientes pasos:

Paso 1: Introducir los datos a representar.
  1. Abrir una hoja nueva en Excel y meter los valores siguientes desde la celda A1 hasta la D6 (las columnas C y D son números de días).
  2. Selecciona la celda B2 y formatéala con el tipo de fecha que quieras usar en el diagrama pulsando en Formato de celdas, en la pestaña de Número. Pulsa en Fecha en la lista de Categoría y elige el formato que quieras en la parte de Tipo.
Paso 2: Crear un gráfico de barra apilada:
  1. Selecciona las celdas desde la A1 a la D6 y pulsa en el botón de Asistente para gráficos.
  2. En el primer paso pulsa sobre Barras en el Tipo de gráfico, y luego pulsa en el subtipo de Barra apilada (el nombre de los subtipos está en la parte inferior, en una caja de diálogo).
  3. Pulsa Siguiente, Siguiente y Finalizar.
Paso 3: Cambia el aspecto del gráfico a un diagrama Gantt:
  1. Doble clic en la primera serie en el gráfico. Esta es la serie para Start date. El color por defecto de esta serie en Excel es el azul.
  2. En la pestaña de Tramas de la ventana de Formato de serie de datos, pulsa en Ninguna para Borde y Ninguna para Área y pulsa Aceptar.
  3. Doble clic en el eje de categoría (x), que es el eje vertical en un gráfico de barras (en un gráfico de barras tradicional los ejes x e y están invertidos). Pulsa sobre la pestaña de Escala y marca Categorías en orden inverso.
  4. Pulsa en la pestaña de Fuente y ponle un Tamaño de 8 y pulsa en Aceptar.
  5. Doble clic en el eje de valores (y) que en el gráfico de barras es el eje horizontal. Después del paso anterior este eje se encuentra en la parte superior del gráfico. Pulsa en la pestaña de Escala y escribe los siguientes valores apropiados (para este ejemplo) en los recuadros pertinentes:

    Mínimo: 36739
    Máximo: 37441
    Unidad mayor: 61
    Unidad menor: 1

    Estos valores representan las fechas que van a ser usadas en el eje de valores (y). El valor mínimo 36739 representa el 1 de Agosto del 2000, el valor máximo 37441 representa el 4 de Julio de 2002, la unidad mayor 61 representa 2 meses y la mínima 1 representa 1 día. Para ver qué número representa una fecha determinada introduce la fecha en una celda y aplicale formato General.
  6. También marca en la pestaña de Escala la opción de Eje de categorías (X) cruza en el máximo valor.
  7. Pulsa en la pestaña de Alineación, y bajo Orientación escribe 45 en el recuadro de grados.
  8. Pulsa en la pestaña de Fuente, y selecciona Negrita en Estilo. En Tamaño, selecciona 8, y luego pulsa Aceptar.
  9. Pulsa el botón derecho sobre la leyenda y pulsa es Formato de leyenda en el menú desplegable.
  10. Pulsa en la pestaña de Posición y dale a ubicación Inferior.
  11. Dentro de la leyenda pulsa sobre Start date para seleccionarla y pulsa SUPR. para borrarla.
Después de estos pasos obtendras un gráfico como el del ejemplo.
Fácil, no? Espero que os sirva de ayuda.

miércoles, 3 de octubre de 2007

Comandos útiles Linux I

Como guía rápida iré editando este post y añadiendo nuevos comandos, creando más posts, o ya veré si los distribuyo por categorías según vaya necesitando.

De momento voy a poner aquí las órdenes (o comandos) que más recurridos son:

Obvio el tema de ls, ln, cd, dir, mkdir, ..., que doy por supuestos. Si alguien quisiera ayuda que lo diga.

vim - Las teclas más comunes son (hay muchas guías por internet más completas, aquí pongo lo más usado por mí).
Insert, inserta o reemplaza texto (pasa al modo inserción). Para salir del modo inserción basta con darle a Esc (escape)
o, entra en modo inserción en una línea nueva por debajo del cursor
:w, graba los cambios
:wq, graba los cambios y sale
:q, sale de vi, si han habido modificaciones hay que hacerlo con :q!
:set nu, enumera las líneas
dd, borra una línea completa
Supr, borra el carácter sobre el que estamos
:u o u, deshace los cambios
/cadena, busca cadena hacia el final, con / solo busca la siguiente aparición de la última cadena que pusimos
?cadena, como / pero busca hacia el principio del documento
:n o nG, nos lleva a la línea n

ps - Muestra los procesos del sistema. Con ps aux nos muestra todos los procesos en ejecución.
kill - envía señales al sistema, esto sirve para matar procesos que nos bloquean ficheros, o están funcionando mal; se hace con kill -9 PID
El PID lo podemos usar uniendo ps y un grep.
e.g., root:~ # ps aux | grep smbd
root 10964 0.0 0.6 9236 3180 ? Ss Sep18 0:013 /usr/sbin/smbd
root:~ # kill -9 10964

También se puede hacer con pgrep y pkill que tienen la misma funcionalidad.
Usad man para obtener ayuda extendida de cada comando.

Y hasta aquí la primera entrega.
Que os aproveche.

domingo, 16 de septiembre de 2007

Copias de Seguridad I

Copia de seguridad:

Un script que realiza un copia de seguridad sólo de los ficheros modificados desde la última copia.

La copia se hace en /cseg, en un directorio cuyo nombre es la fecha de la copia:

También en /cseg hay un fichero vací­o llamado "ultimo" para mantener la fecha de la última copia realizada.

#!/bin/bash
fecha=`date +%Y%m%d`
mkdir /cseg/$fecha
tar cfz /cseg/$fecha/etc-$fecha.mod.tar.gz $(find /etc -newer /cseg/ultimo ! -type d)
tar cfz /cseg/$fecha/pgsql-$fecha.mod.tar.gz $(find /var -newer /cseg/ultimo ! -type d)
tar cfz /cseg/$fecha/home-$fecha.mod.tar.gz $(find /home -newer /cseg/ultimo ! -type d)
touch/cseg/ultimo

No puedo dejar de decir aquí que esto solo sirve para copias de seguridad de archivos cuyo nombre no tenga caracteres 'raros (como espacios, al estilo de Windows). Las configuré para un servidor Samba y no funcionó correctamente.

En un artículo posterior daré una solución para todo tipo de archivos.


Recuperar archivos borrados con un live-cd

(extraído del foro de Bulma)

Aún no lo he probado, pero no creo que tarde mucho en hacerlo. El paso a paso no es mío, así que se admiten comentarios (por supuesto que agradezco a su autor, que no sé quien es, su redacción)

La idea es esta:

1- No tocar nada de la partición!!!

2- Arrancar un CD-Live que tenga al menos la herramienta dd (dudo que alguna no la tenga)

3- Extraer imagen de la partición:

dd if=/dev/hda1 of=/ruta/donde/la/quieras/guardar

4- El Sleuthkit es un kit de análisis forense y permite entre muchas otras cosas VER FICHEROS BORRADOS (y su contenido) siempre y cuando no se hayan sobrescrito los i-nodos (por eso la importancia del paso 1)

5- Ya sea en tu S.O. o en tu CD-Live pero con la imagen hecha analizar dicha imagen con sleuthkit. Recomiendo usar el API web llamado autopsy.

Si lo haces por comandos con:

fls -d imagen

muestra los ficheros borrados. Por comandos es un poco raro ya que debes ver los i-nodos de cada fichero y después sacar el fichero con:

icat imagen inodo > ficherodestino

No es complicado hacerse un script para todo esto con un poco de paciencia.

Nota: solo tiene una pega... debes tener 1 partición donde quepa la imagen de la partición a recuperar.

Nota2: seguramente hay otros métodos pero este es el que conozco.

La segunda parte es para traspasarlo a otra máquina si no tenemos otro disco duro pero sí una red montada:

El ejemplo más fácil sería con netcat (nc), omitiendo el 'of=' en el dd para que largue la salida por el stdout:

- Primero en la máquina remota tendrías que poner en marcha el proceso servidor que espera la conexión:

$ nc -l 2000 >ficherobackup.img

- Y luego en la máquina en cuestión ejecutar el dd (siguiendo tu ejemplo):

# dd if=/dev/hda1 | nc w.x.y.z 2000

...donde w.x.y.z es la IP de la máquina remota y 2000 un puerto no privilegiado (al azar, puedes poner el año de tu nacimiento si te hace más ilusión :-P) para pasar los datos.

[Error] "svchost.exe error de aplicacion. La instruccion en "0x745f2780" hace referencia a la memoria en "0x0000000". La memoria no se puede "read"..

Bueno, al fin parece que esto funciona.

Después de toda una mañana de vueltas al sistema (recuperando puntos de sistema anteriores, buscando virus,...) busqué por internet y me di cuenta de que es un problema común y que, al parecer, todo viene por el Windows Update y sus actualizaciones.

También salía una ventana de mensaje de error "Proceso de host genérico".

Lo primero que hice fue instalar el parche Actualización para Windows XP (KB894391) tal y como indicaban en una de las páginas que encontré.

Tras esto miré en los eventos del sistema y vi que el error estaba en la ejecución de svchost.exe al ejecutar el módulo msi.dll, en el evento ID 1000, Aplication Error.

Buscando en eventid.net también hacía referencia a "Tech Blender Blog". Busqué en google y la encontré (Tech Blender: Windows Update Broke My Machine).

Una página muy útil para este problema.

Yo usé la solución de re-registrar las siguientes librerías del sistema:

REGSVR32 WUAPI.DLL

REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL

Y desactivé las actualizaciones automáticas.

Reinicié y volví a activar las actualizaciones automáticas.

Después de esto todo fue sin problemas (por el momento).

Suerte y un saludo,

Jesús

Configuración de un servidor ftp (vsftpd) con usuarios fantasma

Este documento lo he sacado de la web de Yawag.org, más concretamente del documento

http://www.yawag.org/?q=node/78

Espero que el autor me de su consentimiento para fusilarlo.

Introducción y Objetivos

Vamos a instalar y configurar un servidor de ftp, en este caso lo vamos a hacer con vsftpd.En la configuración vamos a ver paso por paso las múltiples opciones que tenemos, aunque muchas de ellas vienen explicadas (en inglés) en el man de vsftpd.conf [1]Vamos a crear usuario "fantasma", es decir, solo serán usuarios del ftp, no existirán como usuario del sistema, de esta manera en caso de que exista algún tipo de fallo en el servidor, sólo se quedaría compretido el ftp. Además vamos a enjaular a los usuarios, para que solo puedan acceder al directorio que nosotros queramos, y así evitar que "naveguen" por nuestro disco duro.

Instalación

Como tenemos un sistema con debian :P la instalación es extremadamente simple, con hacer

    # apt-get install vsftpd

ya tenemos instalado el servidor.

Configurando

Una vez instalado, nuestro debian lo inicia por nosotros con la configuración que viene por defecto. Así que podemos probar a conectarnos a nosotros mismos para ver que realmente funciona.

Para ver todas las opcines de forma detallada hacemos

    # man vsftpd.conf

Aqui nos aparecerán muchísimas opciones, así como el estado por defecto en el que se encuentran (Las opciones más relevantes para el caso que nos ocupan, vienen detalladas en el Apéndice). Es decir si nuestro archivo de configuración [1] se encontrase en blanco, el estado de las opciones se encontrarán tal y como aparecen aquí.

En el Apéndice, están comentadas muchas de las opciones.

Para indicarle los usuarios que queremos, hacemos uso de db3 (Berkereley db), sino lo tenemos instalado, hacemos:

    # apt-get install libdb3

Lo que hacemos ahora es crear un archivo con los login / passwords que queramos en formato db, para ello creamos un archivo de texto, y metemos logins y passwords en lineas alternas, de esta manera:

    pepe
    pass1
    paco
    pass2

Por lo tanto tenemos dos usuarios, pepe y paco, con contraseñas pass1 y pass2 respectivamente, (y al archivo lo hemos llamado users).

Ahora creamos la base de datos en formato db ayudándonos de 'Berkereley db' (tenemos que ser root, puesto que necesitamos permisos de escritura en /etc)

    # db3_load -T -t hash -f users /etc/vsftpd_login.db

Con esto hemos creado /etc/vsftpd_login.db, ahora nos aseguramos que los permisos son lo más resctrictivo posible:

    # chmod 600 /etc/vsftpd_login.db

Una vez creada nuestra base de datos, necesitamos crear un archivo PAM para indicar que use nuestra base de datos. Para ello incluimos estas líneas:

    auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
    account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

que básicamente lo que hacen es direccionar a nuestra base de datos. Una vez lo tengamos, lo añadimos a /etc/pam.d/vsftpd

**OJO aqui, en otras distribuciones que no son debian, hay que copiarlo a /etc/pam.d/ftp no a /etc/pam.d/vsftpd.

Si miramos en "man vsftpd.conf" (en debian) vemos que aparece esto:

    pam_service_name
    This string is the name of the PAM service vsftpd will use.Default: vsftpd

Por lo tanto, o lo copiamos a vsftpd o indicamos pam_service_name=ftp, o lo que queramos.

Ahora vamos a crear a nuestro usuario 'fantasma', para esto hacemos:

    # useradd -d /srv/ftp fantasma

He creado el usuario 'fantasma' dentro de /srv/ftp.

Ya tenemos casi todo, nos falta crear una buena configuración. Para esto vamos a por el archivo vsftpd.conf que se en cuentra en /etc

Como ya comentamos antes, vamos a configurarlo de tal manera que no permitamos usuarios anónimos,

    anonymous_enable=NO
    local_enable=YES

Si queremos que nuestros usuarios no tengas posibilidad de escribir, hacemos:

    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO

Y con esto enjaulamos al 'fantasma'

    chroot_local_user=YES

Y ahora el puntito final en lo que a la configuración de usuarios se refiere.

    guest_enable=YES
    guest_username=fantasma

Con esto estamos diciendo que todos los usuarios sean 'fantasma' a nivel de usuario en nuestro servidor.

El resto de opciones, como ya comentamos antes vienen correctamente explicadas en [1].

Si ahora entramos en nuestro servidor, nos va a decir que

    150 Here comes the directory listing.
    226 Transfer done (but failed to open directory).

Puesto que no tenemos permisos suficientes ...

Una vez aqui, alguno se preguntará y ¿como hacemos ahora para bajar/subir los archivos, si le servidor no nos deja ni movernos?

La explicación es sencilla, lo que hemos hecho es crear un entorno lo más seguro posible, que se adapte a nuestras exigencias. Pero, ahora lo que vamos a hacer es definir permisos usuario por usuario. Y eso lo vamos a conseguir con la opción 'user_config_dir', que nosotros vamos especificarla en '/etc/vsftpd/users', de la siguiente manera

    user_config_dir=/etc/vsftpd/users

Como no queremos que los usuarios del sistema se logueen, lo que hacemos es ponerlo explicitamente como indicamos ahora

Creamos los directorios /etc/vsftpd y /etc/vsftpd/users, para luego meter las características de nuestros usuarios.
Creamos una lista de usuarios a los que se deniega el acceso, y la guardamos en /etc/vsftpd/denied_users

Para crear la lista, podemos hacerlo por ejemplo así

    # cat /etc/passwd | cut -d ":" -f 1 | sort > /etc/vsftpd/denied_users

Si te estás preguntando porqué no queremos que los usuarios del sistema se logueen, la respuesta es: por seguridad, puesto que los usuarios suelen tener más persmisos de los necesarios en el ftp, además, los login/passwd en ftp van en texto claro, siendo muy propensas a ser esnifadas, y pueden comprometer la seguridad del servidor.

Ahora solo nos queda definir usuario a usuario los permisos de cada uno. Para ello ló unico que tenemos que hacer es crear un archivo por usuario, con el nombre del mismo dentro de /etc/vsftpd/users, especificando las opciones 'extras' que queremos que tenga cada uno de ellos.

Por ejemplo a pepe, le vamos a permitir 'ver' y descargar lo que hay en /data, para ello como indicamos antes, creamos el archivo /etc/vsftpd/users/pepe

    dirlist_enable=YES
    download_enable=YES
    local_root=/data
    write_enable=NO
    anon_world_readable_only=NO

Y a paco, le vamos a permitir escribir en /srv/ftp, para lo cual creamos otro archivo pero esta vez se llama paco, que contenga

    dirlist_enable=YES
    download_enable=YES
    local_root=/srv/ftp
    anon_upload_enable=YES
    anon_world_readable_only=NO
    write_enable=YES

Y así usuario a usuario podemos determinar los privilegios de cada uno, y dejarles enjaulados donde nosotros queramos, sin que puedan fisgar por el resto de nuestro sistema.

Finalmente

Con todo esto, hemos conseguido conseguido configurar el que para mí es el mejor servidor de ftp, con usuarios fantasma, y estableciendo una configuración personalida por cada usuario. De esta manera se consigue una mayor versatilidad a la hora de configurar el servidor, y una mayor seguridad.

Apéndice
Entre las opciones destacables para nuestro propósito caben destacar estas:

  • anonymous_enable
    • Este parámetro se utiliza para definir si se permitirán los accesos anónimos al servidor de archivos. En nuestro caso seleccionamos NO queremos accesos anónimos, por lo tanto seleccionamos NO.
  • chroot_local_user
    • Si este parámetro es YES, el usuario local estará enjaulado en lo que hayamos definido como su home
  • guest_enable
    • Si está habilitado, todos los logins no anónimos (en nuestro caso todos), serán lo que hemos llamado usuarios 'fantasma'. Es decir cualquier login será mapeado como 'fantasma'. Nota: nosotros hemos creado un usuario en el sistema llamado 'fantasma', puedes ponerle el nombre que quieras, muchos lo llaman 'virtual'. Este parámetro va asociado a guest_username, que es donde definimos el nombre de usuario 'fantasma', en nuestro caso también es fantasma.
  • guest_username
    • Ver guest_enable.
  • listen
    • Si está habilitado, vsftpd iniciará en modo 'standalone'. Esto quiere decir que no debe ser iniciado por algún inetd, y en su lugar se ejecutará directamente.
  • listen_address
    • Si vsftpd se encuentra en modo standalone, inidicamos la dirección en la que estará escuchando.
  • local_enable
    • Este parámetro permite que los usuarios locales pueden acceder al ftp. En nuestro caso vamos a seleccionar que YES, puesto que vamos a crear un solo usuario 'fantasma' que acceda al servidor.
  • pam_service_name
    • Indica el servicio PAM que usará vsftpd, en nuestro caso como habíamos copiado la base de datos a /etc/pam.d/vsftpd, lo llamamos vsftpd.
  • user_config_dir
    • Con esta opción como hemos explicado antes, podemos 'añadir' permisos usuario por usuario, creando archivos simples de texto con los permisos por usuario que queramos. En esta opción se define el directorio en el que vamos a guardar esos archivos.
  • userlist_enable
    • Si está habilitado, los nombres de usuario que haya en el archivo indicado por userlist_file, no podrán acceder, siendo rechazados ANTES de que introduzcan el password, de esta manera evitamos que el password en claro de usuarios privilegiados, vaya en claro por la red.
  • userlist_file
    • Ver userlist_enable.

    El resto de opciones las podemos ver detalladas en [1]

    --
    Copyright chacal 2005 - versión 1.0.1

    Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, and with no Front-Cover Texts, and with no Back-Cover Texts. Full text of the license is at file /usr/share/doc/gnome-core/html/fdl/C/index.html on your Debian system.

    ¡Hola mundo!

    Comenzaré mi andanza definitiva por el mundo de los blogs con el título más reproducido a la hora de la programación.

    Dicen que si no tienes un blog no existe. A ver si va a ser cierto, en lugar de la archi-conocida frase de "Pienso luego existo" (Descartes) y aquí dejo mi contribución.

    Si alguien quiere colaborar que no dude en hacerlo. También podeis contactar conmigo en jfranzon 'arroba' gmail 'punto' com.

    Muchas gracias y feliz estancia en mi blog.