Instalar Sevidor FTP bajo Centos / Debian

Qué es un servidor FTP ?

La definicion ténica seria:

FTP (siglas en inglés de File Transfer Protocol, ‘Protocolo de Transferencia de Archivos’) en informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura cliente-servidor.

FTP tiene sus orígenes en 1971, y aunque ha evolucionado con el paso de los años, es uno de los protocolos más antiguos que todavía están en uso. Hoy en día se usa principalmente en redes corporativas y la red más grande que existe: Internet.

El funcionamiento es sencillo. Una persona desde su computador invoca un programa cliente FTP para conectar con otro computador, que a su vez tiene instalado el programa servidor FTP. Una vez establecida la conexión y debidamente autenticado el usuario con su contraseña, se pueden empezar a intercambiar archivos de todo tipo.

Aunque no estés familiarizado o no conoces FTP, es más que probable que lo hayas usado alguna vez. Muchos de los enlaces de descarga que usas en Internet, son URLs que apuntan a un computador que está actuando como un servidor FTP: tu navegador automáticamente hace la conexión y descarga lo correspondiente.

En otras palabras cada ves que bajas archivos de la internet, interviene de por medio un servidor FTP, por ello creo pertinente mostrar como inslarlo.

Exiten varias versiones de servidores FTP tanto libres como de pago (prefiero los libres por sus niveles de seguridad), siendo estos:

Tipos de FTP

  • FTP Anónimo: Cualquiera puede descargar un archivo sin identificarse.
  • FTP Autenticado: Hay que conectarse al servidor utilizando un nombre y una contraseña.
  • FTP Embebido: Es el que se realiza desde las Páginas Web, a través de navegadores. Es una opción dentro del FTP Anónimo.

Aqui algunos de los servidores conocidos la mayoria lamentablemente de pago y para guindous:

Pero es de mi interes el uso de aplicaciones libres y facil de usar por ello instalaresmo uno de esas hermosas y ligeras aplicaciones desarrolladas desde hace mucho, muy maduras y confiables para Linux, mencionare los mas utilizados:

  • pureftpd
  • proftpd
  • vsftpd

Veamos algunas caracteristicas:

Pure-FTPd es un servidor FTP libre con un fuerte enfoque en la seguridad. Puede ser compilado y ejecutado en una variedad de sistemas operativos tipo Unix incluyendo Linux, OpenBSD, NetBSD, FreeBSD, DragonFly BSD, Solaris, Tru64, Darwin, Irix y HP-UX. También ha sido portado a Android.

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“).

Los promotores dicen que ProFTPd está bien documentado, y la mayoría de configuraciones serán muy parecidas a aquellas que aparecen en las configuraciones de ejemplo. ProFTPd usa un único fichero de configuración “/etc/proftpd.conf“, ademas es factible de funcionar sobre IPv6

VsFTPd es el “very secure ftp daemon” (demonio ftp muy seguro) , un pequeño pero eficiente servidor FTP.

Aún cuando vsftpd quizás no ofrezca el nivel de personalización que otros servidores FTP disponibles globalmente tienen, vsftpd ofrece suficientes opciones para satisfacer la mayoría de las necesidades de un administrador. El hecho de que no está sobrecargado de funcionalidades limita los errores de configuración y de programación.

Toda la configuración de vsftpd es manejada por su archivo de configuración:

/etc/vsftpd/vsftpd.conf

Cada directriz está en su propia línea dentro del archivo.

Y precisamente debido a su simplicidad, confiabilidad es el que enseñare a instalar.

Empecemos.!

EN CENTOS

En primero lugar recordemos que el Servidor sea este bajo Centos o Debian deben estar preparados y configurados en sus puesrtos de red (tarjeta) con la IP estática (no necesariamentre publica) asi como su gateway y si lo usara desde afuera el DNS; hecho esto vamos a instalar desde la consola el demonio FTP:

# yum install vsftpd

Una ves que toda la aplicacion se haya descargado e instalado simplemente debemos iniciarlo con el siguiente comando en Centos

# service vsftpd start

o

# systemctl start vsftpd.service

Lo puedes “apagarar” con

# service vsftpd stop

o

# systemctl stop vsftpd.service

y para reinciarlo con

# service vsftpd restart

o

# systemctl restart vsftpd.service

Y para que se autoejecute cuando encienda el sistema (de otro modo no arrancara cuando apague y encienda el server)

# systemctl enable vsftpd.service

Y si deseas quitarlo para que no arranque:

# systemctl disable vsftpd.service

NOTA: En Debian los comandos de instalacion son:

# apt-get install vsftpd

el resto de comandos son los mismos o similares mira más abajo.

Ahora probemos nuestro FTP Server

La primera prueba sera a traves del acceso web; es decir usando un navegador para acceder a los servicios, para ello indicamos en la URL la direccion IP, pero anteponiendo o indicando el protocolo de acceso al ftp, asi:

ftp://192.168.1.111

y veremos esto:

Cambiar la carpeta del acceso anónimo

La carpeta por defecto del acceso anónimo al FTP es /var/ftp, sin embargo puede interesar cambiarla.

Para ello hay que dirigirse editando el fichero  en /etc/vsftpd/vsftpd.conf  y añadir al final la siguiente opción, teniendo que poner de forma obligatoria la ruta absoluta:

anon_root=/home/rutaperonalizada

En /rutapersonalizada se pone la ruta que se crea conveniente, siempre y cuando no coincida con otra que resulta crítica para el sistema, siendo conveniente crear una a través de mkdir, dentro de la carpeta /home o /mnt, que no suelen contener nada crítico a nivel de sistema en su interior.

Cambiada ya la ruta del acceso anónimo, en teoría reiniciando el servicio ya se tendrían que aplicar los cambios, sin embargo si al acceder al FTP vemos que no nos da permiso, es porque nos hemos topado con la segunda gran “barrera” de los sistemas basados en tecnologías Red Hat que es el SeLinux en otro tutorial veremos como desactivarlo o dejar que sea mas “permisivo”.

Listo nuestro server esta funcionando..! obviamente la conexion ha sido “anonima” por ello no ha solicitado clave algun (si vas a colocar archivos que no quieres que otras personas los bajen,para eso se debe asegurar el servidor FTP – no es parte de este manual). Ahora intentaremos conectarnos con un cliente FTP, para lo cual recomiendo uses el filezillaFTP, siendo una aplicacion multiplataforma y facil de usar.

Listo ahora puedes empezar a compratir archivos en tu servidor FTP..!!! 😉

Configurar usuarios locales en el servidor

Para poder usar usuarios locales en el servidor, con su correspondiente contraseña, hay que tener los usuarios locales permitidos en vsftpd.conf, con la opción local_enable=YES. Si teníamos esta opción en NO anteriormente, hay que reiniciar el servicio para que los cambios surtan efecto.

Ahora queda crear el usuario, que no tiene ningún misterio para aquellos que acostumbran a crearlos desde la consola de comandos, ya que el proceso cambia poco:

# useradd -g ftp -d /home/usuario usuario

Descomponemos la línea de comando:

  • useradd: Indica que queremos añadir un nuevo usuario.
  • -g: Indica el grupo al que va a pertenecer el usuario, en este caso ftp.
  • -d: Es el directorio del usuario, su home, en este caso /home/usuario.
  • usuario: Es el nombre del usuario.

El usuario ya está creado, sin embargo hay que asignarle una contraseña, para lo cual se utiliza el clásico passwd:

# passwd usuario

Para mayor informacion respecto de la creacion de usuarios y otros comandos relacionados sigue este link.

Ahora queda indicarle a SeLinux que permita a los usuarios locales acceder su home a través del FTP:

# setsebool -P ftp_home_dir on

Ahora solo queda abrir el cliente, poner la IP del servidor, el usuario y la contraseña y ya tendría que permitir el acceso, pudiendo subir contenidos, ya que se ha iniciado sesión con el usuario que es el propietario de la subcarpeta.

Hacer que un usuario local y el acceso anónimo compartan carpeta

El acceso anónimo, tal y como lo hemos mostrado, se muestra un poco corto, difícil de darle utilidad, al menos que se configure el acceso anónimo al FTP desde un computador de escritorio en producción, en el cual se puede copiar y pegar los contenidos al directorio a golpe de ratón. Sin embargo si quien tiene que suministrar los contenidos no usa su desktop como servidor de FTP, sino un ordenador aparte, empieza a ser complicado poder compartir contenidos, ya que el usuario local y el acceso anónimo no pueden compartir carpeta debido a que SeLinux lo impide.

Para poder compartir una carpeta de usuario con el acceso anónimo en primer lugar hay que ir al fichero vsftpd.conf y en la opción anon_root poner la ruta absoluta del directorio del usuario local, siguiendo  con este ejemplo:

anon_root=/home/usuario

Después hay que reiniciar el servicio y, además, indicar a SeLinux que permita acceso total en el servicio de FTP a través de la siguiente línea de comando:

setsebool allow_ftpd_full_access on

Después hay que dar permisos a los usuarios ajenos al propietario para que puedan ver los contenidos de su carpeta, ya que por defecto los sistemas de tecnología Red Hat utilizan una umask de 077 en la creación de las carpetas de usuario, así que solo el propietario tiene permisos sobre su carpeta personal. Para arreglar esto hay que otorgarle permisos de lectura y ejecución a los demás con chmod:

# chmod -R 755 /home/usuario

EN DEBIAN

Para instalar el servidor VSFTPD:

 apt-get install vsftpd

El fichero de configuración del servidor se encuentra en:

 # /etc/vsftpd.conf

Si se activa el acceso anónimo el directorio por defecto está en:

# /srv/ftp

Por defecto está configurado para que los usuarios anónimos sólo puedan descargarse ficheros de ese directorio.

Notas para la configuración de Acceso Anónimo al servidor FTP para la conexion de usuarios anonimos

Si queremos permitir que los usuarios anónimos puedan subir archivos al servidor tendremos que tener en cuenta que:

El usuario ftp no debe ser propietario del directorio dónde se suban los ficheros.

El usuario ftp no debe ser miembro del grupo propietario del directorio dónde se suban los ficheros.

El directorio anónimo debe tener los permisos de escritura correspondientes para OTROS.

En Debian el directorio raíz por defecto del servidor FTP, está situado en: /srv/ftp

Y dispone de los siguientes permisos ( para ver usa el comando ls -l ):

Si se desea configurar un directorio raíz diferente para el servidor anónimo se usa:

anon_root=/directorio

Por lo tanto si queremos crear un directorio anónimo para escritura el TRUCO está en: crear una carpeta por ejemplo llamada pub dentro de /srv/ftp

 # mkdir /srv/ftp/pub

Comprobar que propietario y grupo esté root por ejemplo

# chown root.root /srv/ftp/pub

Y que tenga permisos de RWX en otros para esa carpeta.

# chmod 757 /srv/ftp/pub

No es necesario modificar el anon_root ya que por defecto está puesto a /srv/ftp
Si queremos que los ficheros que subamos tengan unos permisos por defecto deberemos utilizar la opcion chown_upload_mode Por defecto está puesta a:
-rw——- (0600)
Ejemplo:
# chown_upload_mode=0666
Esto es todo! ya nuestro server FTP estara funcionando..!