Cómo instalar, configurar y asegurar el servidor FTP en CentOS 7 - [Guía integral]

Cómo instalar, configurar y asegurar el servidor FTP en CentOS 7 - [Guía integral]

Ftp (Protocolo de transferencia de archivos) es una herramienta estándar tradicional y ampliamente utilizada para transferir archivos entre un servidor y clientes a través de una red, especialmente cuando no es necesaria una autenticación (permite a los usuarios anónimos conectarse a un servidor). Debemos entender que FTP no es seguro de forma predeterminada, ya que transmite credenciales y datos de los usuarios sin cifrado.

En esta guía, describiremos los pasos para instalar, configurar y asegurar un servidor FTP (VSFTPD representa "Demonio ftp muy seguro") en Cento/Rhel 7 y Fedora distribuciones.

Tenga en cuenta que todos los comandos de esta guía se ejecutarán como raíz, En caso de que no esté operando el servidor con el raíz cuenta, use el comando sudo para obtener privilegios raíz.

Paso 1: Instalación del servidor FTP

1. Instalación VSFTPD El servidor es sencillo, simplemente ejecute el siguiente comando en el terminal.

# yum instalación vsftpd 

2. Una vez que se complete la instalación, el servicio se deshabilitará al principio, por lo que debemos iniciarlo manualmente por el momento y permitirle comenzar automáticamente desde el siguiente arranque del sistema:

# SystemCTL Start VSFTPD # SystemCTL Enable VSFTPD 

3. A continuación, para permitir el acceso a los servicios FTP desde sistemas externos, tenemos que abrir el puerto 21, Donde los demonios FTP escuchan de la siguiente manera:

# firewall-cmd --zone = public --permanent --add-puerto = 21/tcp # firewall-cmd --zone = public --permanent --add-service = ftp # firewall-cmd --leload 

Paso 2: Configuración del servidor FTP

4. Ahora nos moveremos para realizar algunas configuraciones para configurar y asegurar nuestro servidor FTP, comencemos haciendo una copia de seguridad del archivo de configuración original /etc/vsftpd/vsftpd.confusión:

# cp/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.confusión.oriente 

A continuación, abra el archivo de configuración anterior y establezca las siguientes opciones con estos valores correspondientes:

anónimo_enable = no # deshabilitar el inicio de sesión anónimo local_enable = sí # Permit los inicios de sesión locales write_enable = sí # habilitar los comandos ftp que cambian el sistema de archivos local_umask = 022 # valor de upmask para la creación de archivos para usuarios locales dirmessage_enable = sí # enable mostrar los mensajes cuando ingresan por primera vez por primera vez Un nuevo directorio xferlog_enable = sí # un archivo de registro se mantendrá detallando cargas y descarga Connect_from_port_20 = sí # use puerto 20 (data ftp) en la máquina del servidor para conexiones de estilo de puerto xferlog_std_format = sí # Formato de archivo de registro estándar escuchar = no # no # no # no evitar que VSFTPD se ejecute en modo independiente escuchar_IPV6 = sí # vsftpd escuchará en un socket IPv6 en lugar de un ipv4 one pam_service_name = vsftpd # nombre del pam de pam vsftpd usará userList_enable = sí # enable vsftpd para cargar una lista de usernames tcp_wrappers = sí # Encender los envoltorios TCP 

5. Ahora configure FTP para permitir/negar el acceso FTP a los usuarios en función del archivo de la lista de usuarios /etc/vsftpd.Lista de usuarios.

Por defecto, los usuarios enumerados en userlist_file =/etc/vsftpd.Lista de usuarios se les niega el acceso de inicio de sesión con userlist_deny opción establecida en , si userList_enable = sí.

Sin embargo, userlist_deny = no altera la configuración, lo que significa que solo los usuarios enumerados explícitamente en userlist_file =/etc/vsftpd.Lista de usuarios se le permitirá iniciar sesión.

userList_enable = sí # vsftpd cargará una lista de nombres de usuario, desde el nombre de archivo dado por userlist_file userList_file =/etc/vsftpd.UserList # almacena nombres de usuario. userlist_deny = no 

Eso no es todo, cuando los usuarios inician sesión en el servidor FTP, se colocan en una cárcel de chroot, este es el directorio raíz local que actuará como su directorio de inicio solo para la sesión FTP.

A continuación, analizaremos dos posibles escenarios de cómo chroot a los usuarios de FTP en directorio de directorios de inicio (raíz local) para usuarios de FTP, como se explica a continuación.

6. Ahora agregue estas dos opciones siguientes para restringir a los usuarios de FTP a sus directorios de inicio.

chroot_local_user = sí 

chroot_local_user = sí significa que los usuarios locales se colocarán en una cárcel de chroot, su directorio de inicio después de iniciar sesión por configuración predeterminada.

Y también de forma predeterminada, VSFTPD no permite que el directorio de la cárcel de Chroot sea escribida por razones de seguridad, sin embargo, podemos usar la opción tOmod_writable_chroot = sí para anular esta configuración.

Guarde el archivo y cierre.

Asegurar el servidor FTP con Selinux

7. Ahora, establezcamos el Selinux Boolean a continuación para permitir que FTP lea archivos en el directorio de inicio de un usuario. Tenga en cuenta que esto se realizó inicialmente usando el comando:

# setsebool -p ftp_home_dir on 

sin embargo, el ftp_home_dir La directiva se ha deshabilitado de forma predeterminada como se explica en este informe de error: https: // bugzilla.sombrero rojo.com/show_bug.CGI?ID = 1097775.

Ahora usaremos semanago Comando para establecer la regla Selinux para permitir que FTP lea/escriba el directorio de inicio del usuario.

# semanage boolean -m ftpd_full_access --on 

En este punto, tenemos que reiniciar VSFTPD para efectuar todos los cambios que hicimos hasta ahora arriba:

# SystemCTL reiniciar VSFTPD 

Paso 4: Prueba del servidor FTP

8. Ahora probaremos el servidor FTP creando un usuario de FTP con el comando UserAdd.

# userAdd -m -c "Ravi Saive, CEO" -S /bin /Bash Ravi # passwd Ravi 

Después, tenemos que agregar al usuario ravi al archivo /etc/vsftpd.Lista de usuarios Usando el comando echo de la siguiente manera:

# Echo "Ravi" | tee -a /etc /vsftpd.UserList # Cat /Etc /VSFTPD.Lista de usuarios 

9. Ahora es el momento de probar si nuestra configuración anterior funciona correctamente. Comencemos probando inicios de sesión anónimos, podemos ver desde la captura de pantalla a continuación que no están permitidos los inicios de sesión anónimos:

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bienvenido a TecMint.Servicio COM FTP. Nombre (192.168.56.10: raíz): anónimo 530 permiso denegado. error de inicio de sesion. FTP> 
Pruebe el inicio de sesión ftp anónimo

10. Probemos también si un usuario que no figura en el archivo /etc/vsftpd.Lista de usuarios Se le otorgará permiso para iniciar sesión, que no es el caso como en la captura de pantalla a continuación:

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bienvenido a TecMint.Servicio COM FTP. Nombre (192.168.56.10: raíz): Aaronkilik 530 permiso denegado. error de inicio de sesion. FTP> 
Falló el inicio de sesión del usuario de FTP

11. Ahora haga una verificación final si un usuario enumerado en el archivo /etc/vsftpd.Lista de usuarios, En realidad se coloca en su directorio de casa después de iniciar sesión:

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bienvenido a TecMint.Servicio COM FTP. Nombre (192.168.56.10: root): Ravi 331 Especifique la contraseña. Contraseña: 230 Iniciar sesión exitoso. El tipo de sistema remoto es unix. Usando el modo binario para transferir archivos. FTP> LS 

FTP Usuario Inicio de sesión exitoso [Advertencia: Usando tOmod_writable_chroot = sí tiene ciertas implicaciones de seguridad, especialmente si los usuarios tienen permiso de carga o acceso de shell.

Solo active esta opción si sabe exactamente lo que está haciendo. Es importante tener en cuenta que estas implicaciones de seguridad no son específicas de VSFTPD, se aplican a todos los demonios FTP que ofrecen poner a los usuarios locales en las cárceles de Chroot también.

Por lo tanto, analizaremos una forma más segura de establecer un directorio de raíz local no escrita diferente en la siguiente sección.

Paso 5: Configurar diferentes directorios de inicio del usuario de FTP

12. Abra el archivo de configuración VSFTPD nuevamente y comience comentando la opción no segura a continuación:

#DESHING_WRITABLE_CHROOT = SÍ 

Luego cree el directorio root local alternativo para el usuario (ravi, El suyo es probablemente diferente) y elimine los permisos de escritura a todos los usuarios a este directorio:

# mkdir/home/ravi/ftp # chown nadie: nadie/home/ravi/ftp # chmod a-w/home/ravi/ftp 

13. A continuación, cree un directorio debajo de la raíz local donde el usuario almacenará sus archivos:

# mkdir/home/ravi/ftp/files # chown ravi: ravi/home/ravi/ftp/files # chmod 0700/home/ravi/ftp/files/ 

Luego agregue/modifique las siguientes opciones en el archivo de configuración VSFTPD con estos valores:

user_sub_token = $ user # inserta el nombre de usuario en el directorio raíz local local_root =/home/$ user/ftp # Define a cualquier usuario directorio raíz local 

Guarde el archivo y cierre. Una vez más, reiniciemos el servicio con la nueva configuración:

# SystemCTL reiniciar VSFTPD 

14. Ahora haga una prueba final nuevamente y vea que el directorio raíz local de los usuarios es el directorio FTP que creamos en su directorio de inicio.

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bienvenido a TecMint.Servicio COM FTP. Nombre (192.168.56.10: root): Ravi 331 Especifique la contraseña. Contraseña: 230 Iniciar sesión exitoso. El tipo de sistema remoto es unix. Usando el modo binario para transferir archivos. FTP> LS 
FTP User Directorio de inicio de inicio de sesión exitoso

Eso es todo! En este artículo, describimos cómo instalar, configurar y asegurar un servidor FTP en CentOS 7, use la sección de comentarios a continuación para escribirnos con respecto a esta guía/compartir cualquier información útil sobre este tema.

Leer sugerido: Instale el servidor ProfTPD en Rhel/Centos 7

En el siguiente artículo, también le mostraremos cómo asegurar un servidor FTP usando conexiones SSL/TLS en CentOS 7, hasta entonces, manténgase conectado a TECMINT.