Instalar un servicio FTP¶
Práctica Completa
Esta es la práctica final, centrada en FTP, del tema Servicio de Transferencia de Archivos . Puedes usar cualquier servidor y cualquier sistema operativo. Para ver los pasos que hay que hacer lo he concretado en el uso de vsftpd sobre Debian 10 en la máquina pública cesareo.freeddns.org.
La opción ideal es instalar un servidor ftp de acceso local. Vamos a descartar, por la complejidad con el firewall y los riesgos de seguridad, instalarlo como servicio público.
Requisitos previos¶
Tienes tu máquina instalada y con acceso remoto (Acceder a un servidor remoto)
Tienes tu servidor FTP ya instalado
> apt-get install vsftpd
Puedes acceder en local (localhost / 127.0.0.1)
> systemctl status vsftpd
(...)
> ftp localhost
(... Código 220 y Banner Bienvenida)
Tareas de Configuración¶
Uso como raíz del servidor ftp: FTP_DIR=/srv/ftp. Revisa los parámetros de configuración de vsftpd y cambia la configuración poco a poco. Reinicia el servicio para que use la configuración nueva.
El repositorio público estará en $FTP_DIR/pub
anon_root=/srv/ftp/pub # Para usuario anonymous/ftp
Crea un mensaje de bienvenida: «Hola! Soy un servidor ftp»
ftpd_banner=Hola! Soy un servidor ftp
Permite (o no) que los usuarios puedan ver el listado de los directorios
dirlist_enable=YES
Permite (o no) que los usuarios locales puedan entrar al servidor FTP
local_enable=YES
Fuerza a que los usuarios locales estén enjaulados en su home
chroot_local_user=YES
Crea dos usuarios locales (ftp1 y ftp2)
> adduser --home /home/ftp1 --shell /bin/sh ftp1
> adduser --home /home/ftp2 --shell /bin/sh ftp2
(puedes comprobar con cat /etc/passwd)
Ojo a comprobar los permisos de sus directorios:
> ls -l /srv/ftp/private
Desactiva la posibilidad de subir archivos como usuario anónimo.
anon_upload_enable=NO
Los usuarios no pueden escribir en sus directorios locales
write_enable=NO # Se puede activar y desactivar
Asegúrate con qué usuario está corriendo el servidor (porque los permisos de ese usuario aplica a los directorios)
nopriv_user=ftp
Asegúrate que sabes en qué archivo está el log
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log # Así puedes revisar con tail -f /var/log/vsftpd (o vía journalctl -u vsftpd).
Comprobar
Y con esto, comprueba el acceso al servidor ftp en local
> ftp localhost
Debe funcionar con los cambios que has hecho (con acceso local).
Ejemplo de archivo /etc/vsftpd¶
Hay multitud de funcionalidad, y configurarlo en detalle puede ser tedioso. Este es un ejemplo sencillo de archivo /etc/vsftpd
listen=YES
listen_ipv6=NO
anonymous_enable=YES
#local_umask=02
anon_root=/srv/ftp/pub
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
data_connection_timeout=120
nopriv_user=ftp
ftpd_banner=Hola, Soy un servidor ftp cualquiera
# Configuración Usuarios Locales
local_enable=YES
write_enable=NO
chroot_local_user=YES
allow_writeable_chroot=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#ssl_enable=NO
# Configurando en modo pasivo. Recuerda abrir estos puertos en el firewall
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50010
Configuración para Acceso Público¶
Para poder acceder de forma pública (desde el exterior) necesitas que el servidor escuche en la interfaz de red pública y abrir los puertos en el firewall. En el tema de Asegurar Servicios usaremos transferencia de archivos con FTP para evitar los problemas de seguridad y configuración de usuarios.
Mejor descartarlo y usar otra forma de transferencia de archivos (vía HTTP, SSH, rsync, SFTP o WebDAV).