Configurar un servidor FTP virtual basado en IP

20 01 2010

A continuación vamos a explicar como configurar un servidor FTP virtual basado en IP. Los pasos serán los siguientes:

1. Editaremos el archivo de configuración de ProFTPd, que es proftpd.conf, que se encuentra en la ruta /etc/proftpd/.

  • sudo gedit /etc/proftpd/proftpd.conf

Como hemos comentado anteriormente, vamos a configurar un servidor FTP virtual basado en IP, entonces tenemos que añadir la siguiente directiva:

<VirtualHost IP>

#Directivas y parametros de configuración

</VirtualHost>

Vamos a utilizar la configuración del archivo proftpd.conf de los tutoriales anteriores, simplemente habrá que modificar algunas líneas y nada más. El contenido deberá quedar de la siguiente manera:

<VirtualHost 172.16.100.20>

RequireValidShell on

<Limit LOGIN>

AllowAll

</Limit>

<Anonymous /var/ftp/pub>

User ftp

UserAlias anonymous ftp

<Limit LOGIN>
AllowAll

</Limit>

<Limit WRITE>

DenyAll

</Limit>

RequireValidShell off

</Anonymous>

DefaultRoot ~

TransferLog /var/log/proftpd/transferencia.log

</VirtualHost>

NOTA: Las líneas en negrita son las líneas nuevas que hemos añadido.

A continuación vamos a explicar las directivas que hemos puesto en la imagen anterior:

Como solamente queremos que accedan los usuarios con una shell válida, pondremos el “RequireValidShell” en on.

La directiva LOGIN sirve para limitar a los usuarios, como queremos que accedan al FTP todos los usuarios, pondremos AllowAll.

La directiva Anonymous sirve para acceder de forma anónima, y indicamos el directorio ráiz. Cuando entremos en un sitio anónimo, realmente estaremos usando un usuario del sistema. Ese usuario suele ser ftp. Entonces pondremos “User ftp“.

Por convenio, es mejor usar como usuario “anonymous” para acceder al FTP de forma anónima. Entonces al usuario ftp le pondremos el alias “anonymous“.

Como el usuario ftp no tiene una shell válida, es necesario poner RequireValidShell off. Y por último para que puedan acceder los usuarios anónimos hay que poner la directiva LOGIN y como parámetro AllowAll para que puedan acceder.

Para que el usuario “anonymous” solamente se pueda mover por su home, pondremos DefaultRoot ~

Y por último para que las transferencias de archivos queden guardadas en un log, es necesario indicar una directiva, la ruta, y el archivo donde se guardará dicha información. Pondremos esto:

TransferLog /var/log/proftpd/transferencia.log

3. Para que los usuarios con shell falsa no puedan entrar hay que modificar un archivo, dicho archivo se llama shells.

  • sudo gedit /etc/shells

Como se puede observar en la siguiente imagen, hay que comentar la última línea. Para comentarla se le pone delante la almoadilla, #.

4. Comprobaremos las tarjetas de red que tenemos instalada en nuestro pc. Mediante el siguiente comando te muestra las tarjetas de red instalas en tu ordenador:

  • sudo ifconfig

5. Como se muestra en la imagen anterior, solamente tenemos instalada en nuestro ordenador una tarjeta de red, eth2. Entonces con el siguiente comando, crearemos una tarjeta de red virtual a partir de la tarjeta eth2. Pondremos una IP cualquiera y una máscara de subred predeterminada.

  • sudo ifconfig eth2:1 172.16.100.20 netmask 255.255.0.0

Ahora comprobaremos si se ha creado correctamente la tarjeta de red virtual.

  • sudo ifconfig

6. Reiniciamos ProFTPd.

  • sudo service proftpd restart

7. Abrimos el cliente FTP Filezilla.

Intentamos entrar con el usuario “anonymous“, y accedemos correctamente como se muestra en la siguiente imagen.

En la siguiente imagen, se muestra como intentamos acceder con un usuario con shell falsa, en este caso, jreina no puede acceder porque hemos configurado el FTP para que solo puedan acceder mediante usuario anónimo o bien como usuario real del sistema.

En la siguiente imagen, accedemos con el usuario real del sistema, tardes, y accedemos correctamente. Y en la segunda imagen subimos un archivo txt con dicho usuario, osea, tardes.

NOTA: El usuario jreina fue creado ya, en tutoriales anteriores.

8. En este paso pondremos las capturas del log de ProFTPD.

  • sudo less /var/log/proftpd/proftpd.log

Como se muestra en la siguiente imagen el primer recuadro en rojo, muestra como accede tardes. El segundo recuadro muestra como accede anonymous, y el tercer recuadro muestra como el usuario jreina, con shell falsa,intenta acceder. Estas acciones las hemos echo en el paso anterior, el paso 7.

9. Por último, vamos a ver mediante el log de proftpd el archivo que hemos subido al FTP, con el usuario real del sistema, tardes.

  • sudo less /var/log/proftpd/transferencia.log

NOTA: Para que se puedan ver las subida y bajada de archivos mediante el log, hay que poner esta directiva en el archivo proftpd.conf.

TransferLog /var/log/proftpd/archivo.log

Dicha directiva, la pusimos anteriormente en el archivo proftpd.





Configurar un FTP anónimo

17 01 2010

A continuación explicaremos como configurar un FTP anónimo:

1. Lo primero que haremos es editar el archivo proftpd.conf que se encuentra en /etc/proftpd/ y añadiremos el siguiente contenido, además vamos a explicar que significa cada línea:

<Limit LOGIN>
DenyAll
</Limit>

La directiva LOGIN sirve para limitar a los usuarios, como solo queremos que accedan al FTP mediante un usuario anónimo, pondremos que no pueda acceder ningun usuario.

<Anonymous /var/ftp/pub>
User ftp
</Anonymous>

La directiva Anonymous sirve para acceder de forma anónima, y indicamos el directorio ráiz. Cuando entremos en un sitio anónimo, realmente estaremos usando un usuario del sistema. Ese usuario suele ser ftp. Entonces pondremos “User ftp“.

<Anonymous /var/ftp/pub>
User ftp
UserAlias anonymous ftp
</Anonymous>

Por convenio, es mejor usar como usuario anonymous para acceder al FTP de forma anónima. Entonces al usuario ftp le pondremos el alias “anonymous“.

<Limit LOGIN>
DenyAll
</Limit>
<Anonymous /var/ftp/pub>
User ftp
UserAlias anonymous ftp
RequireValidShell off
<Limit LOGIN>
AllowAll
</Limit>
</Anonymous>

Como el usuario ftp no tiene una shell válida, es necesario poner RequireValidShell off. Y por último para que puedan acceder los usuarios anónimos hay que poner la directiva LOGIN y como parámetro AllowAll para que puedan acceder.

2.  Crearemos la siguientes carpetas, ftp, y dentro pub. El siguiente comando con el parámetro -p,creará una carpeta dentro de otra (las dos carpetas de golpe).

  • sudo mkdir -p /var/ftp/pub

3. Asignaremos los permiso a las carpetas creadas anteriormente, para que el usuario sea ftp y no tardes.

  • sudo chown -R ftp /var/ftp/pub

4. Reinicamos ProFTPd:

  • sudo service proftpd restart

5. Abrimos el Filezilla e intentamos acceder con un usuario con shell falsa.

Ahora comprobaremos que no puede acceder un usuario con shell falsa mediante el log de proftpd.

  • sudo less /var/log/proftpd/proftpd.log

6. Entraremos como usuario anónimo:

Comprobaremos mediante el log de proftpd comprobaremos que el usuario anonymous accede correctamente

  • sudo less /var/log/proftpd/proftpd.log

7. Intentamos descargar un archivo.

8. Intentamos subir un archivo, pero como nos muestra en la imagen siguiente, no nos permite subir archivos, porque hemos limitado la escritura.





Instalar y configurar ProFTPd

11 01 2010

A continuación vamos a explicar como instalar y configurar ProFTPd.

ProFTPd es un servidor FTP. Se promociona desde su página web como estable y seguro, cuando se configura correctamente. El servidor ProFTPd se promociona a sí mismo como un “Software servidor FTP altamente configurable con licencia GPL” (“Highly configurable GPL-licensed FTP server software“).

Para instalar ProFTPd en Ubuntu tenemos dos opciones: desde un terminal o desde el Synaptic. Nosotros elegiremos desde un terminal:

  • sudo aptitude install proftpd

En la instalación nos aparecerá como será ejecutado el ProFTPd, si desde inetd o independiente, así que elegiremos independiente.

1. Ahora definiremos los mensajes que aparecen al intentar entrar utilizando un usuario y su contraseña. Si se autentifica correctamente aparecerá este mensaje “Ha accedido correctamente“, y si no se autentifica correctamente aparecerá este mensaje “No ha podido acceder”. A continuación se añaden las siguientes líneas que se muestra en la imagen siguiente:

  • sudo gedit /etc/proftpd/proftpd.conf

2. A continuación, se crearán dos usuarios con shell falsa, para ello ejecutaremos los siguientes comandos:

Creamos los usuarios con shell falsa:

  • sudo useradd -d /home/jreina -s /bin/false jreina
  • sudo useradd -d /home/jrivero -s /bin/false jrivero

Ahora le asignaremos a los usuarios una contraseña, pondremos el nombre del usuario como contraseña, esto se hará con los siguientes comandos:

  • sudo passwd jreina
  • sudo passwd jrivero

Creamos los directorios de los usuarios.

  • mkdir /home/jreina
  • mkdir /home/jrivero

Cambiamos los permisos para que se pueda actuar sobre los directorios que vamos a crear:

  • sudo chown -R jreina /home/jreina
  • sudo chown -R jrivero /home/jrivero

3. Para que los usuarios puedan acceder mediante shell falsa, editaremos el archivo proftpd.conf.

  • sudo gedit /etc/proftpd/proftpd.conf

Como se muestra en la siguiente imagen, aparecerá la siguiente linea:

# RequireValidShell off

Quitaremos el # y dejará de ser un comentario.

4. Ahora se limitará el acceso al FTP, jreina podrá entrar correctamente mientras jrivero, no podrá acceder. Se añadirá el siguiente contenido al archivo proftpd.conf que se encuentra en la ruta /etc/proftpd/.

<Limit LOGIN>
AllowUser jreina
DenyAll
</Limit>

AllowUser: Escribiendo esta directiva y el usuario, podra acceder dicho usuario.
DennyAll: Y los demás no podrán acceder.

El unico usuario que podrá acceder será jreina.

5. Reiniciamos ProFTPd

  • sudo service proftpd restart

6. Necesitamos un programa FTP, así que descargaremos el programa FTP Filezilla.

  • sudo aptitude install filezilla

7. Abrimos dicho programa, e introduciremos en el servidor, localhost, en usuario y contraseña jreina. Y como se muestra en la siguiente imagen, accede correctamente.

Como se muestra en la siguiente imagen, intentamos acceder con otro usuario, como se observa no se ha podido acceder, ya que hemos configurado el archivo de configuración para que solo pueda entrar jreina. Esto significa que funciona correctamente.

NOTA: Como se muestran en las dos imágenes anteriores, se puede observar que aparecen los mensajes, de acceso, que pusimos en el paso uno.

8. Ahora, mediante el log, comprobaremos que todo esta correctamente configurado.

  • sudo less /var/log/proftpd/proftpd.log

Como se muestra en la imagen anterior se muestra como el usuario jreina ha accedido correctamente.

En la anterior imagen se muestra como no ha podido acceder el usuario jrivero.