FTP (File Transfer Protocol) es un protocolo de red estándar relativamente antiguo y más utilizado Utilizado para cargar/descargar archivos entre dos computadoras a través de una red. Sin embargo, FTP por su inseguro original, ya que transmite datos junto con las credenciales de usuario (nombre de usuario y contraseña) sin cifrado.
advertencia: si planea usar FTP, considere configurar la conexión FTP con SSL / TLS (se cubrirá en el siguiente artículo). De lo contrario, siempre es mejor usar FTP seguro como SFTP.,
lectura sugerida: Cómo instalar y asegurar el servidor FTP en CentOS 7
en este tutorial, mostraremos cómo instalar, configurar y asegurar un servidor FTP (vsftpd en su totalidad «demonio FTP muy seguro») en Ubuntu para tener una potente seguridad contra vulnerabilidades FTP.
Paso 1: Instalación del servidor vsftp en Ubuntu
1. Primero, necesitamos actualizar la lista de fuentes del paquete del sistema y luego instalar el paquete binario VSFTPD de la siguiente manera:
$ sudo apt-get update$ sudo apt-get install vsftpd
2., Una vez que se complete la instalación, el servicio se deshabilitará inicialmente, por lo tanto, necesitamos iniciarlo manualmente por el tiempo medio y también Habilitar que se inicie automáticamente desde el siguiente arranque del sistema:
3., A continuación, si tiene UFW firewall habilitado ( no está habilitado por defecto) en el servidor, debe abrir los puertos 21 y 20 donde los demonios FTP están escuchando, para permitir el acceso a los servicios FTP desde máquinas remotas, luego agregue las nuevas reglas de firewall de la siguiente manera:
$ sudo ufw allow 20/tcp$ sudo ufw allow 21/tcp$ sudo ufw status
Paso 2: Configuración y protección del servidor vsftp en Ubuntu
4. Ahora vamos a realizar algunas configuraciones para configurar y asegurar nuestro servidor FTP, primero crearemos una copia de seguridad del archivo de configuración original /etc/vsftpd/vsftpd.,conf así:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
a continuación, abramos el archivo de configuración vsftpd.
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
Añadir/modificar las siguientes opciones con estos valores:
anonymous_enable=NO # disable anonymous loginlocal_enable=YES# permit local loginswrite_enable=YES# enable FTP commands which change the filesystemlocal_umask=022 # value of umask for file creation for local usersdirmessage_enable=YES # enable showing of messages when users first enter a new directoryxferlog_enable=YES# a log file will be maintained detailing uploads and downloadsconnect_from_port_20=YES # use port 20 (ftp-data) on the server machine for PORT style connectionsxferlog_std_format=YES # keep standard log file formatlisten=NO # prevent vsftpd from running in standalone modelisten_ipv6=YES # vsftpd will listen on an IPv6 socket instead of an IPv4 onepam_service_name=vsftpd # name of the PAM service vsftpd will useuserlist_enable=YES # enable vsftpd to load a list of usernamestcp_wrappers=YES # turn on tcp wrappers
5. Ahora, configure VSFTPD para permitir / denegar el acceso FTP a los usuarios basándose en el archivo de Lista de usuarios / etc / vsftpd.lista de usuarios.
tenga en cuenta que, por defecto, los usuarios listados en userlist_file=/etc/vsftpd.a la lista de usuarios se les niega el acceso de inicio de sesión con la opción userlist_deny=YES
si userlist_enable=YES
.,
pero, la opción userlist_deny=NO
tuerce el significado de la configuración predeterminada, por lo que solo los usuarios cuyo nombre de usuario aparece explícitamente en userlist_file=/etc/vsftpd.a la lista de usuarios se le permitirá iniciar sesión en el servidor FTP.
importante: cuando los usuarios inician sesión en el servidor FTP, se colocan en una cárcel chrooted, este es el directorio raíz local que actuará como su directorio principal solo para la sesión FTP.
a continuación, veremos dos posibles escenarios de cómo establecer el directorio chrooted jail (raíz local), como se explica a continuación.
6., En este punto, agreguemos / modifiquemos / descomentemos estas dos opciones siguientes para restringir a los usuarios FTP a sus directorios personales.
chroot_local_user=YESallow_writeable_chroot=YES
la opción chroot_local_user=YES
significa que los usuarios locales serán colocados en una cárcel de chroot, su directorio personal por defecto después de iniciar sesión.
y también debemos entender que VSFTPD no permite que el directorio chroot jail sea escribible, por defecto por razones de seguridad, sin embargo, podemos usar la opción allow_writeable_chroot=YES para deshabilitar esta configuración.
Guarde el archivo y ciérrelo., Luego tenemos que reiniciar los servicios VSFTPD para que los cambios anteriores surtan efecto:
------------- On SystemD ------------- # systemctl restart vsftpd------------- On SysVInit ------------- # service vsftpd restart
Paso 3: probando el servidor vsftp en Ubuntu
7. Ahora probaremos el servidor FTP creando un usuario FTP con el comando useradd de la siguiente manera:
$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik$ sudo passwd aaronkilik
entonces, tenemos que listar explícitamente el usuario aaronkilik en el archivo /etc/vsftpd.userlist con el comando echo y el comando tee de la siguiente manera:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist$ cat /etc/vsftpd.userlist
8. Ahora es el momento de probar que nuestras configuraciones anteriores funcionan según sea necesario., Comenzaremos por probar los inicios de sesión anónimos; podemos ver claramente en la salida a continuación que los inicios de sesión anónimos no están permitidos en el servidor FTP:
9. A continuación, vamos a probar si un usuario no aparece en el archivo /etc/vsftpd.a userlist se le otorgará permiso para iniciar sesión, lo que no es cierto desde la salida que sigue:
10. Ahora vamos a llevar a cabo una prueba final para determinar si un usuario aparece en el archivo /etc/vsftpd.userlist, en realidad se coloca en su directorio personal después de iniciar sesión., Y esto es cierto de la salida a continuación:
advertencia: configurando la opción allow_writeable_chroot=YES
puede ser tan peligroso, que tiene posibles implicaciones de seguridad, especialmente si los usuarios tienen permiso de carga, o más aún, acceso de shell. Solo úsalo si sabes exactamente lo que estás haciendo.
debemos tener en cuenta que estas implicaciones de seguridad no son específicas de VSFTPD, también pueden afectar a todos los demás demonios FTP que ofrecen poner usuarios locales en cárceles de chroot.,
debido a esta razón, en la sección a continuación, explicaremos un método más seguro de establecer un directorio raíz local no escribible diferente para un usuario.
Paso 4: Configurar los directorios de inicio de usuario FTP en Ubuntu
11. Ahora, Abra el archivo de configuración VSFTPD una vez más.,
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
y comente la opción no segura usando el carácter #
como se muestra a continuación:
#allow_writeable_chroot=YES
a continuación, cree el directorio raíz local alternativo para el usuario (aaronkilik, el suyo posiblemente no sea el mismo) y establezca los permisos requeridos deshabilitando los permisos de escritura para todos los demás usuarios de este directorio:
$ sudo mkdir /home/aaronkilik/ftp$ sudo chown nobody:nogroup /home/aaronkilik/ftp$ sudo chmod a-w /home/aaronkilik/ftp
12., Luego, cree un directorio bajo la raíz local con los permisos apropiados donde el usuario almacenará sus archivos:
después, agregue / modifique las opciones a continuación en el archivo de configuración de VSFTPD con sus valores correspondientes:
guarde el archivo y ciérrelo. Y reinicie los servicios VSFTPD con la configuración reciente:
------------- On SystemD ------------- # systemctl restart vsftpd------------- On SysVInit ------------- # service vsftpd restart
13. Ahora, vamos a realizar una comprobación final y asegúrese de que el directorio raíz local del Usuario es el directorio FTP que creamos en su directorio personal.,