Androide

Cómo configurar el servidor ftp con vsftpd en centos 7

Como Configurar FTP Server en CentOS 7

Como Configurar FTP Server en CentOS 7

Tabla de contenido:

Anonim

FTP (File Transfer Protocol) es un protocolo estándar de red cliente-servidor que permite a los usuarios transferir archivos hacia y desde una red remota.

Hay varios servidores FTP de código abierto disponibles para Linux. Los más populares y ampliamente utilizados son PureFTPd, ProFTPD y vsftpd.

En este tutorial, instalaremos vsftpd (Very Secure Ftp Daemon) en CentOS 7. Es un servidor FTP estable, seguro y rápido. También le mostraremos cómo configurar vsftpd para restringir a los usuarios a su directorio personal y cifrar toda la transmisión con SSL / TLS.

Para transferencias de datos más seguras y rápidas, use SCP o SFTP.

Prerrequisitos

Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.

Instalación de vsftpd en CentOS 7

El paquete vsftpd está disponible en los repositorios CentOS predeterminados. Para instalarlo, emita el siguiente comando:

sudo yum install vsftpd

Una vez que el paquete está instalado, inicie el demonio vsftpd y permita que se inicie automáticamente en el momento del arranque:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

Puede verificar que el servicio vsftpd se esté ejecutando imprimiendo su estado:

sudo systemctl status vsftpd

La salida se verá como a continuación, mostrando que el servicio vsftpd está activo y ejecutándose:

● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Configurar vsftpd

La configuración del servicio vsftpd implica editar el archivo de configuración /etc/vsftpd/vsftpd.conf . La mayoría de las configuraciones están bien documentadas dentro del archivo de configuración. Para ver todas las opciones disponibles, visite la página oficial de vsftpd.

En las siguientes secciones, repasaremos algunas configuraciones importantes necesarias para configurar una instalación segura de vsftpd.

Comience abriendo el archivo de configuración vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

1. Acceso FTP

Permitiremos el acceso al servidor FTP solo a los usuarios locales, local_enable directivas anonymous_enable y local_enable y verificaremos que su configuración coincida con las siguientes líneas:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

2. Habilitar cargas

write_enable configuración write_enable para permitir cambios en el sistema de archivos, como cargar y eliminar archivos.

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Cárcel de Chroot

Evite que los usuarios de FTP accedan a cualquier archivo fuera de sus directorios de inicio descomentando la directiva chroot .

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

De forma predeterminada, cuando chroot está habilitado, vsftpd se negará a cargar archivos si el directorio en el que están bloqueados los usuarios es editable. Esto es para evitar una vulnerabilidad de seguridad.

Use uno de los métodos a continuación para permitir cargas cuando Chroot está habilitado.

  • Método 1. - El método recomendado para permitir la carga es mantener Chroot habilitado y configurar directorios FTP. En este tutorial, crearemos un directorio ftp dentro de la página de inicio del usuario que servirá como chroot y un directorio de uploads escritura para cargar archivos.

    /etc/vsftpd/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    Método 2. - Otra opción es agregar la siguiente directiva en el archivo de configuración vsftpd. Use esta opción si debe otorgar acceso de escritura a su usuario a su directorio de inicio.

    /etc/vsftpd/vsftpd.conf

    allow_writeable_chroot=YES

4. Conexiones FTP pasivas

vsftpd puede usar cualquier puerto para conexiones FTP pasivas. Especificaremos el rango mínimo y máximo de puertos y luego abriremos el rango en nuestro firewall.

Agregue las siguientes líneas al archivo de configuración:

/etc/vsftpd/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Limitar el inicio de sesión del usuario

Para permitir que solo ciertos usuarios inicien sesión en el servidor FTP, agregue las siguientes líneas después de la línea userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

userlist_file=/etc/vsftpd/user_list userlist_deny=NO

Cuando esta opción está habilitada, debe especificar explícitamente qué usuarios pueden iniciar sesión agregando los nombres de usuario al /etc/vsftpd/user_list (un usuario por línea).

6. Asegurar transmisiones con SSL / TLS

Para cifrar las transmisiones FTP con SSL / TLS, deberá tener un certificado SSL y configurar el servidor FTP para usarlo.

Puede usar un certificado SSL existente firmado por una autoridad de certificación de confianza o crear un certificado autofirmado.

En este tutorial, generaremos un certificado SSL autofirmado utilizando el comando openssl .

El siguiente comando creará una clave privada de 2048 bits y un certificado autofirmado válido por 10 años. Tanto la clave privada como el certificado se guardarán en un mismo archivo:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Una vez que se crea el certificado SSL, abra el archivo de configuración vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

Encuentre las directivas rsa_cert_file y rsa_private_key_file , cambie sus valores a la ruta del archivo pam y establezca la directiva ssl_enable en YES :

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Si no se especifica lo contrario, el servidor FTP usará solo TLS para hacer conexiones seguras.

Reinicie el servicio vsftpd

Una vez que haya terminado de editar, el archivo de configuración vsftpd (excluyendo comentarios) debería verse así:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Guarde el archivo y reinicie el servicio vsftpd para que los cambios surtan efecto:

sudo systemctl restart vsftpd

Abrir el cortafuegos

Para abrir el puerto 21 (puerto de comando FTP), el puerto 20 (puerto de datos FTP) y 30000-31000 (rango de puertos pasivos), emita los siguientes comandos:

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Vuelva a cargar las reglas del firewall escribiendo:

firewall-cmd --reload

Crear un usuario FTP

Para probar nuestro servidor FTP crearemos un nuevo usuario.

  • Si ya tiene un usuario al que desea otorgar acceso FTP, omita el primer paso. Si configura allow_writeable_chroot=YES en su archivo de configuración, omita el tercer paso.
  1. Cree un nuevo usuario llamado newftpuser :

    sudo adduser newftpuser

    A continuación, deberá configurar la contraseña de usuario:

    sudo passwd newftpuser

    Agregue el usuario a la lista de usuarios FTP permitidos:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

    Cree el árbol del directorio FTP y establezca los permisos correctos:

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    Como se discutió en la sección anterior, el usuario podrá subir sus archivos al directorio ftp/upload .

En este punto, su servidor FTP es completamente funcional y debería poder conectarse a su servidor con cualquier cliente FTP que se pueda configurar para usar el cifrado TLS como FileZilla.

Deshabilitar el acceso a Shell

De forma predeterminada, al crear un usuario, si no se especifica explícitamente, el usuario tendrá acceso SSH al servidor.

Para deshabilitar el acceso al shell, crearemos un nuevo shell que simplemente imprimirá un mensaje que le indicará al usuario que su cuenta está limitada únicamente al acceso FTP.

Ejecute los siguientes comandos para crear el shell /bin/ftponly y hacerlo ejecutable:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Agregue el nuevo shell a la lista de shells válidos en el /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Cambie el shell del usuario a /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Use el mismo comando para cambiar el shell para otros usuarios a los que desea dar solo acceso FTP.

Conclusión

En este tutorial, aprendió a instalar y configurar un servidor FTP seguro y rápido en su sistema CentOS 7.

ftp centos