GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo configurar el servidor FTP en Debian 9 Stretch Linux

Objetivo

El objetivo es instalar y configurar el servidor FTP en Debian 9 Stretch Linux permitiendo el acceso de usuarios anónimos o locales.

Sistema operativo y versiones de software

  • Sistema operativo: – Debian 9 Estiramiento
  • Software: – vsFTPd versión 3.0.3

Requisitos

Acceso privilegiado a

Dificultad

MEDIO

Convenios

  • # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando
  • $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios

Instrucciones

El siguiente tutorial explicará cómo instalar y configurar un servidor FTP usando vsFTPd demonio. También discutirá varias configuraciones para permitir el acceso de escritura o solo lectura a usuarios anónimos, así como a usuarios locales.

Instalación de vsFTPd

Comencemos por la instalación del servidor vsFPTd y el cliente FTP:

# apt install vsftpd ftp

De manera predeterminada, el servidor vsFTPd viene configurado para permitir que los usuarios del sistema accedan a sus directorios principales con acceso de solo lectura. El siguiente es un archivo de configuración vsFTPd predeterminado /etc/vsftpd.conf :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
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

Como ya se mencionó, el archivo de configuración anterior solo otorgará acceso de solo lectura a cualquier usuario del sistema que figure en /etc/passwd expediente. Usar ftp comando e intente conectarse usando el nombre de usuario y la contraseña de cualquiera de los usuarios del sistema local:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
550 Permission denied.

Si solo necesita acceso de solo lectura por parte de sus usuarios locales, ya ha terminado.

Permitir acceso de escritura de usuario

Para agregar acceso de escritura para todos los usuarios locales del sistema, elimine el comentario o agregue la siguiente estrofa write_enable=YES . El nuevo archivo de configuración consta de:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
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
write_enable=YES

A continuación, reinicie su vsFTPd:

# systemctl restart vsftpd

Realiza una nueva prueba con ftp comando para confirmar el acceso de escritura:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 1000     1000            0 Jun 07 12:45 FILE.TXT
226 Directory send OK.

Permitir solo usuarios específicos

Por el momento nuestro servidor FTP permite el acceso a cualquier usuario del sistema definido dentro de /etc/passwd expediente. Para permitir que solo usuarios específicos puedan iniciar sesión, podemos incluir las siguientes líneas en nuestro archivo de configuración:

userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

Lo anterior habilitará una lista de usuarios predefinida en la que cualquier usuario aparece dentro de /etc/vsftpd.userlist (un nombre de usuario por línea) tendrá acceso denegado a FTP, mientras que todos los demás usuarios del sistema podrán iniciar sesión. Vamos a crear un nuevo /etc/vsftpd.userlist lista de usuarios que consta de un solo usuario linuxconfig :

# echo linuxconfig > /etc/vsftpd.userlist

Reinicie el servidor vsFTPd:

# systemctl restart vsftpd

Realiza una nueva prueba con ftp comando para confirmar el acceso denegado al servidor FTP para linuxconfig usuario:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
530 Permission denied.
Login failed.
ftp> 

Sin embargo, si necesita poder iniciar sesión solo con los usuarios definidos en /etc/vsftpd.userlist , agregue la siguiente opción de configuración userlist_deny=NO en su archivo de configuración de vsFTPd /etc/vsftpd.conf . A continuación se muestra nuestro /etc/vsftpd.conf actual archivo de configuración:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
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
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO

Permitir anónimo

En esta etapa también vamos a permitir el acceso de solo lectura por parte de usuarios anónimos. Comencemos creando un nuevo directorio que se usará como directorio raíz para un usuario anónimo, por ejemplo. /var/ftp . Para fines de prueba, también podemos colocar algún archivo de prueba arbitrario dentro de /var/ftp :

# mkdir /var/ftp/
# chmod 555 /var/ftp/
# chown ftp.ftp /var/ftp/
# touch /var/ftp/ANONYMOUS.TXT

Además, incluya las siguientes líneas en /etc/vsftpd.conf archivo de configuración para definir el directorio de inicio anónimo y el acceso anónimo:

anon_root=/var/ftp
anonymous_enable=YES

Opcionalmente, agregue no_anon_password=YES para indicarle a vsFTPd que permita que un usuario anónimo inicie sesión automáticamente sin la contraseña. Como ahora hemos definido la lista de usuarios, también debemos agregar el anonymous usuario a la lista:

# echo anonymous >> /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist 
linuxconfig
anonymous

Como de costumbre, reinicie su servidor FTP y realice una validación de su configuración actual:

# systemctl restart vsftpd

Probar inicio de sesión anónimo:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
226 Directory send OK.
ftp> 

A continuación puede encontrar nuestro archivo de configuración vsFTPd actual:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
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
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES

Habilitar acceso de escritura anónimo

A continuación, permitamos que un usuario anónimo cargue archivos y cree nuevos directorios y más. Para hacerlo, crea un nuevo directorio upload dentro del /var/ftp directorio:

# mkdir /var/ftp/upload
# chown ftp.ftp /var/ftp/upload/

A continuación, agregue las siguientes líneas en su archivo de configuración de vsFTPd:

anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Reinicie su servidor:

# systemctl restart vsftpd

Después del reinicio, el usuario anónimo podrá cargar archivos, crear directorios y renombrar archivos:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
drwxr-xr-x    2 108      112          4096 Jun 07 13:57 upload
226 Directory send OK.
ftp> cd upload
250 Directory successfully changed.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 FILE.TXT
226 Directory send OK.
ftp> rename FILE.TXT NEW.TXT
350 Ready for RNTO.
250 Rename successful.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 NEW.TXT
226 Directory send OK.
ftp> 

A continuación puede encontrar nuestro archivo de configuración final de vsFTPd:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
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
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Apéndice

Mensaje de error:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
ftp>

Lo anterior indica que su anon_root El directorio es escribible. La solución es hacerlo de solo lectura. Ejemplo:

# chmod 555 /var/ftp

Alternativamente, intente agregar la siguiente línea en su archivo de configuración de vsFTPd:

allow_writeable_chroot=YES

Debian
  1. Cómo configurar el servidor y el cliente NTP en Debian 9 Stretch Linux

  2. Cómo instalar un servidor LAMP en Debian 9 Stretch Linux

  3. Cómo configurar NFS en Debian 9 Stretch Linux

  4. Cómo instalar Jenkins en Debian 9 Stretch Linux

  5. Cómo instalar NodeJS en Debian 9 Stretch Linux

Cómo configurar LAMP con Debian 11

Cómo configurar el servidor Samba con Debian 11

Cómo instalar el servidor vsftpd en Debian 11

Cómo instalar el servidor de Minecraft en Debian 9 Stretch

Cómo instalar Jetty en Debian 9 Stretch

Cómo instalar un servidor FTP en Debian 10