Para subir y bajar archivos remotamente vamos a usar el software Proftpd y configuraremos algo de él. Empezaremos la instalación de Proftpd arrancando nuestro servidor. Nos logeamos como root y pasamos a instalar:
#apt-get install proftpd
Durante la instalación nos preguntará algunas cosas:
los archivos del servidor son:
/usr/bin/proftpd
El propio servidor de FTP.
/usr/bin/ftpwho
Una utilidad que muestra información sobre los procesos de cada usuario actualmente conectado al servidor.
/usr/bin/ftpcount
Utilidad que muestra el número de conexiones actuales.
/usr/bin/ftpshut
Orden para apagar el servidor, sólo funciona en modo “standalone”.
/var/log/proftpd/proftpd.log
Fichero con la información sobre los “logs” en el servidor, habría que decidir qué política de rotación se desea seguir.
/etc/proftpd/proftpd.conf
El fichero donde configuraremos las diversas opciones que nos ofrece el servidor, en él nos centraremos a continuación, es realmente el único que manipularemos.
Luego por razones de seguridad vamos a crear un shell falso para el acceso de ftp para esto vamos a agregar una linea en el archivo /etc/shell:
#nano /etc/shells
Y agregamos la siguiente línea al final del archivo:
/bin/false
Esto evitará que cualquier usuario que utilice el ftp pueda accesar a nuestra consola de comandos. Ahora visualizaremos el archivo /etc/passwd:
#cat /etc/passwd
Con ello veremos que se ha agregado un usuario llamado “FTP” que es el que nos crea ProFTPD al instalarlo. Este será el usuario para el login al servicio de FTP. Si deseamos que además tenga un password (como es lógico) haremos como root:
#passwd ftp
y le agregaremos la contraseña. En lo listado antes por el terminal, chequeamos que su shell sea /bin/false/ puesto que si es /bin/bash podrá acceder y ejecutar comando bash no solo por el puerto 21 sino por el 22 de ssh por ejemplo y hacer estragos.
Ahora añadimos el usuario ftp al grupo ftp
#adduser ftp ftp
si no esta creado el usuario ftp haremos
#adduser ftp -s /bin/false
si no esta creado el grupo haremos:
#addgroup ftp
Con esto ya tenemos configurada la cuenta de login. Para ser un poco mas ordenado en el directorio /home/ftp/ crearemos dos directorios llamados upload y download donde se realizarán las subidas y las descargas respectivamente.-
#mkdir upload
#mkdir download
le damos los permisos correspondientes
#chmod 755 /home/ftp
#chmod 755 /home/ftp/download
#chmod 777 /home/ftp/upload
cambiamos de dueño:
#chown ftp:ftp upload
#chown ftp:ftp download
Ahora si, a editar el proftpd.conf. Primero haremos una copia por si las moscas..
#cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.confOK
Y ahora si editamos:
#nano /etc/proftpd/proftpd.conf
Y modificamos el archivo dejándolo así:
# Para aplicar los cambios tienes que reiniciar el servidor FTP
AllowOverwrite on
AuthAliasOnly on
# Escoge aqui un alias para tu usuario de FTP
UserAlias usuarioftp ftp
ServerName “nombredelservidor”
ServerType standalone
DeferWelcome on
MultilineRFC2228 on
DefaultServer on
ShowSymlinks off
TimeoutNoTransfer 600
TimeoutStalled 100
TimeoutIdle 2200
DisplayFirstChdir .message
ListOptions “-l”
RequireValidShell off
TimeoutLogin 20
RootLogin off
# Aqui creamos los archivos de logs que son de mucha utilidad en caso de fallos
ExtendedLog /var/log/ftp.log
TransferLog /var/log/xferlog
SystemLog /var/log/syslog.log
#DenyFilter *.*/
#No vamos a utilizar el archivo /etc/ftpusers file
#(sirve para colocar adentro los usuarios que no queremos que se conecten)
UseFtpUsers off
# Permitir reiniciar una descarga (muy util en caso de que se caiga la conexion)
AllowStoreRestart on
#El puerto 21 es el estandar para FTP,
#es bueno cambiarlo por razones de seguridad
#aqui escogi el XXX puedes escoger el que quieras
Port XXX
#Configuracion detras de un servidor NAT
MasqueradeAddress ippublicadelservidor
# Para evitar ataques de DoS (negacion de servicio), se recomienda
# colocar un maximo de 30 procesos hijos. Si necesitas mas conexiones
# que esta simplemente aumenta este valor. Esto solo funciona con el
# servidor en modo standalone
MaxInstances 8
# Coloca el usuario y el grupo al que el servidor normalmente funciona
User nobody
Group nogroup
# Umask 022 es un buen valor por defecto para evitar que nuevos archivos y directorios
# sean escribibles por todo el mundo o por el grupo.
Umask 022 022
PersistentPasswd off
MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8
# Despliega un mensaje despues de que ingresa un usuario
AccessGrantMsg “Bienvenido a ……”
# Este mensaje es mostrado por cada intento de ingreso sea bueno o no
ServerIdent on “Estas en ……”
# Coloca a /home/ftp como el directorio principal (home)
DefaultRoot /home/ftp
# Bloquea a todos los usuarios al directorio home que definimos
DefaultRoot ~
MaxLoginAttempts 5
#Ingresos validos solo permitimos a ftp
<Limit LOGIN>
AllowUser ftp
DenyALL
</Limit>
#Definimos los permisos de los directorios que creamos para el FTP
<Directory /home/ftp>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory /home/ftp/download/*>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory> /home/ftp/upload/>
Umask 022 022
AllowOverwrite on
<Limit READ RMD DELE>
DenyAll
</Limit>
<Limit STOR CWD MKD>
AllowAll
</Limit>
</Directory>
Configurarlo así nos permite evitar algunos problemas de seguridad. En primer lugar evitamos que el usuario root se pueda logear. En segundo estamos impidiendo que una vez conectados por ftp se pueda navegar por directorios superiores al estipulado /home/ftp/. En tercer lugar, unicamente se permite el acceso a un usuario, en nuestro caso ftp, al que modificamos el alias en el archivo de configuración. Ningún otro usuario se podrá conectar. Por último, modificamos el puerto 21 por defecto para FTP por otro diferente (recordad que al modificarlo aquí deberemos abrirlo también en el Router, de lo contrario no podrá haber acceso). Ahora reiniciamos proftpd:
#/etc/init.d/proftpd restart
Y ya lo tendríamos preparado.
Si no hubiésemos añadido la opción de MasqueradeAddress con la ip pública de nuestro servidor (la podemos obtener en la pagina de no-ip.com) al conectarnos desde cualquier cliente FTP habríamos observado que el servidor responde con su ip privada, pudiendo llegar a impedirnos enroutar con él y perder la conexión. A pesar de que este problema se puede solventar desde el mismo cliente FTP, diciéndole en opciones que ignore la ip privada, es mejor configurar el archivo proftp.conf para evitar otros problemas.











Original:
#set the user and group that the server normally runs at
User proftp
Group nogroup
Habria que cambiar Group –> ftp que emos creado anteriormente
correcto, era un error.