Académique Documents
Professionnel Documents
Culture Documents
base de datos mysql para los usuarios y ademas permitiendo el uso de llaves
ssh para la autentificacion,
esta basado en varios tutoriales que encontre por la web. Todo esto esta
pensado en ubuntu server 14.04 debido a que fue lo que me toco implementar
en el trabajo.
Referencias originales:
http://www.linuxlasse.net/linux/howtos/ProFTPD_with_virtual_users_in_MySQL
http://blog.endpoint.com/2012/12/sftp-virtual-users-with-proftpd-and.html
https://www.digitalocean.com/community/tutorials/how-to-configure-proftpd-touse-sftp-instead-of-ftp
http://www.proftpd.org/docs/howto/SQL.html
http://www.proftpd.org/docs/howto/Debugging.html
Primera parte: ftp con usuarios virtuales en Mysql
sudo apt-get install mysql-server mysql-client
luego el proftpd y sus dependencias
sudo apt-get install proftpd-basic proftpd-mod-mysql
Creamos un grupo y un usuario local, los cuales necesitamos debido a que
usaremos el UID y el GID en la base de datos mysql
Creamos el grupo
sudo groupadd ftpusers
Creamos el usuario sin carpeta home, ni shell, y lo agregamos al grupo anterior
sudo useradd -s /bin/false -d /dev/null -g ftpusers ftpuser
Ahora obtenemos el UID para el ftpuser y el GID ftpusers
grep ftp /etc/passwd /etc/group
Lo cual nos devuelve algo como esto
/etc/passwd:ftp:x:109:65534::/home/ftp:/bin/false
/etc/passwd:proftpd:x:108:65534::/var/run/proftpd:/bin/false
/etc/passwd:ftpuser:x:1001:1001::/dev/null:/bin/false
/etc/group:ftpusers:x:1001:
podemos ver que el usuario ftpuser tiene un UID de 1001, y el grupo ftpusers
un GID of 1001. Anotar ambos id
Ahora crearemos una base MySQL llamda proftpd, donde el usuario es proftpd
y su contrasea es is proftpd.2015.
Se debe cambiar estos parametora a gustos del consumidor, ademas el UID y
GID deben ser los valores correspondientes a su sistema.
Copiar los compando sql a continuacion y grabarlos como ftp.sql en el servidor.
O pueden usar una administrador mysql como workbench
o phpmyadmin
DROP DATABASE IF EXISTS proftpd;
CREATE DATABASE proftpd;
USE proftpd;
CREATE TABLE users (
userid VARCHAR(30) NOT NULL UNIQUE,
passwd VARCHAR(80) NOT NULL,
uid INTEGER default 1001,
gid INTEGER default 1001,
homedir VARCHAR(255),
shell VARCHAR(255) default NULL,
LoginAllowed BOOLEAN default 1
);
CREATE TABLE groups (
groupname VARCHAR(30) NOT NULL,
gid INTEGER NOT NULL,
members VARCHAR(255)
);
GRANT ALL ON proftpd.* TO proftpd@'localhost' IDENTIFIED BY 'proftpd.2015';
Importamos el archivo al servidor MySQL.
mysql -u root -p < ftp.sql
Creamos el grupo ftpusers en MySQL y agregamos el usario ftpuser al grupo, al
igual que hicimos en el sistema.
mysql -u proftpd -p
USE proftpd;
INSERT INTO groups (groupname, gid, members) VALUES ("ftpusers", 1001,
"ftpuser");
Ahora creamos los usuarios en la base MySQL.
);
CREATE TABLE sftp_groups (
sftp_groupname VARCHAR(30) NOT NULL,
sftp_gid INTEGER NOT NULL,
sftp_members VARCHAR(255)
);
Creamos el grupo sftp_users en MySQL y agregamos el usario sftp_user al
grupo, al igual que hicimos en el sistema.
mysql -u proftpd -p
USE proftpd;
INSERT INTO sftp_groups (sftp_groupname, sftp_gid, sftp_members) VALUES
("sftp_users", 1002, "sftp_user");
Ahora creamos los usuarios en la base MySQL.
INSERT INTO sftp_users (sftp_username, sftp_passwd, sftp_homedir) VALUES
("oveja", PASSWORD("oveja.2015"), "/sftp/oveja");
INSERT INTO sftp_users (sftp_username, sftp_passwd, sftp_homedir) VALUES
("pato", PASSWORD("pato.2015"), "/sftp/pato");
Ahora modificamos la configuracion principal
sudo vim /etc/proftpd/proftpd.conf
Agregamos lo siguiente al final del archivo
<IfModule mod_sftp.c>
#creamos un nuevo host virtual
<VirtualHost 0.0.0.0>
#Activamos SFTP
SFTPEngine on
#el puerto de nuestro servidor sftp
Port 2222
#configuraciones de log
SFTPLog /var/log/proftpd/sftp.log
#desactivamos la necesidad de shell
RequireValidShell of
#enjaulamos al usuario
DefaultRoot ~
#permisos totales para el dueo y el grupo