Está en la página 1de 8

Guia para la seguridad y rendimiento de un servicio FTP

Carlos Geovanny Escobar Portillo EP100516

Después de la instalación de servicio vsftp se procederá a la configuración del servicio.

1) Crear un archivo chroot_list donde se guardará una lista de usuario

2) Ejecute lo siguiente para activar el servicio en todos los niveles de ejecución:

chkconfig vsftpd on

3) Ejecute lo siguiente para iniciar por primera vez el servicio:

service vsftpd start

Ejecute lo siguiente para reiniciar el servicio o bien hacer que los cambios hechos a la
configuración surtan efecto:

service vsftpd restart

Ejecute lo siguiente para detener el servicio:

service vsftpd stop

4) Levantar el firewall del servidor.

5) Es necesario abrir los puerto 20 y 21, por TCP (FTP-DATA y FTP, respectivamente) y el
rango de puertos para conexiones pasivas que se haya definido. Ejecute lo siguiente para
anexar las reglas de iptables correspondientes:

a) Anexar las reglas de iptables correspondientes


b) Ejecute lo siguiente para guardar los cambios
c) Reinicie el servicio iptables
Ejecute lo siguiente para permitir que el servidor FTP pueda asociarse a cualquier puerto sin
reservar al funcionar en modo pasivo:

Si se necesita permitir el acceso utilizando las cuentas de usuarios del anfitrión local —a fin
de que éstos puedan acceder a sus directorio de inicio— se debe habilitar la política
ftp_home_dir:

Ejecute lo siguiente para hacer que SELinux permita acceder a los usuarios locales al resto
del sistema de archivos:

Ejecute lo siguiente para permitir que el servicio vsftpd pueda hacer uso de sistemas de
archivos remotos a través de CIFS (Samba) o NFS y que serán utilizados para compartir a
través del servicio:

Hay varias opciones de configuración que pueden modificarse para hacer más seguro el
servicio y añadir funcionalidad.
Opción anonymous_enable.

Esta opción viene incluida en la configuración predeterminada. Se utiliza para definir si se


permitirán los accesos anónimos al servidor. Establezca como valor YES o NO de acuerdo
a lo que se requiera. Establecer YES permitirá a cualquiera acceder libremente al los datos
almacenados dentro del directorio /var/ftp, el cual está vacío de modo predeterminado.
Decida qué hacer. Si tiene dudas, establezca NO.

anonymous_enable=NO

Opción local_enable.

Esta opción viene incluida en la configuración predeterminada. Establece si se van a


permitir los accesos autenticados de los usuarios locales del sistema. Establezca como
valor YES o NO de acuerdo a lo que se requiera. Decida qué hacer. salvo que sólo quiera
permitir acceso anónimo, establezca YES, otro modo tendría poca utilidad el servicio.

local_enable=YES

Opción write_enable.

Esta opción viene incluida en la configuración predeterminada. Establece si se permite


ejecutar write (escritura) en el servidor. Establezca como valor YES o NO de acuerdo a lo
que se requiera. Decida qué hacer. salvo que sólo quiera permitir acceso anónimo,
establezca YES, otro modo tendría poca utilidad el servicio.
write_enable=YES

Opciones anon_upload_enable y anon_mkdir_write_enable.

Ambas opciones vienen incluidas en la configuración predeterminada.

La opción anon_upload_enable específica si los usuarios anónimos tendrán permitido subir


contenido al servidor. Por lo general no es una función deseada, por lo que se acostumbra
desactivar ésta. Decida qué hacer. Si tiene dudas, establezca para ambas NO

anon_upload_enable=NO

La opción anon_mkdir_write_enable específica si los usuarios anónimos tendrán permitido


crear directorios en el servidor. Al igual que la anterior, por lo general no es una función
deseada, por lo que se acostumbra desactivar ésta.

anon_mkdir_write_enable=NO

Opción ftpd_banner.

Esta opción viene incluida en la configuración predeterminada. Sirve para establecer el


banderín de bienvenida que será mostrado cada vez que un usuario acceda al servidor.
Puede establecerse cualquier frase breve que considere conveniente, pero sin signos de
puntuación.

ftpd_banner=Bienvenido al servidor FTP de nuestra empresa

Estableciendo jaulas para los usuarios: opciones chroot_local_user y chroot_list_file.

Estas opciones vienen incluidas —pero desactivadas— en la configuración predeterminada.

De modo predeterminado los usuarios del sistema que se autentiquen tendrán acceso a
otros directorios del sistema fuera de su directorio personal. Si se desea limitar a los
usuarios a sólo poder utilizar su propio directorio personal, puede hacerse fácilmente con la
opción chroot_local_user que habilitará la función de chroot() y las opciones
chroot_list_enable y chroot_list_file, para establecer el archivo con la lista de usuarios que
quedarán excluidos de la función chroot().

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list
Con lo anterior cada vez que un usuario local se autentique en el servidor FTP, sólo tendrá
acceso a su propio directorio personal y lo que éste contenga. Por favor recuerde crear el
archivo /etc/vsftpd/chroot_list debido a que de otro modo será imposible que funcione
correctamente el servicio vsftpd.

La función chroot() puede ser peligrosa si el usuario regular utilizado tiene acceso al
intérprete de mandatos del sistema (/bin/bash o /bin/sh) y además privilegios de escritura
sobre el directorio raíz de su propia jaula (es decir su directorio de inicio). Los directorios de
inicio de los usuarios involucrados deben tener permiso 755, sean propiedad de root y se
asigne al usuario /bin/false o /sbin/nologin como intérprete de mandatos.

Guarde los cambios realizados hasta ahora, salga del editor de texto y realice el siguiente
procedimiento, el cual corresponde a lo que sería necesario ejecutar para modificar el
contenido del directorio de inicio del usuario regular —en este ejemplo se utiliza a
mengano— con el cual se quiera acceder al servidor FTP utilizando chroot() con vsftpd-3.0
y versiones posteriores:

chmod 755 /home/mengano

chown root:root /home/mengano

mkdir -p -m 755 /home/mengano/public_html

mkdir -p -m 700 /home/mengano/{mail,.ssh}

chown mengano:mengano /home/mengano/{mail,public_html,.ssh}

usermod -s /sbin/nologin mengano

Desde la versión 3.0 de vsftpd, de modo predeterminado se impide el ingreso con chroot() a
todos los usuarios regulares que tengan acceso al intérprete de mandatos o bien que
posean privilegios de escritura sobre su propio directorio de inicio.

Opciones pasv_min_port y pasv_max_port.

Ambas opciones están ausentes en el archivo /etc/vsftpd/vsftpd.conf. Añada éstas al final


del archivo de configuración. Permiten establecer el rango arbitrario de puertos utilizados
para las conexiones pasivas. Puede elegirse cualquier rango de puertos entre 1024 y
65535, mismo que deberá ser habilitado en el muro cortafuegos del servidor. En el siguiente
ejemplo se establece el rango de puertos para conexiones pasivas de 30300 a 30309:

pasv_min_port=30300

pasv_max_port=30309

Control del ancho de banda.


Opción anon_max_rate.

Esta opción está ausente en la configuración predeterminada. Puede añadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Se utiliza para limitar la tasa de transferencia, en bytes por
segundo, para los usuarios anónimos, algo sumamente útil en servidores FTP de acceso
público. En el siguiente ejemplo se limita la tasa de transferencia a 500 Kb por segundo
para los usuarios anónimos:

anon_max_rate=524288

Opción local_max_rate.

Esta opción está ausente en la configuración predeterminada. Puede añadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Hace lo mismo que anon_max_rate, pero aplica para
usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 1
MB por segundo para los usuarios locales:

local_max_rate=1048576

Opción max_clients.

Esta opción está ausente en la configuración predeterminada. Puede añadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Establece el número máximo de clientes que podrán acceder
simultáneamente hacia el servidor FTP. En el siguiente ejemplo se limitará el acceso a 20
clientes simultáneos.

max_clients=20

Opción max_per_ip.

Esta opción está ausente en la configuración predeterminada. Puede añadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Establece el número máximo de conexiones que se pueden
realizar desde una misma dirección IP. Tome en cuenta que algunas redes acceden a
través de un servidor intermediario (Proxy) o puerta de enlace y debido a ésto podrían
quedar bloqueados innecesariamente algunos accesos. En el siguiente ejemplo se limita el
número de conexiones por IP simultáneas a un máximo de 10.

max_per_ip=10

Soporte TLS.
Siendo que todos los datos enviados a través del protocolo FTP se hacen en texto simple
(incluyendo nombres de usuario y claves de acceso), hoy en día es muy peligroso operar un
servidor FTP sin SSL/TLS.

VSFTPD puede ser configurado fácilmente para utilizar los protocolos SSL (Secure Sockets
Layer o Nivel de Zócalo Seguro) y TLS (Transport Layer Security o Seguridad para Nivel de
Transporte) a través de un certificado RSA.

Acceda al directorio /etc/pki/tls/.

cd /etc/pki/tls/

El certificado y firma digital se pueden generar ejecutando la siguiente línea para utilizar una
estructura X.509, algoritmo de cifrado RSA de 4096 bits, sin Triple DES —lo cual permita
iniciar normalmente al servicio sin interacción alguna— y una validez por 1825 días —cinco
años.

openssl req -sha256 -x509 -nodes -days 1825 -newkey rsa:4096 -keyout
private/vsftpd.key -out certs/vsftpd.crt

Lo anterior solicitará se ingresen los siguientes datos:

● Código de dos letras para el país.


● Estado o provincia.
● Ciudad.
● Nombre de la empresa o bien la razón social.
● Unidad o sección responsable del certificado.
● Nombre del anfitrión (FQDN).
● Dirección de correo electrónico de la persona responsable del
certificado.

El archivo del certificado (vsftpd.crt) y el de la firma digital (vsftpd.key), deben tener


permisos de lectura y escritura sólo para el usuario root.

chmod 600 certs/vsftpd.crt private/vsftpd.key

Regrese al directorio de inicio del usuario root.

cd
Edite el archivo /etc/vsftpd/vsftpd.conf:

vi /etc/vsftpd/vsftpd.conf

Añada al final de este archivo todo el siguiente contenido:

# Habilita el soporte de TLS/SSL


ssl_enable=YES
# Deshabilita o habilita utilizar TLS/SSL con usuarios anónimos
allow_anon_ssl=NO
# Obliga a utilizar TLS/SSL para todas las operaciones, es decir,
# transferencia de datos y autenticación de usuarios locales.
# Establecer el valor NO, hace que sea opcional utilizar TLS/SSL.
force_local_data_ssl=YES
force_local_logins_ssl=YES
# Se prefiere TLSv1 sobre SSLv2 y SSLv3
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Rutas del certificado y firma digital
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
ssl_ciphers=HIGH
require_ssl_reuse=NO

Reinicie el servicio para aplicar los cambios realizados a la configuración.

service vsftpd restart

También podría gustarte