Usuarios virtuales con ProFTPD

Este post muestra una configuración típica del ProFTPD en Debian para usar usuarios virtuales que estén en una base de datos MySQL.

Esta solución está orientada a servidores Web principalmente, donde cada usuario es un sitio Web.

Configuración de la base de datos

Suponiendo que tenemos una base de datos MySQL ya creada.

CREATE TABLE IF NOT EXISTS `mod_proftpd_users` (
  `username` varchar(30) NOT NULL DEFAULT '',
  `passwd` varchar(80) NOT NULL DEFAULT '',
  `uid` int(11) NOT NULL DEFAULT '33',
  `gid` int(11) NOT NULL DEFAULT '33',
  `homedir` varchar(255) DEFAULT NULL,
  UNIQUE KEY `userid` (`username`)
);

El UID/GID de las líneas resaltadas corresponde al usuario www-data grupo www-data de mi sistema.

Aunque esa es la configuración predeterminada, para mejor seguridad de los sitios Web suelo usar en los usuarios FTP virtuales el usuario ftp gupo www-data. Con esto los PHP descontrolados (como son los WordPress) tienen difícil autodestruirse si los permisos están adecuadamente establecidos.

Configuración de ProFTPD

Hay que asegurarse tener instalado el paquete proftpd-mod-mysql y tras se puede crear un nuevo fichero de configuración, por ejemplo /etc/proftpd/conf.d/mypanel.conf. Este fichero es incluido automáticamente, el contenido sería el siguiente:

# Desactivando PAM y activando MySQL
LoadModule        mod_sql.c
LoadModule        mod_sql_mysql.c
AuthPAM           off  
DefaultRoot       ~  
RequireValidShell off    

# Configuracion MySQL
SQLBackend      mysql  
SQLAuthTypes    Crypt  
SQLAuthenticate users  
SQLConnectInfo  $USER@localhost $DATABASE $PASSWORD
SQLUserInfo     mod_proftpd_users username passwd uid gid homedir '/bin/false'    
SQLMinID        10

# Si algo va mal activo este log para depurar
#SQLLogFile     /var/log/proftpd/proftpd-mysql.log

En la línea resaltada se debe indicar correctamente los datos de conexión a la base de datos.

Activando y forzando TLS

Ahora toca evitar el robo de contraseñas forzando a los usuarios a utilizar TLS. Cuidado con esta configuración, TLS no funciona bien cuando los clientes están tras un cortafuegos. Considera que desde operadores móviles TLS no suele funcionar ya que se comparte IP entre varios dispositivos móviles.

Aunque hay un fichero de configuración de ejemplo que basta con ioncluirlo desde proftpd.conf, prefiero añadir la configuración manualmente en el mismo fichero anterior /etc/proftpd/conf.d/mypanel.conf.

### Configuracion TLS
<IfModule mod_tls.c>
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol                SSLv23

TLSRSACertificateFile      /etc/proftpd/cert.crt
TLSRSACertificateKeyFile   /etc/proftpd/key.pem
#TLSCACertificateFile       /etc/proftpd/ca.pem

TLSOptions              AllowClientRenegotiations
TLSVerifyClient         off
TLSRequired             on
TLSRenegotiate          required off

# Problemas TLS con muchos clientes
TLSOptions     NoSessionReuseRequired
TLSOptions     NoCertRequest

</IfModule>

Si no quieres forzar a los usuarios a usar TLS cambia la directiva resaltada

 

 

paulino

paulino escribió 18 entradas

Etiquetas

Navegación de la entrada


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>