martes, 17 de enero de 2012

Instalando proftpd en ubuntu 11.10 con usuarios virtuales usando AuthUserFile


  Hola, el otro día configure un ftp con autenticación de usuarios, el problema era que no podía usar ninguna base de datos para guardar los usuarios así como tampoco  los usuarios locales del linux por lo que me decante por el proftpd con usuarios virtuales y aquí esta el como lo hice:

Primero instalamos el servicio con el siguiente comando:

sudo apt-get install proftpd

Instalaremos el servicio y pasamos a configurarlo, nos dirigimos a la carpeta donde están los ficheros de configuración del servicio.

cd /etc/proftpd/

El archivo principal de configuración es proftpd.conf. Es buena práctica antes de comenzar a editar cualquier archivo de configuración hacer una copia del archivo original.

sudo cp proftpd.conf proftpd.conf.original

Pasamos a editar el fichero de configuración del proftpd y analizaremos algunas opciones básicas aunque el objetivo de este manual no es explicar todas las opciones del proftpd. En este manual solamente configuraremos los usuarios y les asignaremos las carpetas a los mismos.

sudo vim proftpd.conf

Cambiar en “ServerName” por el nombre de tu servidor

  ServerName  "Ubuntu"

Descomentar la siguiente opción para restringir los usuarios a su propio directorio, esto es muy importante ya que previene que los usuarios puedan explorar otros subdirectorios lo cual podria ser un problema de seguridad, claro depende de la configuracion de cada cual, en nuestro caso lo descomentamos.

  DefaultRoot ~

Descomentar  la siguiente configuracion permitiendo que los usuarios no necesiten un Shell valido para entrar al sistema, en caso de necesitarlo no descomentarlo y seguir mas abajo.

  RequireValidShell off

En caso de necesitar que los usuarios tenga un shell valido pues agregaremos el shell /bin/false a la lista de shell habilitados :

sudo vim /etc/shells

Insertamos /bin/false al finalizar de la lista y guardamos.

Agregamos también las opciones que nos permiten autenticar con los ficheros de contraseñas que crearemos a continuación

Autenticación con AuthUserFile, aquí le pasamos la ruta donde estará nuestro fichero de contraseñas.´

AuthUserFile /etc/proftpd/ftpd.passwd

Aquí pasamos el orden en el cual el proftpd buscara si el usuario es valido, en nuestro caso solo tenemos el fichero AuthUserFile pero puede ser multiples opciones desde un ldap hasta la autenticación propia del unix, mas informacion al respecto aqui

AuthOrder mod_auth_file.c

Salimos y guardamos la configuración del proftpd.conf. Ahora pasaremos a configurar los usuarios de nuestro ftp, para ello usaremos como herramienta a ftpasswd la cual viene instalada por defecto con la instalación del proftpd. Ftpasswd nos crea dos ficheros AuthUserFile y AuthGroupFile los cuales contendrán nuestros usuarios y grupos semejando mucho a como nuestro linux guarda la configuración de los usuarios.

ricardo@ricardo-pc:~$ sudo ftpasswd --passwd --name=usuario1 --uid=1050 --home=/srv/ftp –shell=/bin/false

Donde:
name = Nombre del usuario
Home = Carpeta del usuario
Shell = Shell del usuario

Dicen que una imagen vale mas que mil palabras


Configuramos todos los usuarios que queramos tener, es importante aumentarle el “uid” y que no coincidan los mismos, ejemplo:

ricardo@ricardo-pc:~$ sudo ftpasswd --passwd --name=usuario2 --uid=1051 --home=/srv/ftp1 –shell=/bin/false

A continuación crearemos un grupo y le agregaremos los usuarios creados.

ricardo@ricardo-pc:~$ sudo ftpasswd --group --name=ftpd --gid=1030 --member=usuario1 --member=usuario2

Importante:
La ejecución del comando “ftpasswd” debe ser dentro del directorio “/etc/proftpd/” sino se crearía el fichero ftpd.passwd en el directorio donde se ejecuto el comando y el proftpd no seria capaz de leer la configuración.

Pasamos a crear las carpetas para los usuarios.
  
   sudo mkdir /srv/ftp
   sudo mkdir /srv/ftp1

Le asignamos los permisos correspondientes a la carpeta.

$ sudo chmod 777 /srv/ftp
$ sudo chmod 777 /srv/ftp1

Reiniciamos y ya tenemos nuestro ftp funcionando con usuarios virtuales.

Si de manera opcional deseamos crear un usuario con permiso de solo lectura a una carpeta en especifico. Seguimos los pasos antes mostrados y le agregamos al proftpd.conf las siguientes lineas

# # Limit WRITE everywhere in the anonymous chroot
<Directory /data/ftp_base/ftp_enviro/enviro_upload/>
<Limit WRITE>
DenyUser NombreDeUsuario // Aqui ponemos el usuario que no tendra permiso de escritura.
Limit>
Directory>

Eso es todo espero les funcione y de ser así dejen su comentario. Saludos




1 comentario:

  1. hola, cómo puedo crear un grupo con permiso de solo lectura a una carpeta en especifico?

    ResponderEliminar