Buenas noches!! (es de noche mientras escribo esto); Hoy tendremos la oportunidad de configurar un server FTP para nuestro sistema.
He elegido VSFTPD (Very Secure FTP Daemon) por varias razones muy personales (es decir, no tienen que tomarlas como punto de referencia para elegir un server FTP para su sistema):
a) Es MUY rapido. Como trabajo administrando servers de hosting he tenido la oportunidad de probar otros, y definitivamente, este es rapido!.
b) Seguro, muy seguro. Es tanto asi que es el server FTP que trae OpenBSD; que, definitivamente, es el Sistema operativo mas seguro.
c) Facil de configurar!! (muy facil, en serio)
El archivo de configuracion trae por default (en Slackware, no en la instalacion desde el source) las siguientes opciones con las cuales se puede correr el server FTP luego de ser modificadas a tu gusto:
# # Los settings compilados por default son casi paranoicos. Este # ejemplo floja un poco las cosas para hacer el server de FTP un # poco mas util. # # LEE ESTO!!!!!!!!: Este ejemplo no es exhaustivo en los detalles # de configuracion. Favor de dirigirse a la documentacion en la # pagina oficial y al man page. # # Permitir FTP anonimo? (Ten cuidado, porque estara habilitado por # default si comentas esta opcion ). anonymous_enable=NO # Permitir a los usuarios locales loggearse? local_enable=YES # Permitir cualquier tipo de escritura via FTP write_enable=YES # El umask por default para los usuarios locales es 007. # Tal vez desees cambiar esto a 002, si eso es lo que esperan # tus usuarios. (002 es el default en la mayoria de ftpd's) local_umask=022 # Activar mensajes de directorios - mesajes dados a los usuarios # cuando se dirijan a cierto directorio. dirmessage_enable=YES # Activar el registro de transferencias xferlog_enable=YES # Asegurarnos de que el puerto de transferencia se origine # desde el puerto 20 (ftp-data) connect_from_port_20=YES # Si quieres, puedes cambiar los permisos a un usuario diferente # del usuario utilizado para subir los archivos. Por favor no # uses 'root', te puedes arrepentir luego. chown_uploads=YES chown_username=ftp # Puedes sobreescribir donde se tendra el archivo de logs. # El default es el siguiente: xferlog_file=/var/log/vsftpd.log # Si quieres, puedes tener tu logfile en un formato standard de # ftpd-xferlog xferlog_std_format=YES # Puedes cambiar el valor por default para desconectar una conexion # resagada idle_session_timeout=1300 # Puedes cambiar el valor por default para desconectar una conexion # de data data_connection_timeout=300 # Es recomendable que definas un usuario en tu sistema, unico, el # cual pueda ser utilizado totalmente aislado y sin privilegios. nopriv_user=ftp #slackware trae este creado ya# Habilita esto y tu server reconocera peticiones ABOR asincronicos. # Se considera no recomendable por cuestiones de seguridad. # Sin embargo no usarlo podria confundir viejos clientes FTP async_abor_enable=YES # Por default el server pretendera permitir ASCII mode pero en # realidad ignorara esas peticiones. Enciende la opcion mas abajo # para que el server en realidad maneje peticiones ASCII. # Ten MUY en cuenta que en algunos FTP servers, soportar ASCII # puede permitir un ataque de denegacion de servicio (DoS) a travez # del comando "SIZE /big/file/" en ASCII mode. vsftpd predijo este # ataque y siempre ha sido seguro reportando el tama~no del archivo # en crudo. # ascii_upload_enable=YES ascii_download_enable=YES # Puedes customizar completamente la cadena de anuncio al # iniciar sesion ftpd_banner=Bienvenido a Slackware-ES FTP Server # Si se activa esta opcion, puedes proporcionar una lista de # usuarios que seran colocados en su directorio home mediante # chroot() cuando inicien sesion. # Ahora bien, el significado es un poco diferente si se usa la # opcion chroot_local_user en YES. # En este caso, la lista se vuelve un listado de usuarios a los que # NO se le hara chroot() a su home. chroot_list_enable=YES chroot_local_user=YES chroot_list_file=/etc/vsftpd.chroot_list # Nota: Esto se vuelve medio confuso, si activas chroot_list_enable # se supone que le daras al sistema una lista de usuarios para # hacerles chroot() a su home. Si activas chroot_local_user, # entonces la lista indicara cuales usuarios NO quieres que se le # haga chroot() a su home. # Yo personalmente activo chroot_list_enable y tambien activo # chroot_local_user, sin embargo, dejo la lista vacia, asi le hago # chroot() a TODOS
# # Puedes activar la opcion "-R" para el comando interno ls. # Esto esta deshabilitado por predeterminado para evitar que los # usuarios remotos sean capaces de causar un excesivo I/O en sitios # bastante grandes. # De todas formas, algunos clientes FTP defectuosos asumen la # precedencia de "-R", asi que hay una razon de peso para # habilitarla. ls_recurse_enable=YES # Para correr vsftpd en modo standalone (o sea, individual, no # por medio de inetd), descomenta la linea siguiente #listen=YES
Ahora bien, puedes copiar esa configuracion como ejemplo y guardarla como
/etc/vsftpd.conf y hacer lo siguiente:
Para iniciar tu servidor FTP en modo standalone (individual, no iniciado por inetd) ejecuta el comando ‘/usr/sbin/vsftpd &‘ (recuerda quitar el comentario a la linea liste=YES de vsftpd.conf para que no te de error)
Si quieres que cada vez que tu ordenador suba, el servicio FTP inicie automaticamente, simplemente edita el archivo ‘/etc/inetd.conf‘ y descomenta la linea que dicen lo siguiente:
ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
Y listo, subira automaticamente siempre
,
No olvides crear el archivo /etc/vsftpd.chroot_list si utilizaste esta opcion
Puedes crear uno vacio de la siguiente forma (como root, claro esta):
# touch /etc/vsftpd.chroot_list
Ya si, todo esta listo!.
Puedes probar conectandote por FTP (una vez que el server este ejecutandose), utilizando un usuario de tu sistema
(el mismo que usas para loggearte tu, por ej.)
NOTAS:
a) La configuracionde vsftpd es (MUY!) amplia, si quieres ver mas opciones para ir configurando mas a fondo tu sistema, puedes ver la pagina del manual de vsftpd.conf
man vsftpd.conf
b) cuando hablo de hacer chroot() a un usuario a su /home , me refiero a que TODOS los comandos que ejecute cierto usuario por FTP estaran encapsulados (o enjaulados, como quieras) a su directorio /home a travez del comando chroot. Asumo que no te gustaria que ningun usuario de FTP este rondando por /var/lib o /etc/X11 , verdad?, lo mas prudente es que nadie salga de su /home asignado, cierto? Pues para eso es que se usa chroot()
Espero que esta info haya sido util!, cualquier cosa no dudes escribirme o enviarme un mensaje.
Cuidense!
-- Jose P. Espinal http://www.slackware-es.com
2 Responses to Slackware Linux : VSFTPD