sábado, 21 de julio de 2012

Instalar y configurar ProFTPD en Ubuntu

Este pequeño tutorial nos va a servir para instalar y configurar un FTP en Debian y derivados como nuestro querido y popular Ubuntu.

Instalación:
Sencilla, a traves de nuestro amado apt-get:

sudo apt-get install proftpd

Creación de usuario para FTP:
El ProFTPd nos crea un usuario por defecto llamado, justamente, ftp lo cual a nosotros nos nos gusta y no lo usaremos. Vamos a crear uno un poco menos obvio. Para ello escribimos:

sudo adduser nuestrouserftp

Está claro que hay que sustituir "nuestrouserftp" por el usuario que queramos utilizar.
Después de ingresar esa línea nos pedirá que le asignemos una pass y una serie de datos como Nombre Completo, etc que no hace falta ni que sean reales ni completar, podemos darle todo ENTER.

Cambiar password de usuario:
Si algun día, por alguna razón, necesitamos darle los datos de acceso a alguien tenemos después la posibilidad de modificar la contraseña de nuestro usuario ftp. Para hacerlo escribimos en una terminal:

sudo passwd nuestrouserftp

A continuación editamos el archivo /etc/passwd y vemos que /home tiene asignado nuestro usuario. Aparecerá algo así:

nuestrouserftp:x:1002:1002:Usuario FTP,,,:/home/nuestrouserftp:/bin/false

Ahí nos indica que nuestra home será /home/nuestrouserftp (la x es nuestra contraseña que no aparece por estar encriptada). Debemos asegurarnos que al final diga /bin/false en lugar de /bin/bash. En caso de que aparezca esto último debemos cambiarlo.

Si fuese necesario cambiarlo deberiamos verificar en /etc/shells que aparezca la shell falsa /bin/false. Escribimos en una terminal:

sudo nano /etc/shells

Y si en ningún lado aparece /bin/false lo agregamos al final.
Ahora procedemos a darle los permisos a nuestra carpeta. Escribimos en terminal:

chown -R nuestrouserftp /home/nuestrouserftp/

El parámetro -R es para hacer recursivo el comando, con lo cual si vamos a crear carpetas dentro de /home/nuestrouserftp nos conviene primero crear las carpetas y después ejecutar la línea.

Para evitar que los usuario se logueen por FTP editamos /etc/ftpusers:

sudo nano /etc/ftpusers

Seguramente ya figuran algunos usuarios, podemos añadir clásicos como root,anonymous y ftp. Todos los usuarios que figuren en este archivo NO podrán loguearse. Mas adelante explico una forma de denegar el acceso de todos excepto a "nuestrouserftp".

Para ver el log de Proftpd:

sudo nano /var/log/proftpd/proftpd.log

Aquí nos aparecerán todos los intentos de login.

Ahora procedemos a la configuración del FTP para ello editamos el archivo proftpd.conf:

sudo nano /etc/proftpd/proftpd.conf

Vamos a configurar algunas cosas esenciales. A continuación vemos las lineas de ese archivo:

ServerName  "Nombre_del_servidor_ftp"   #De mas está decir que acá va el nombre del servidor =)
ServerType   standalone/inetd      #Nosotros usaremos standalone.
DeferWelcome      off/on  #Elegimos off para no mostrar mensaje de entrada.

MultilineRFC2228   on/off   #Elegimos on, esto hará a nuestro ftp compatible con casi todos los clientes ftp.
DefaultServer        on/off   #Elegimos on, toma las opciones default de un servidor ftp.
ShowSymlinks         on/off    #Elegimos on, podremos ver los links, si el link esta fuera de nuestro home no tendremos acceso a él.

TimeoutNoTransfer   <numero>  #Número máximo de segundos que puede estar un cliente en el ftp sin  transferir nada. Por defecto 600 seg.
TimeoutStalled      <numero>  #Número máximo de segundos que puede estar el cliente-servidor sin recibir información de una transferencia. Por defecto 600 seg.
TimeoutIdle         <numero>  #Número máximo de segundos que puede estar  un usuario sin hacer nada. Por defecto 1200 seg. 

DenyFilter          \*.*/      #Es un filtro de protección para el ProFTPd.

DefaultRoot     /home/usuarioftp #Para mi, vital. Acá le decimos a que carpeta va a acceder. Si no lo configuramos accede a todas, si configuramos por ejemplo /home accede a todos los /home. En este caso tendrá acceso solo a su /home.

Port  <numero> #Acá va el puerto al que conecta nuestro servidor, por defecto el 21.

MaxInstances      <numero>     #Cantidad máxima de conexiones al FTP que se pueden hacer a la vez.

AllowOverwrite on     #Elegimos on para sobreescribir ficheros existentes.

TransferLog /var/log/proftpd/xferlog  #Loguea las transferencias que se realicen en el FTP.

SystemLog   /var/log/proftpd/proftpd.log #Se guardan los intentos de login.

Por último, y como indique anteriormente, si queremos denegar el acceso de todos, excepto del usuario usuarioftp añadimos esto al final del archivo de configuración:

<Limit LOGIN> #Limitamos a quienes intentan loguearse en el FTP.
AllowUser usuarioftp  #Allow es para indicar a quienes vamos a aceptar.
DenyAll    #Deny es para indicar a quienes denegamos el ingreso. Podemos poner los usuarios y separarlos por comas o, como en este caso, podemos elegir DenyAll e impedir el acceso de todos excepto del que figura en Allow.
</Limit>
RequireValidShell   off

Administrar el FTP:
Tenemos 2 comandos que nos serán de gran utilidad:

ftptop
ftpwho

ftptop nos indica en tiempo real quienes están conectados a nuestro FTPftpwhonos sirve para ver en un momento determinado quien está conectado.

Para cerrar el servidor y mostrar un mensaje con el motivo por el cual se encuentra inaccesible podemos usar la herramienta ftpshut:

sudo ftpshut now "En este momento se están realizando tareas de mantenimiento, disculpe las molestias"

Después deberán ejecutar ftpshut -R para hacerlo accesible nuevamente.

Por último, para reiniciar el servicio ProFTPd:

sudo /etc/init.d/proftpd restart

Si queremos detenerlo debemos escribir stop en lugar de restart.
Eso fue todo por hoy, espero que les haya sido útil =)

Referencias: WikiLearning y The bit Developer