miércoles, 6 de febrero de 2013

configurar ftp en debian

Se me presentó el problema de montar todo un server para mi nuevo proyecto de sitio web, he elegido un debian.

He instalado apache2, php, mysql y phpmyadmin, vamos que eso no da problemas es bastante sencillo. Ahora me encuentro con el problemilla de subir archivos por lo que vamos a detallar lo que haremos para montar un servidor ftp que nos de acceso a la carpeta www

Para conservar todo lo más seguro posible vamos a dar de alta un usuario que solo servirá para el acceso ftp.

Lo primero que debemos hacer es editar el archivo /etc/shells y agregar la siguiente linea:
/bin/false
Esto con el objetivo de evitar que el usuario que acceda al servidor no pueda usar la consola de comandos.

Luego creamos un usuario especifico para ftp

# useradd -m -s /bin/false tunombredeusuario
Ahora le asignamos una contraseña al usuario creado anteriormente:
# passwd tunombreusuario
La opción -m creará una carpeta en home con el nombre de usuario, es decir, /home/tunombredeusuario, y la opción -s nos asignará un shell a ese usuario en este caso es el /bin/false, este tipo de "shell" nos sirve en caso de querer algo mas de seguridad, puesto que con esto cerramos cualquier entrada por consola, hay que tener en cuenta que este usuario está creado específicamente para acceder al servidor ftp.

Ahora procederemos a la instalación del servicio. Hay muchos demonios que sirven para este propósito, en mi caso usaré el vsftpd porque es sencillo de configurar y porque es considerado uno de los mas seguros.
#aptitude install vsftpd
Para configurar nuestro servidor editaremos el archivo /etc/vsftpd.conf y comentaremos las lineas que no necesitemos.


Si no quieres que los usuarios anonimos se conecten a tu servidor entonces es recomendable comentar la linea “anonymous_enable=YES”, en mi caso lo haré porque necesito que solo se conecte el usuario que he creado.

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#anonymous_enable=YES


# Uncomment this to allow local users to log in.
#local_enable=YES
Como dije anteriormente, se creó un usuario especifico para conectarse al servidor, si queremos que dicho usuario se conecte a nuestro servidor hay que dejarlo en la lista de accesos, para eso hay que descomentar las siguientes lineas:
# You may specify an explicit list of local users to chroot() to their home
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
# directory. If chroot_local_user is YES, then this list becomes a list of


En este caso activé la lista por defecto pero se puede escoger cualquier archivo en otra ubicación.

Ahora, procederemos con el cambio de puerto, el puerto por defecto para el protocolo tcp es el 21, en mi caso fue cambiado por motivos de seguridad, si bien sabemos que tcp es inseguro, con esto hacemos las cosas un poquito mas complicadas, y de paso no nos complicamos con SSL (Que no es muy complicado, pero en mi caso no lo apliqué porque la aplicación que se iba a conectar con nosotros no soportaba SSL).


Para decirle a nuestro servidor que escuche por un puerto diferente al 21, simplemente agregamos la siguiente linea al archivo:
listen_port=201
En mi caso usé el 201, pero ustedes pueden usar el que quieran, siempre y cuando no utilicen alguno que esté ocupado.


Ahora guardamos los cambios y procedemos a editar el archivo/etc/vsftpd.chroot_list, en mi caso dicho archivo me tocó crearlo, de cualquier manera solo hay que añadir los usuarios autorizados a conectarse a nuestro servidor.

#Lista de acceso a usuarios que se conectaran al servidor.
tunombredeusuario

Luego editamos el /etc/apache2/sites-available/default para que en lugar de /var/www el apache tenga como raiz la carpeta del nuevo usuario.

Por ultimo reiniciamos el servicio y con esto deberíamos de tener nuestro servidor FTP funcionando sin ningún problema.

#/etc/init.d/vftpd restart

si da problemas con los permisos:

chown :usuario /var/www
chmod g+w /var/www.

No hay comentarios:

Publicar un comentario