Red de conocimiento informático - Material del sitio web - Cómo crear un servicio FTP seguro en Linux con vsftpd

Cómo crear un servicio FTP seguro en Linux con vsftpd

FTP (Protocolo de transferencia de archivos) es uno de los servicios más utilizados en Internet y se utiliza principalmente para transferir archivos de un host a otro. El FTP en sí no se diseñó originalmente como un protocolo seguro; por esta razón, los servicios FTP típicos son vulnerables a ataques comunes como ataques de intermediario y ataques de fuerza bruta.

Se pueden utilizar muchas aplicaciones con funciones de seguridad para crear servicios FTP seguros. Por ejemplo, FTPS (Secure and Secure) utiliza certificados SSL/TLS para cifrar datos de un extremo a otro. SFTP (Protocolo de transferencia de archivos SSH) es otra forma de proteger los datos en tránsito. SFTP se desarrolló como una extensión de SSH y también se puede utilizar junto con otros protocolos de seguridad.

Este tutorial se centrará en crear y proteger un servicio FTP con vsftpd con SSL/TLS habilitado.

Primero, un poco de historia: un servidor FTP típico escucha datos en el puerto TCP 20 y comandos (también llamado puerto de control) en el puerto TCP 20. El establecimiento de la conexión y la interacción con los parámetros del comando se realiza a través del puerto 21. Las conexiones FTP admiten dos métodos: modo activo y modo pasivo. Al establecer una conexión en modo activo, el servidor establece una conexión con el cliente a través del puerto 20 (datos). En modo pasivo, el servidor dedica un puerto de datos aleatorio a cada sesión del cliente y notifica al cliente sobre ese puerto. Luego, el cliente establece una conexión con el puerto aleatorio del servidor.

Según RFC 1635, FTP admite acceso público a través del usuario especial anónimo (que no requiere ninguna contraseña) o el usuario ftp con la contraseña ftp. Además de estos usuarios públicos, vsftpd también admite inicios de sesión de usuarios locales de Linux. Los usuarios de Linux pueden acceder a su directorio de inicio /home/user conectándose al servidor mediante FTP y proporcionando información de inicio de sesión.

Instalación de vsftpd en Linux

Si desea instalar vsftpd en Ubuntu, Debian o Linux Mint, puede utilizar el comando apt-get. Después de que se inicie el sistema, el servicio vsftpd se iniciará automáticamente.

$ sudo apt-get install vsftpd

Si deseas instalar vsftpd en CentOS, Fedora o RHEL, podemos hacerlo fácilmente usando yum. Una vez iniciado el servicio, también se agregará a los elementos de inicio del sistema.

# yum install vsftpd

# service vsftpd start

# chkconfig vsftpd on

Uno de los servicios FTP más básicos que utilizan vsftpd es Ahora listo para usar. Puede acceder al servicio FTP apuntando su navegador a la URL ftp://[nombre del servidor/IP], o utilizando un cliente FTP como FileZilla, conectándose con un nombre de usuario anónimo (sin contraseña) o conectándose con un nombre de usuario ftp y contraseña. ftp.

Después de instalar vsftpd, el usuario del sistema ftp y el directorio de inicio /var/ftp se han agregado al sistema. Siempre que se establece una conexión FTP anónima, la sesión siempre se establece de forma predeterminada en el directorio /var/ftp. Por lo tanto, podemos utilizar este directorio como directorio de inicio para el usuario público de FTP. Se puede acceder a cualquier archivo/directorio ubicado en /var/ftp a través de ftp://[nombre del servidor/IP].

La ubicación del archivo de configuración vsftpd aparece en dos lugares: Ubuntu, Debian o Linux Mint:

#servicio vsftpd reinicio

Control de conexiones y ancho de banda

p>

p>

vsftpd proporciona varios métodos para controlar la conexión y el ancho de banda del usuario. Usaremos varios métodos para ajustar nuestro servidor FTP.

## El ancho de banda asignado para cada sesión anónima se establece en aproximadamente 30 KB/s ##

anon_max_rate=30000

### Por usuario local Aproximadamente Se obtienen 30 KB/s de ancho de banda##

local_max_rate=30000

### La sesión del cliente finaliza después de 300 segundos de inactividad##

idle_session_timeout =300

### Número máximo de conexiones por dirección IP de origen, esto ayuda a proteger contra ataques de denegación de servicio (DoS) y de denegación de servicio distribuido (DDoS)#

max_per_ip =50

Ajuste el firewall

Finalmente, si está ejecutando un firewall iptables en un sistema (como CentOS), asegúrese de que su firewall no se vea afectado de ninguna manera mientras se ejecuta. CentOS, por ejemplo), asegúrese de ajustar las reglas del firewall para permitir el tráfico FTP. Las siguientes reglas pueden ayudarle a comenzar.

# iptables -I ENTRADA -p tcp --dport 20 -j ACEPTAR

# iptables -I ENTRADA -p tcp --dport 21 -j ACEPTAR

# iptables -I INPUT -p tcp --dport 64000 :65535 -j ACCEPT

Las dos primeras reglas permiten el tráfico a través del puerto de control/datos FTP. La última regla permite conexiones en modo pasivo utilizando el rango de puertos definido en vsftpd.conf.

Habilitar el registro

Si encuentra algún problema al crear el servicio FTP en este tutorial, puede habilitar el registro modificando los siguientes parámetros en vsftpd.conf:

xferlog_enable=YES

xferlog_std_format =NO

xferlog_file=/var/log/vsftpd.

log_ftp_protocol=YES

debug_ssl=YES

# service vsftpd restart

Conéctese al servidor FTP con la ayuda de FileZilla

Hoy en día, existen varios clientes FTP que admiten SSL/TLS, especialmente FileZilla.

La primera vez que te conectes a un servidor FTP que admita SSL/TLS, verás el certificado del sitio web. Simplemente confíe en el certificado e inicie sesión.

Solución de problemas para sftpd

1. Si encuentra el siguiente error al conectarse al servidor FTP, puede deberse a que un firewall bloquea el tráfico FTP. Para hacer esto, asegúrese de que los puertos FTP necesarios estén abiertos en el firewall, como se mencionó anteriormente.

ftp: connect: No hay ruta al host

2. Si encuentra el siguiente error al conectarse a un servidor FTP que ejecuta CentOS/RHEL y utiliza chroot para cambiar el directorio raíz, por favor Deshabilite SELinux.

500 OOPS: no se puede cambiar el directorio:/home/dev

Error al iniciar sesión.

Aunque desactivar SELinux es una solución rápida, esto no es posible en un entorno de producción. Probablemente no sea seguro hacerlo. Entonces, activar la siguiente expresión booleana en SELinux resolverá el problema.

$ sudo setsebool -P ftp_home_dir on

3. Si encuentra el siguiente error al acceder a un servidor FTP habilitado para SSL/TLS a través de FileZilla, asegúrese de agregar "ssl_ciphers =FileZilla Default". el cifrado (DES-CBC3-SHA) no es compatible

Seguimiento: alerta GnuTLS 40: error en el protocolo de enlace

Error:

"SSL_accept falló: error: 1408A0C1. :Rutinas SSL: SSL3_GET_CLIENT_HELLO: sin cifrado compartido"

En resumen, no es difícil construir un servidor FTP usando vsftpd. La configuración predeterminada instalada para usuarios anónimos debería poder admitir un servicio FTP pequeño y ordinario. vsftpd también tiene muchos parámetros que se pueden modificar (consulte /man/5/vsftpd.conf para obtener más detalles) para hacerlo más versátil