viernes, 16 de julio de 2010

Pure-ftp: usar sólo usuarios virtuales

Pure-ftpd es un servidor ftp que viene en distribuciones como opensuse ( y la enterpise). Con los siguientes pasos vamos a permitir el uso únicamente de usuarios virtuales ftp.

Los usuarios virtuales ,son usuarios no tienen cuenta real en el servidor ( no tienen entrada en passwd) lo que añade más seguridad a nuestro servidor, si sólo queremos habilitar el ftp y no que tengan shell.Como extra con estos usuarios pueden compartir el mismo "home" de ftp.

Como caso extra vamos a deshabilitar el ftp para usuarios del servidor, de modo que sólo los usuarios virtuales puedan realizar ftp. Todos los pasos siguientes los hacemos como root.

Suponemos que el servidor ya lo tenemos instalado y el puerto abierto (por defecto el 21) en el cortafuegos.

1- Creamos un grupo (grupoftp) y un usuario (usuarioftp) restringido en el sistema (sin shell y sin crear los archivos de home) que tenga como home (podríamos ponerle un home falso)
groupadd grupoftp
useradd -s /bin/false -G grupoftp usuarioftp -d /ftp -M

Descripcion:
- shell (-s): /bin/false. Si usasemos por ejemplo /sbin/nologin no podrá loguear ni con usuarios virtuales
- Grupo(-G): grupoftp
- Directorio del home (-d) : /ftp . También podemos poner un home no existente,, pero he apuntado al directorio donde permitiremos que se almacenen los archivos del ftp
- Opción -M indicamos que no cree el home ni sus archivos asociados (.profile, bash, public_html ...)

2- Creamos el directorio (si no existe) y le asignamos los permisos adecuados:
mkdir /ftp
chown -R usuarioftp.grupoftp /ftp

3- Creamos uno o varios usuarios virtuales de ftp, les asignamos password (nos lo pide alcrearlos) y ejecutamos mkdb para almacenar los cambios y generar el archivo pureftpd.pdb
pure-pw useradd usuario1 -u usuarioftp -g grupoftp -d /ftp
pure-pw useradd usuario2 -u usuarioftp -g grupoftp -d /ftp
pure-pw useradd usuario3 -u usuarioftp -g grupoftp -d /ftp
pure-pw mkdb
Para borrarlos (si lo necesitamos) usaremos los comandos:
pure-pw userdell usuario3
pure-pw mkdb

4- Habilitamos la autenticación de usuarios virtuales. Editamos el archivo /etc/pure-ftpd/pure-ftpd.conf . Descomentamos la linea:
PureDB /etc/pure-ftpd/pureftpd.pdb

Tras estos pasos deberíamos poder conectarnos a nuestro ftp
ftp usuario1@localhost

5- Como paso adicional vamos a prohibir que cualquiera de todos los usuarios de nuestro sistema se puedan conectar por ftp. Vamos a prohibir la autenticacion mendiante PAM, por lo que no podrán loguearse. Volvemos a editar el archivo /etc/pure-ftpd/pure-ftpd.conf . Comentamos la linea:
#PAMAuthentication yes

Si solo queremos que unos determinados usuarios no puedan conectarse por ftp y el resto si dejaremos descomentada la autenticación por pam (es decir permitimos la autenticacion por pam). Si miramos el archivo /etc/pam.d/pure-ftpd veremos que hay una lista de usuarios a los que no se les permite la conexion por ftp en el archivo /etc/ftpusers . Los usuarios del sistema a los que no queramos permitirle el acceso los añadiremos a este último archivo

Por último algunas opciones en el archivo /etc/pure-ftpd/pure-ftpd.conf:
ChrootEveryone YES
# para hacer chroot de los usuarios y que no puedan salir del home
Bind 127.0.0.1, 3021
# para cambiar el puerto por defecto a otro (en este ejemplo al 3021 )

1 comentario:

Setnakt dijo...

Gracias Me sirvio bastante...