Documentos de Académico
Documentos de Profesional
Documentos de Cultura
VSFTPD Pam Mysql Es
VSFTPD Pam Mysql Es
Hoy instalaremos un servidor FTP convencional pero bastante rpido y seguro en un sistema operativo Ubuntu, basado en Debian GNU/Linu ! "l servidor re#uerir nombre y contrase$a para cada usuario #ue #uiera acceder, y cada usuario podr ir dirigido a un directorio distinto y modi%icarle el contenido &muy conveniente para un servidor'(eb compartido)! "sta gu*a evita la creaci+n de m,ltiples usuarios reales en el sistema operativo, y todos los usuarios virtuales act,an con una misma cuenta del sistema! "l servicio FTP tradicional consiste en #ue los usuarios del sistema operativo tienen acceso al sistema de %ic-eros con sus mismas credenciales y atribuciones, y adicionalmente -ay una cuenta de usuario an+nimo para #ue p,blicamente se puedan descargar determinados contenidos! La caracter*stica especial, entonces, de esta instalaci+n es #ue el censo de usuarios FTP se almacena en una base de datos, y pasan a ser .usuarios virtuales. en lugar de .usuarios reales. del sistema operativo/ adicionalmente se in-abilita el acceso an+nimo! "sta gu*a se basa en el software servidor de FTP vsftpd &vs%tpd!beasts!org), pero e isten alternativas tan competentes como ProFTPD &(((!pro%tpd!org)! "mpe0amos/ 1on el sistema operativo ya instalado, actuali0ado y en %uncionamiento, nos tenemos #ue asegurar de #ue tenemos el servidor FTP &vs%tpd), los m+dulos de autenticaci+n &pam) y el sistema de base de datos &2y34L)! 3i no es as*, lo podemos -acer con las instrucciones de terminal/consola5
sudo apt-get install mysql-server sudo apt-get install libpam-runtime libpam-modules sudo apt-get install libpam-mysql sudo apt-get install vsftpd
"l 2y34L 3erver al instalarse pedir #ue le estable0camos una contrase$a para el usuario administrador &root), #ue necesitamos cuando #ueremos -acer determinadas operaciones! Tambi6n podemos usar las instrucciones de instalaci+n para saber #ue los pa#uetes estn instalados! 7-ora se tratar de con%igurarlo todo para #ue los distintos programas traba8en 8untos! 3i tu distribuci+n de GNU/Linu no tiene el pa#uete .libpam'mys#l. al alcance, lo puedes descargar de la pgina del proyecto pam-mysql.sourceforge.net &.9eleased Files.) e instalarlo manualmente con la instrucci+n5
sudo dpkg --install nombredelfichero.deb
Para poder restablecer la con%iguraci+n de los %ic-eros de te to #ue se modi%ican &en caso de #ue alguna cosa %alle y #ueramos volver atrs), es recomendable -acer una copia de cada original5 antes de editar .vs%tpd!con%. copiarlo a .vs%tpd!con%!original.! 3i no sabes como editar los %ic-eros de te to desde una consola o terminal, te propongo el programa .nano., #ue para utili0arlo como superusuario ir*a as* &e8emplo)5
sudo nano /etc/vsftpd.conf
(castellano)
Pgina 1 de 8
>! 1reamos una base de datos para las cuentas de usuarios virtuales5
CREATE DATA A!E vsftpd"
?! 1reamos una tabla para registrar las cuentas de acceso &%i8aros en los nombres de los campos)5
CREATE TA #E vsftpd.usuarios $ nrregistro int A%T&'()CRE*E)T )&T )%##+ nombre varc,ar$-./ binary )&T )%##+ contrasena varc,ar$0./ binary )&T )%##+ estado varc,ar$-./ binary )&T )%##+ primary key$nrregistro/ /"
@! 1reamos una tabla para registrar los intentos de acceso &%i8aros en los nombres de los campos)5
CREATE TA #E vsftpd.bitacora $mensa1e varc,ar$200/+ usuario varc,ar$2./+ proceso int+ servidor c,ar$-2/+ cliente c,ar$-2/+ momento timestamp /"
A! Damos permisos a un nuevo usuario de 2y34L para #ue el servidor FTP acceda a trav6s de P72 s+lo a lo imprescindible5
3RA)T !E#ECT 7contrasea17" 3RA)T ()!ERT 7contrasea17" &) &) vsftpd.usuarios vsftpd.bitacora T& T& vsftpd4local,ost vsftpd4local,ost (DE)T(5(ED (DE)T(5(ED 6 6
5#%!8 9R(:(#E3E!"
&personali0ad la contrase$a=) B! Damos permisos a un nuevo usuario de 2y34L distinto para la administraci+n de usuarios5
3RA)T ()!ERT+!E#ECT+DE#ETE (DE)T(5(ED 6 7contrasea27" &) vsftpd.usuarios T& ftpadmin4local,ost 6
3RA)T !E#ECT+DE#ETE &) vsftpd.bitacora T& ftpadmin4local,ost (DE)T(5(ED 7contrasea27" 5#%!8 9R(:(#E3E!"
&personali0ad la contrase$a>, #ue sea distinta) C! Nos desconectamos de la consola del servidor 2y34L5
quit
(castellano)
Pgina 2 de 8
3i no est, la a$adimos al %inal! "sto permite crear las cuentas de usuario de los programas impidiendo #ue sean usadas para acceder a la computadora v*a terminal! >! 1reamos un directorio para los per%iles de usuario FTP5
sudo mkdir /etc/vsftpd
?! 1reamos dentro otro directorio para los usuarios FTP sin per%il todav*a -ec-o5
sudo mkdir /etc/vsftpd/vacio
(castellano)
Pgina 3 de 8
>! Para especi%icar las credenciales de acceso, tablas y campos a consultar en la base de datos 2y34L, a$adimos estas dos laargas l*neas al %inal del %ic-ero5
aut, required pam'mysql.so verbose;. user;vsftpd pass<d;contrasea1 ,ost;local,ost db;vsftpd table;usuarios usercolumn;nombre pass<dcolumn;contrasena statcolumn;estado crypt;2 sqllog;true logtable;bitacora logmsgcolumn;mensa1e logusercolumn;usuario logpidcolumn;proceso log,ostcolumn;cliente logtimecolumn;momento account required pam'mysql.so verbose;. user;vsftpd pass<d;contrasea1 ,ost;local,ost db;vsftpd table;usuarios usercolumn;nombre pass<dcolumn;contrasena statcolumn;estado crypt;2 sqllog;true logtable;bitacora logmsgcolumn;mensa1e logusercolumn;usuario logpidcolumn;proceso log,ostcolumn;cliente logtimecolumn;momento
&La contrase$a= de las l*neas debe ser la misma #ue -emos %i8ado para el usuario .vs%tpd. de 2y34L)
(castellano)
Pgina ! de 8
7lgunos de los parmetros no son imprescindibles as*, pero de esta manera tambi6n %unciona! "l parmetro .localEumasG. es para los permisos #ue se %i8aran a los %ic-eros #ue suban los usuarios v*a FTP/ por de%ecto ser*an HCC, pero con CAA permite #ue el usuario propietario de los %ic-eros y carpetas pueda manipular plenamente y en cambio el p,blico de una (eb s+lo pueda leer!
(castellano)
Pgina " de 8
Puesta en marcha
1on esta instrucci+n reiniciamos el servicio de D3FTPD para #ue apli#ue la nueva con%iguraci+n, o tambi6n lo iniciamos si estaba parado5
sudo /etc/init.d/vsftpd restart
>! 1on esta instrucci+n tendremos una nueva cuenta de usuario en la base de datos5
mysql -u ftpadmin --pass<ord;contrasea2 -e @()!ERT ()T& vsftpd.usuarios $nombre+ contrasena/ :A#%E! $7elnombredeusuario7+ 9A!!A&RD$7lacontrasea7//"@
"stos .elnombredeusuario. y .elnombredeusuario. &as* como la locali0aci+n p,blica del servidor) son los datos #ue podremos dar a las personas #ue #ueremos #ue se conecten por FTP! ?! 1reamos un %ic-ero de te to para el per%il de usuario como /etc/vsftpd/elnom!redeusuario en donde escribiremos la ruta del directorio al #ue acceder el usuario v*a FTP5
local'root;/ruta/a/su/directorio
"n este %ic-ero podemos a$adir cual#uiera de los parmetros #ue son vlidos en /etc/vsftpd conf para personali0arlos para este usuario en concreto! Tambi6n los podemos blindar un poco estableciendo permisos5
sudo c,mod -R BB. /etc/vsftpd/elnombredeusuario
(castellano)
Pgina # de 8
Mensa"e #$%% &&PS' cannot chan(e directory'/etc/vsftpd/vacio# del servidor al intentar entrar como usuario desde un pro(rama FTP)cliente' 7l crear la cuenta no -as creado su per%il & /etc/vs%tpd/elnombredeusuario ), o bien no le -as especi%icado correctamente la ruta del parmetro .localEroot.! 9evisa tambi6n los permisos del directorio del #ue da error! Al entrar como usuario desde un pro(rama FTP)cliente se ve un directorio vac*o y no se puede hacer nada en +l ,/etc/vsftpd/vacio-' 7l crear la cuenta no -as creado su per%il & /etc/vs%tpd/elnombredeusuario ), o bien no -as especi%icado correctamente la ruta del parmetro .localEroot., o bien el %ic-ero de per%il tiene permisos demasiado restrictivos! .o consi(o acceder con un mismo usuario a distintos sitios /e!' 3i pretendes utili0ar el servidor FTP para mantener sitios virtuales de un servidor (eb, y te gustar*a entrar con un mismo nombre de usuario para acceder di%erenciando el nombre de dominio o la direcci+n JP, te conviene -acer uso del software'inter%a0 de red xinet para -acer llamadas al D3FTPD especi%icando distinto %ic-ero de con%iguraci+n en la l*nea del comando! 2s in%ormaci+n en5 es!(iGipedia!org/(iGi/Kinetd (((! inetd!org
Ten(o pro!lemas y necesito encontrar de d0nde vienen' Puedes consultar diversas bitcoras para ver #u6 pasa con las entradas de clientes FTP5
Litcora del servidor FTP D3FTPD5 %ic-ero de te to /var/lo(/vsftpd lo( Litcora del autenticador P72 ¶ todos los accesos al sistema)5 %ic-ero de te to /var/lo(/auth lo( Litcoras del servidor de base de datos 2y34L5 %ic-eros de te to /var/lo(/mys1l lo( y /var/lo(/mys1l err Litcora entre D3FTPD y P72 &6 itos y %racasos en los intentos de entrada normal de los usuarios FTP)! Podemos ver las anotaciones en la base de datos con la instrucci+n5
mysql -u ftpadmin vsftpd.bitacora"@ mysql -u ftpadmin vsftpd.bitacora"@ --pass<ord;contrasea2 -e @!E#ECT C 5R&*
1enso de usuarios registrados! Podemos ver todos los usuarios virtuales con la instrucci+n5
mysql -u ftpadmin vsftpd.usuarios"@ --pass<ord;contrasea2 -e @!E#ECT C 5R&*
5R&*
.ecesito controlar la cantidad de datos 1ue su!e un usuario ,cuota de espacio-' 1omo pod*as imaginar, en esta gu*a no encontrars respuestas ni pistas para todo, pues a d*a de -oy yo tampoco s6 cual es el camino para aplicar esta %uncionalidad desde D3FTPD con usuarios virtuales!
(castellano)
Pgina $ de 8
&tiene e%ecto si seguidamente cerramos la sesi+n de consola/terminal) 3i no #uieres de8ar escritas las contrase$as con las l*neas de instrucciones al llamar a 2y34L, puedes cambiar su parmetro --pass<ord;contraseEa por -p , y pedir teclear la contrase$a de %orma no visible! Un e8emplo5
mysql -u ftpadmin -p -e @!E#ECT C 5R&* vsftpd.usuarios"@
Un salto en seguridad es la autenticaci+n del servidor, es decir, #ue un cliente FTP tenga la certe0a de conectarse al aut6ntico servidor y no a un pescador de contrase$as! "sto, y la comunicaci+n encriptada, se consigue con la capacidad 33L del servidor! Pero el ob8etivo de esta gu*a es ayudar a poner en marc-a un servidor FTP de %orma sencilla, pues cons,ltense manuales ms avan0ados para aprender sobre comunicaciones 33L, o barreras adaptativas como ban2fail! "l D3FTPD permite algo de control de anc-o de banda dedicado a las cone iones FTP! 3e puede establecer en bytes por segundo en /etc/vsftpd conf con los parmetros .localEma Erate. y .anonEma Erate.! 1ons,ltese la documentaci+n de D3FTPD para ms detalles o novedades! "sta gu*a publicada en cataln y castellano el =@ de %ebrero del >HHM por per Narc*s Garcia Langa est comprobada con la Ubuntu GNU/Linu C!=H server, contando con la versi+n de serie H!B!> de P72'2y34L &pero puede %uncionar con la mayor*a de variantes de Debian)! 9e%erencias ,tiles5
7le8andro 7yuso5 monoca%%e!blogspot!com/>HHC/HN/servidor'virtual'de'%tp'seguro'con!-tml La documentaci+n o%icial de vs%tpd de 1-ris "vans5 vs%tpd!beasts!org La documentaci+n de 2iles Lrennan5 (((!brennan!id!au/=@'FTPE3erver!-tml La documentaci+n o%icial de P72'2y34L de 2oriyos-i Ooi0umi5 pam'mys#l!source%orge!net/Documentation/ "l manual de re%erencia de 2y34L5 dev!mys#l!com/doc/re%man/A!H/es/ "l c+digo %uente publicado por Gunay 7rslan o la gran cantidad de preguntas y respuestas publicadas en Jnternet por la in#uieta comunidad in%ormtica, libre! "special menci+n merece el GiLUG &(((!gilug!org)
3i tienes alg,n problema, no es mi responsabilidad! 1u*date de tener siempre copia de seguridad de los datos #ue necesites recuperar! Puedes copiar y reutili0ar libremente esta gu*a, sin olvidarte de sus autores &GNU FDL)5 -ttp5//curso'sobre!berlios!de/g%dles/g%dles!-tml
(castellano)
Pgina 8 de 8