Uno de los métodos de conexión mas seguros y tradicionales en cualquier organización es FTP (File Transfer Protocol – Protocolo de Transferencia de Archivos) el cual permite la transferencia de archivos entre dos equipos en una red TCP.
Su diseño esta basado en la arquitectura cliente-servidor, con la cual es posible usar un equipo cliente desde donde nos podremos conectar a un servidor para descargar archivos desde él o para enviarle archivos independientemente del sistema operativo usado en cada uno de los equipos, de allí la amplia acogida de este protocolo.
Una de las utilidades que tenemos disponibles para añadir aún más seguridad en la conexión FTP es ProFTPD la cual analizaremos el día de hoy en CentOS 7.
- AIX
- BSD/OS
- Cygwin
- Digital Unix
- DG/UX HP/UX
- IRIX
- Linux
- macOS
- SCO
- FreeBSD
- NetBSD
- OpenBSD
- Solaris
- SunOS
- Linux for IBM S/390, zSeries
- Posee un único archivo de configuración principal, con directivas y grupos de directivas que son intuitivos para cualquier usuario que haya usado Apache.
- Cuenta con un directorio ".ftpaccess" cuya configuración es similar a ".htaccess" de Apache
- Capacidad de configurar múltiples servidores FTP virtuales y servicios FTP anónimos
- Diseñado para ejecutarse como un servidor independiente o desde inetd / xinetd, dependiendo de la carga del sistema
- Los directorios raíz FTP anónimos no requieren ninguna estructura de directorio específica, binarios del sistema u otros archivos del sistema facilitando su administración
- Sin comando SITE EXEC. En los entornos modernos de Internet, estos comandos son una pesadilla de seguridad
- El código fuente está disponible para que los administradores y desarrolladores puedan auditar el sistema
- Posee directorios y archivos ocultos, basados en permisos de estilo Unix o propiedad de usuarios / grupos
- Se ejecuta como un usuario configurable sin privilegios en modo independiente para disminuir las posibilidades de ataques que podrían explotar las capacidades de "root". Nota: Esta función depende de las capacidades del sistema host Unix
- Soporte de registro y utmp / wtmp. El registro es compatible con el estándar wu-ftpd, con un registro extendido disponible
- Compatibilidad con el conjunto de contraseñas Shadow, incluida la compatibilidad con cuentas caducadas
- Está basado en un diseño modular, lo cual nos permite que el servidor se amplíe fácilmente con módulos. Los módulos se han escrito para bases de datos SQL, servidores LDAP, cifrado SSL / TLS, soporte RADIUS, etc
- Soporta IPv6.
1. Cómo instalar EPEL en CentOS 7
El primer paso a dar consiste en instalar el repositorio EPEL para posteriormente desde el obtener ProFTPD, para ello ejecutamos lo siguiente:
yum -y install epel-release
Una vez este proceso finalice veremos esto:
Ahora, vamos a importar la clave GPG de EPEL usando la siguiente línea:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7Procedemos a actualizar los paquetes del sistema:
yum -y update
2. Cómo instalar ProFTPD en Cómo instalar EPEL en CentOS 7
El siguiente paso a dar será instalar la utilidad ProFTPD y OpenSSL ejecutando lo siguiente:
yum install -y proftpd openssl proftpd-utils
Una vez este proceso concluya, vamos a ejecutar las siguientes líneas:
systemctl start proftpd.service (Inicia el servicio de ProFTPD) systemctl enable proftpd.service (Habilita el servicio de ProFTPD junto al arranque de CentOS)
3. Cómo configurar Firewall
Si Firewalld está instalado en CentOS 7, debemos configurarlo con firewall-cmd para abrir el puerto FTP de la siguiente forma:
firewall-cmd --add-service=ftp --permanent firewall-cmd –reload
Procedemos a verificar la versión instalada de ProFTPD:
proftpd -v
4. Cómo crear usuarios y grupo para ProFTPD en CentOS 7
Una vez instalado ProFTPD en CentOS 7, es crear el grupo y usuario para el acceso, en este caso vamos a crear un grupo ftpgroup y un usuario solvetic1 para ProFTPD, y vamos a definir /ftpshare como directorio de inicio para el usuario creado:
groupadd ftpgroup useradd -G ftpgroup solvetic1 -s /sbin/nologin -d /ftpshare passwd solvetic1
Alli debemos ingresar y confirmar la respectiva contraseña para el nuevo usuario. Una vez realizado esto, otorgaremos los permisos a ftpshare ejecutando:
chmod -R 1750 /ftpshare/
5. Cómo habilitar TLS en ProFTPD
Ahora será necesario que aseguremos las conexiones FTP usando TLS y para ello, debemos abrir el archivo /etc/proftpd/proftpd.conf pero es ideal antes de editar el archivo, crear una copia de seguridad del archivo original y luego editar el archivo con nano.
Para crear la copia ejecutamos:
cp -pf /etc/proftpd.conf /etc/proftpd.conf.bakPara acceder al archivo usaremos nano y ejecutamos:
nano /etc/proftpd.confEn el archivo desplegado ingresaremos lo siguiente bajo la línea DefaultRoot ~ !adm:
PassivePorts 6000 6100
Adicional a esto, comentaremos las siguientes líneas:
#<IfDefine TLS> TLSEngine on TLSRequired on TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem TLSCipherSuite ALL:!ADH:!DES TLSOptions NoCertRequest TLSVerifyClient off TLSRenegotiate ctrl 3600 data 512000 required off timeout 300 TLSLog /var/log/proftpd/tls.log # <IfModule mod_tls_shmcache.c> # TLSSessionCache shm:/file=/var/run/proftpd/sesscache # </IfModule> #</IfDefine>
Guardamos los cambios usando las teclas Ctrl + O y salimos del editor usando las teclas Ctrl + X. Como vemos, se han añadido los puertos 6000 y 6100 para permitir el modo pasivo de ftp, para permitir este acceso ejecutaremos lo siguiente:
firewall-cmd --add-port=6000-6100/tcp --permanent firewall-cmd --reload
Si deseamos ver el estado de los puertos podemos ejecutar lo siguiente:
firewall-cmd --list-ports
Ahora, será necesario configurar SELINUX con el fin de que permita la lectura y escritura de los archivos, ejecutamos lo siguiente:
setsebool -P allow_ftpd_full_access=1
Para usar TLS, será necesario crear un certificado SSL, este lo vamos a crear en la ruta /etc/ pki/tls/certs, de la siguiente manera:
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pemSerán desplegadas las siguientes preguntas donde ingresaremos respuestas como:
- Ciudad
- País
- Organización
- Correo y mas
Ahora, por razones de seguridad, configuraremos los certificados para que solo sean legibles así:
chmod 0440 /etc/pki/tls/certs/proftpd.pemFinalmente, reiniciamos el servicio de ProFTPD ejecutando lo siguiente:
systemctl restart proftpd.service
6. Cómo acceder a CentOS usando FTP
Para acceder a CentOS usando FTP podemos usar algún cliente FTP y para este caso usaremos Filezilla el cual puede ser descargado en el siguiente enlace:
Al acceder a Filezilla vamos al menú Archivo y allí seleccionamos la opción Gestor de sitios para crear la configuración de nuestro acceso, ingresaremos lo siguiente:
Una vez definido esto pulsamos en Conectar para acceder a nuestro servidor CentOS y desde acá iniciar la conexión, este proceso lo podremos realizar desde Windows, macOS o Linux, cuando pulsemos allí, será desplegado el siguiente mensaje:
- Algoritmos, fecha de validez y huellas del certificado
- Datos del certificado según lo configuramos en el momento de la creación
- Datos de la sesión con dirección IP, usuario, claves y tipo de cifrado
Podemos activar la casilla Siempre confiar en el certificado en futuras sesiones para evitar que este mensaje siga desplegándose en cada conexión con CentOS 7.
Si esto es correcto, pulsamos en el botón Aceptar y de esta forma estaremos conectados a CentOS 7 usando ProFTPD:
Allí podremos iniciar el proceso de navegación sin problema.
En caso de desear configurar el usuario anónimo para el acceso FTP, vamos a crear el siguiente archivo:
nano /etc/proftpd.confAlli pegaremos lo siguiente:
[...] ###Anonymous share##### <Anonymous ~ftp> User ftp Group ftp UserAlias anonymous ftp DirFakeUser on ftp DirFakeGroup on ftp MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>Guardamos los cambios usando las teclas Ctrl + O y salimos usando Ctrl + X.
Finalmente reiniciamos el servicio:
systemctl restart proftpd.serviceHemos visto como ProFTPD es una herramienta útil para establecer una conexión integra hacia nuestros servidores garantizando así una comunicación integra y completamente ágil de los archivos.
Recordemos que ProFTPD está disponible para diversos sistemas por lo que su uso es amplio.
Excelente; solo un detalle el usuario no conectará a la primera
Solución:
1 abres nano /etc/shells
2 agregas /bin/false
3 al crear el usuario useradd-G ftpgroup solvetic1 -s /sbin/nologin -d /ftpshare
cambiar por useradd-G ftpgroup solvetic1 -s /bin/false -d /ftpshare
4 si ya habías creado el usuario antes de leer esto:
sudo usermod -s /bin/false solvetic1
obvio que solvetic1 debes cambiarlo por el nombre de usuario que escogiste
un cafe pue 3AeYxNnZxFYnsZj7D1EsopCucqd1sdHEYq