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

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

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 la autenticación ( permite que usuarios anónimos se conecten a un servidor). Debemos entender que FTP no es seguro por defecto, porque transmite credenciales de usuario y datos sin cifrado.

En esta guía, describiremos los pasos para instalar, configurar y asegurar un servidor FTP ( VSFTPD. significa “ Demonio FTP muy seguro. ) en distribuciones CentOS. RHEL 7. y Fedora.

Tenga en cuenta que todos los comandos de esta guía se ejecutarán como root. en caso de que no esté operando el servidor con la cuenta root. utilice el comando sudo para obtener privilegios de root.

Paso 1: Instalar el servidor FTP

1.. Instalar el servidor vsftpd. es sencillo, simplemente ejecute el siguiente comando en la terminal.

# yum install vsftpd

2.. Una vez completada la instalación, el servicio se desactivará al principio, por lo que debemos iniciarlo manualmente para el momento y permitir que se inicie automáticamente desde el siguiente t arranque del sistema también:

# systemctl start vsftpd # systemctl enable vsftpd freestar.config.enabled_slots.push

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 están escuchando de la siguiente manera:

# firewall-cmd-zone = public–permanent–add-port = 21/tcp # firewall-cmd–zone = public–permanent–add-service = ftp # firewall-cmd–reload

Paso 2: Configuración del servidor FTP

4.. Ahora pasaremos a realizar algunas configuraciones para configurar y asegurar nuestro servidor FTP, comencemos por hacer una copia de seguridad del archivo de configuración original /etc/vsftpd/vsftpd.conf.

# cp/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf.orig

A continuación, abra el archivo de configuración anterior y configure lo siguiente opciones con estos valores correspondientes:

anonymous_enable = NO # deshabilitar el inicio de sesión anónimo local_enable = YES # permitir inicios de sesión locales write_enable = YES # habilitar comandos FTP que cambian el sistema de archivos local_umask = 022 # valor de umask para la creación de archivos para usuarios locales dirmessage_enable = YES # habilitar la visualización de mensajes cuando los usuarios ingresan por primera vez a un nuevo directorio xferlog_enable = YES # se mantendrá un archivo de registro detallando las cargas y descargas connect_from_port_20 = YES # use el puerto 20 (ftp-data) en la máquina servidor para conexiones de estilo PORT xferlog_std_format = YES # mantenga el formato de archivo de registro estándar listen = NO # evite que vsftpd se ejecute en modo independiente listen_ipv6 = YES # vsftpd escuchará en un socket IPv6 en lugar de uno IPv4 one pam_service_name = vsftpd # nombre del servicio PAM vsftpd usará userlist_enable = YES # habilitar vsftpd para cargar una lista de nombres de usuario tcp_wrappers = YES # activar envoltorios tcp

5.. Ahora configure FTP para permitir/denegar el acceso FTP a los usuarios según el archivo de lista de usuarios/etc/v sftpd.userlist.

De forma predeterminada, a los usuarios que figuran en userlist_file =/etc/vsftpd.userlist se les niega el acceso de inicio de sesión con la opción userlist_deny. establecida en YES. si userlist_enable = YES.

Sin embargo, userlist_deny = NO. altera la configuración, lo que significa que solo los usuarios enumerados explícitamente en userlist_file =/etc/vsftpd.userlist. podrá iniciar sesión.

userlist_enable = YES # vsftpd cargará una lista de nombres de usuario, a partir del nombre de archivo dado por userlist_file userlist_file =/etc/vsftpd.userlist # almacena los 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 con chroot’ed, este es el directorio raíz local que actuará como su directorio de inicio solo para la sesión FTP.

A continuación, veremos dos escenarios posibles de cómo hacer un chroot de usuarios de FTP en 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 = YES allow_writeable_chroot = YES

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

Y también de manera predeterminada, vsftpd no permite que el directorio de jail chroot sea modificable por razones de seguridad, sin embargo, podemos usar la opción allow_writeable_chroot = YES. para anular esta configuración.

Guarde el archivo y ciérrelo.

Asegurar el servidor FTP con SELinux

7.. Ahora, configuremos el booleano SELinux. a continuación para permitir que FTP lea archivos en directorio de inicio de un usuario. Tenga en cuenta que esto se hizo inicialmente con el comando:

# setsebool-P ftp_home_dir en

Sin embargo, la directiva ftp_home_dir se ha desactivado de forma predeterminada como se explica en este informe de error: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Ahora usaremos el comando semanage. para configurar la regla SELinux para permitir que FTP lea/escriba el directorio personal 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:

# systemctl restart vsftpd

Paso 4: Probar el servidor FTP

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

# useradd-m-c “Ravi Saive, CEO”-s/bin/bash ravi # passwd ravi

​​Luego, tenemos que agregar el usuario ravi. al archivo /etc/vsftpd.userlist. usando el comando echo de la siguiente manera:

# echo “ravi” | tee-a/etc/vsftpd.userlist # cat/etc/vsftpd.userlist

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

# ftp 192.168.56.10. Conectado a 192.168.56.10 (192.168.56.10). 220 Bienvenido al servicio FTP de TecMint.com. Nombre (192.168.56.10:root): anónimo 530 Permiso denegado. Error de inicio de sesion. ftp>  Prueba de inicio de sesión FTP anónimo  Test Anonymous FTP Login Test Anonymous FTP Login

10.. También probemos si un usuario que no figura en el archivo /etc/vsftpd.userlist. tendrá permiso para iniciar sesión, lo cual 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 al servicio FTP de TecMint.com. Nombre (192.168.56.10:root): aaronkilik 530 Permiso denegado. Error de inicio de sesion. ftp>  Error de inicio de sesión de usuario FTP  Error de inicio de sesión de usuario de FTP Error de inicio de sesión de usuario de FTP

11.. Ahora haga un final compruebe si un usuario que figura en el archivo /etc/vsftpd.userlist. se encuentra realmente en su directorio de inicio después de iniciar sesión:

# ftp 192.168.56.10. Conectado a 192.168.56.10 (192.168.56.10). 220 Bienvenido al servicio FTP de TecMint.com. Nombre (192.168.56.10:root): ravi 331 Especifique la contraseña. Contraseña:. 230 Inicio de sesión exitoso. El tipo de sistema remoto es UNIX. Usando el modo binario para transferir archivos. ftp> ls.

Acceso de usuario FTP exitoso [  Inicio de sesión de usuario de FTP exitoso [ Inicio de sesión de usuario de FTP exitoso [ Advertencia. El uso de allow_writeable_chroot = YES 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 también ofrecen poner a los usuarios locales en jaulas chroot.

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

Paso 5: Configurar diferentes directorios de inicio de usuario FTP

12.. Abra el archivo de configuración vsftpd nuevamente y comience comentando la opción insegura a continuación:

# allow_writeable_chroot = YES

Luego cree el directorio raíz local alternativo para el usuario (ravi, el suyo probablemente sea diferente) y elimine los permisos de escritura a todos los usuarios en este directorio:

# mkdir/home/ravi/ftp # chown nadie: nadie/home/ravi/ftp # chmod aw/home/ravi/ftp

13.. A continuación, cree un directorio en 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 cualquier directorio raíz local de los usuarios

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

# systemctl restart vsftpd

14.. Ahora haga una prueba final nuevamente y vea que el directorio raíz local del usuario 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 al servicio FTP de TecMint.com. Nombre (192.168.56.10:root): ravi 331 Especifique la contraseña. Contraseña:. 230 Inicio de sesión exitoso. El tipo de sistema remoto es UNIX. Usando el modo binario para transferir archivos. ftp> ls.  Usuario FTP Inicio Directorio Inicio de sesión exitoso  Directorio de inicio de usuario de FTP Inicio de sesión exitoso Inicio de sesión exitoso en el directorio de inicio de usuario de FTP

¡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 sobre esta guía/compartir cualquier información útil sobre este tema.

Lectura sugerida: Instale el servidor ProFTPD en RHEL/CentOS 7

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