Instalar vsftpd en Ubuntu
Para instalar vsftpd en Ubuntu 16.04 empleamos el comando:
sudo apt-get install vsftpd
Para iniciar, detener y reiniciar el demonio de vsftpd los comandos para iniciar, detener y reiniciar vsftpd son:
sudo systemctl restart vsftpd
sudo systemctl start vsftpd
sudo systemctl stop vsftpd
Configurar vsftpd en Ubuntu
Para añadir un usuario ejecutamos el comando:
sudo adduser miusuario
Nos solicitará que introduzcamos una contraseña. Usaremos este usuario para acceder al servidor FTP. En nuestro caso el chroot sería /home/miusuario. Además, se deben cumplir dos condiciones:
El dueño de la carpeta chroot y el usuario que se conecta por FTP no pueden ser el mismo.
La carpeta chroot no puede tener permisos de escritura.
Así que debemos cambiar el dueño de esta carpeta con el siguiente comando:
sudo chown root:root /home/miusuario
Si queremos que el usuario pueda subir archivos al servidor FTP, necesitamos crear una carpeta:
sudo mkdir /home/miusuario/ftp_subidas
sudo chown miusuario:miusuario /home/miusuario/ftp_subidas
Es importante quitar el acceso al intérprete de comandos (shell) del usuario miusuario que agregamos, puede suponer un grave riesgo de seguridad. El problema está en que al quitar acceso a la shell, vsftpd no dejará acceder al servidor FTP porque el usuario no tiene una shell válida asignada. Para solucionar esto creamos una shell personalizada, que añadimos a la lista de shells válidas y finalmente asignamos esta shell a nuestro usuario.
sudo nano /bin/ftponly
Añadimos las siguientes líneas y guardamos el archivo:
#!/bin/sh
echo "Esta cuenta solo dispone de acceso por FTP."
Damos permisos de ejecución a la shell ftponly con el comando:
sudo chmod a+x /bin/ftponly
Editamos la lista de shells válidas con el comando:
sudo nano /etc/shells
Añadimos /bin/ftponly al final de la lista:
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/ftponly
Asignamos la shell ftponly a nuestro usuario:
sudo usermod miusuario -s /bin/ftponly
No debemos usar shell nologin o estaremos creando un problema de seguridad grave.
Ya tenemos nuestro usuario listo. Ahora editamos el archivo de configuración de vsftpd con el comando:
sudo nano /etc/vsftpd.conf
Hay que modificar el archivo eliminando el carácter # en las partes correspondientes y haciendo las modificaciones tal y como se muestra a continuación:
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
...
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
#
Reiniciamos vsftpd con:
sudo systemctl restart vsftpd
Y probamos que todo funcione correctamente.
Cómo enviar un archivo por FTP
Hacemos un ifconfig para obtener la IP del servidor Ubuntu.
Nota VirtualBox (si estamos en una máquina virtual)
Y la IP es la 10.0.2.15 es porque nuestra máquina virtual está con adaptador NAT, hay que cambiarlo a adaptador puente, en máquina-> configuración-> red y en conectado a. Elegimos adaptador puente.
Para probar el FTP desde un equipo cliente de Windows abrimos la consola tecleando cmd en buscar programas y archivos de la barra de inicio de Windows. Hacemos ping al servidor para ver si tiene conexión.
Usaremos el comando ftp, desde un equipo cliente de Windows. El comando ftp permite a los usuarios interactuar con servidores FTP y gestionar los archivos del servidor remoto. A continuación abrimos el servicio ftp con open y la IP.
Introducimos el usuario que hemos creado en el servidor (usuarioftp) e introducimos su contraseña. Después ponemos dir para ver los directorios del servidor.
Con el comando FTP put enviamos un archivo desde el equipo cliente al servidor.
Ponemos en la consola ftp:
put (ruta Windows archivo origen\nombre_archivo) (ruta Linux destino/nombre archivo)
En este ejemplo hemos indicado que se guarde dentro de la carpeta ftp_subidas, esta carpeta tiene que existir y tener permisos de escritura para nuestro usuario. Si no especificamos un nombre de archivo remoto, se empleará el nombre del archivo local.
Para finalizar, nos desconectamos del servidor FTP con el comando:
quit
Subir archivos por FTP desde FireFTP
Para acceder al servidor ftp desde el equipo cliente, también podemos abrir la consola gráfica de FireFTP y desplegamos el combo superior izquierdo y elegimos crear una cuenta.
Nos abre una pantalla donde en servidor ponemos la IP del servidor y en usuario el usuario creado anteriormente en el servidor y su correspondiente contraseña y aceptamos.
Ahora basta con pulsar en conectar y nos abre una interfaz gráfica donde podremos transferir fácilmente los archivos.
Conviene transferir los archivos a directorios específicos para la transferencia, con los permisos adecuados.
Acceder como usuario anónimo
Un usuario anónimo permite acceder al servidor FTP sin contraseña, es útil para distribuciones públicas de archivos de sólo lectura. El usuario se deberá identificar con el nombre Anonymous.
En el servidor FTP de linux debemos editar el archivo /etc/vsftpd.conf para poner:
anonymous_enable=YES
También es necesario habilitar un directorio raíz para los usuarios que se conecten con esta cuenta. En este caso crearemos la carpeta ftp_anon en el directorio /home con el siguiente comando:
sudo mkdir /home/ftp_anon
Después al fichero de configuración /etc/shells le añadimos la nueva carpeta creada indicándole que se trata de una carpeta anónima, añadimos la línea:
anon_root=/home/ftp_anon
Por defecto el acceso anónimo se realiza en modo lectura, en caso de que queramos darle permisos de escritura, tendremos que añadir en /etc/vsftpd.conf las propiedades:
write_enable = YES
anon_upload_enable = YES
anon_mkdir_write_enable= YES
Finalmente para permitir la escritura, creamos una carpeta colgando del directorio raíz con todos los permisos y como propietario del usuario ftp.
sudo mkdir /home/ftp_anon/testeo
sudo chown ftp:ftp /home/ftp_anon/testeo
sudo chmod 777 /home/ftp_anon/testeo
Ahora cuando un usuario anónimo suba un fichero, marcará como único propietario al usuario ftp. Esto dificulta a otros usuarios locales el acceso, para evitarlo en vsftpd.conf ponemos
anon_umask=022
Hecho esto, desde un equipo cliente creamos una cuenta FireFTP como anónimo.
Al conectarnos le indicamos de nuevo que es anónimo.
Usuarios locales
Los usuarios locales registrados en el sistema operativo tendrán acceso al servicio FTP si en el archivo de configuración /etc/vsftpd.conf tenemos la siguiente línea:
local_enable=YES
Reiniciamos el servicio con sudo systemctl restart vsftpd cualquier usuario de la máquina tendrá acceso al servicio.
El usuario accederá a su carpeta personal /home/usuario Pero si queremos que la carpeta personal de cada usuario se convierta en su raíz, entonces habilitamos esta línea en el archivo de configuración.
chroot_local_user=YES
Si queremos que los usuarios anónimos tengan permisos de escritura tendremos que poner también
write_enable = YES
Implementar y administrar cuotas de disco en Linux
apt-get install quota quotatool
sudo nano /etc/fstab
touch aquota.user aquota.group quota.user quota.group
quotacheck –fvagum
quotatool –u usuarioftp
quotatool –u usuarioftp –bq 5M –l 8Mb /
No hay comentarios:
Publicar un comentario