Modulo 6 - FTP

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 18

Curso

Administrador Linux

Módulo 6
FTP

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 1 de 18
Presentación

En esta unidad se introducirá a los participantes al funcionamiento del servicio de FTP.

Objetivos

Los participantes al finalizar la Unidad:

 Comprenderán el funcionamiento de un servidor FTP.

 Podrán configurar un servidor para transferencias de archivos.

 Podrán configurar un cliente para transferencias de archivos.

Temario
6.1 FTP
6.2 Instalación
6.3 Configuración
6.4 Ejecución del cliente
6.5 Comandos
6.6 Transferencia de archivos

Actividad de aplicación del conocimiento

Los participantes encontraran la actividad de aplicación en un archivo por separado en


caso de ser requerida.

Examen
Los participantes deberán rendir el examen online o presentar el material solicitado según
corresponda.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 2 de 18
6.1 FTP
El protocolo FTP (File Transfer Protocol) es el utilizado entre equipos para transferir datos en
grandes cantidades. Para realizar la transferencia se utilizan un servidor de FTP y un cliente
que se conecta al servidor.

La versión del servidor FTP disponible para Debian se llama wu-ftpd y se instala a través de
un paquete del mismo nombre. Actualmente también se distribuye otro servidor llamado
ProFTPD debido a los problemas de seguridad que tiene wu-ftpd.

Existen dos formas de acceso FTP. La primera de ellas consiste en que los usuarios con
cuentas en el sistema accedan a su propio sistema de archivos y directorios (esto es su
directorio en /home); a esto se le conoce como “acceso FTP autorizado”, ya que el acceso
se valida con nombre de usuario y contraseña. La otra permite que cualquiera se
conecte, con acceso solo a una parte del filesystem, esta opción se conoce como “acceso
FTP anónimo”.

Existen algunos comandos útiles para el manejo del servicio FTP. Estos son:

 ftpshut : detiene el servicio.


 ftprestart : reinicia el servicio.
 ftpwho : muestra los usuarios conectados al servidor.
 ftpcount : muestra la cantidad de usuarios conectados clasificados por clase.

Ejemplos de uso

# ftpshut now "Sentimos las molestias causadas"

# ftprestart

# ftpwho
Service class all:
5221 ? SN 0:10 ftpd: gloin.ejemplo.com.ar: usuario1: IDLE
5267 ? SN 0:00 ftpd: aries.ejemplo.com.ar: juan: IDLE
5285 ? SN 0:00 ftpd: id.com.ar:nonymous/alinac@ftp.host.com:
- 3 users (no maximum)

# ftpcount
Service class all - 3 users (no maximum)

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 3 de 18
6.2 Instalación
Podemos instalar mediante el paquete correspondiente o mediante su código fuente
siguiendo el mismo procedimiento ya utilizado de compilación.

Para realizar la instalación mediante el paquete haremos lo siguiente:

# apt-get install wu-ftpd

# apt-get install proftpd

Para instalar mediante el código fuente, descargamos la última versión disponible:

Descomprimimos:

# tar -xvzf wu-ftpd-2.6.2.tar.gz -C /usr/src

Configuramos:

# ./configure

Compilamos:

# make

He instalamos:

# make install

Una vez instalado, el servidor estará preparado para brindar el servicio de forma no
anónima, por lo que si se quiere contar además con la variante anónima se deberá instalar
otro paquete, el paquete anonftp que creará la estructura especial de directorios
donde se guarda la información accesible a través del servicio en dicha variante.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 4 de 18
El servidor de FTP es controlado por inetd o xinetd. El archivo correspondiente en
/etc/xinetd.d/ se llama wu-ftpd. Por defecto el servidor funciona por el puerto 21 como está
especificado en /etc/services.

Para ProFTPd el procedimiento de instalación es el mismo. Tenemos la opción de utilizarlo


con inetd/xinetd o bien como servidor stanalone.

6.3 Configuración

wu-ftp

Los archivos de configuración fundamentales del servicio FTP se encuentran en el directorio


/etc y son ftpaccess, ftpconversions, ftphosts, ftpusers y ftpgroups. En la configuración del
FTP se pueden establecer aspectos como: el máximo de usuarios conectados
simultáneamente, restricciones de acceso de acuerdo a clases de usuarios, grupos,
clientes, límites en la cantidad de datos transmitidos por sesión, etc.

Para las versiones actuales de Debian la estructura de directorios accesibles por la variante
anónima del FTP, comienza en /var/ftp/. Aquí se ubica a su vez el directorio pub donde se
deben colocar todos los archivos accesibles mediante el servicio.

Existe una herramienta gráfica del entorno KDE para configurar el servicio
FTP que se llama kwuftpd, a esta podemos recurrir para realizar la
configuración en modo grafico.

Veremos ahora una serie de comandos que están disponibles, estos comandos
colocados en el archivo de configuración (/etc/ftpaccess) lograran modificar el
comportamiento del servidor FTP, adaptándolo a nuestras necesidades.

Comandos de acceso

class
Sirve para definir clases de usuarios. No otorga privilegios, crear clases es
necesario para luego referenciar los grupos.

class claseanon anonymous 192.168.*


Esta clase llamada claseanon está conformada por los usuarios anónimos cuyas IP
comiencen con 192.168.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 5 de 18
deny
Permite evitar el acceso en función de dirección IP o nombre de la maquina.
deny 192.168.139.77 /home/ftp/no_access.txt

limit
Sirve para controlar la cantidad máxima de conexiones, se basa en clase y fecha.
limit claseanon 25 SaSu|Any2000-0600 /etc/too_much_load.txt

loginfails n
Cantidad de intentos fallidos aceptados.
loginfails 3

Comandos de información

banner
Nos permite enviar un mensaje al usuario que se conecta antes de loguearse.
banner /home/ftp/advisory.txt

email
Dirección de correo del administrador
email administradorftp@foo.com

message
Este comando permite enviar un mensaje en pantalla al usuario cuando se cumpla cierta
condición. La condición puede ser ingresar un comando, por ejemplo un path especial, o al
loguearse al servidor.
message /home/ftp/mensaje_anonimos.txt LOGIN claseanon
message /home/ftp/sea_prudente.txt cwd=/archivos claseanon
message /home/ftp/sea_prudente.txt cwd=*

readme
Es el comando utilizado para brindar información de cambios en archivos.
readme /home/ftp/README.txt login
readme /home/ftp/README.txt cwd=*

Comandos de LOG

log commands
Sirve para dejar log de cada comando ejecutado por los usuarios.
log commands anonyrnous

log transfers
Sirve para dejar log de los archivos transferidos y no de todas las acciones de los usuarios.
log transfer anonymous,real inbound,outbound

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 6 de 18
Compresión

compress
Permite hacer la compresión de un archivo “on the fly”. Muy útil para clientes con enlaces de
baja capacidad.
compress yes all

tar
Sirve para agrupar archivo.
tar yes all

Permisos

chmod
Este comando habilita, o no, que los usuarios puedan cambiar los permisos de los archivos.
chmod no guest,anonymous

delete
Permite, o no, que los usuarios puede borrar archivos.
delete no anonymous

overwrite
Permite, o no, que los usuarios puedan sobrescribir archivos.
overwrite no anonymous

rename
Permite, o no, que los usuarios puedan cambiar el nombre de los archivos.
rename yes real

umask
Habilita, o no, a los usuarios a cambiar la máscara por defecto.
umask no anonymous,guest

Configuración para acceso anónimo

En caso que no tengamos creado un usuario para acceso anónimo, lo crearemos de la


siguiente manera. Creamos un shell para el usuario, el shell puede no ser real con lo que
evitaremos que el usuario ingrese al sistema por otro método que no sea ftp.

# echo "/bin/ftpshell" >>/etc/shells

Creamos la cuenta del usuario llamado “ftp” y le damos acceso al shell que hemos creamos

# useradd -c "FTP User" -d /ftp -r –s /bin/ftpshell ftp

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 7 de 18
Para nuestro ejemplo direccionamos el directorio a /ftp, pero bien podría estar en /home/ftp o
cualquier otro directorio.

Debemos también crear el grupo ftp

# groupadd -r ftp

El directorio de acceso anónimo deberá tener una copia de los directorios pub, bin, etc y lib.
Esto se debe a que al ingresar por ftp al sistema el servidor hace un chroot para movernos
al directorio que tenemos acceso y no veremos los archivos del sistema; esto implica que no
podremos ejecutar ningún comando. Por esto es que debemos copiar los archivos y
programas imprescindibles y modificar los permisos en los directorios de la forma
siguiente manera:

# chown root.root bin etc lib


# chown root.ftp pub
# chmod 111 bin etc
# chmod 755 lib
# chmod 2755 pub

Debemos crear un directorio donde los usuarios anónimos puedan subir archivos:

# mkdir /ftp/incoming

Daremos permisos de escritura a los usuarios ftp (los usuarios anónimos no podrán leer los
archivos) y utilizaremos el comando upload con el cual daremos permisos al directorio
creado.

# chmod 300 incoming


# chown ftp.ftp incoming

El archivo de configuración /etc/ftpaccess quedará de la siguiente manera para los tres


casos más comunes.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 8 de 18
Configuración para acceso anónimo

class anon anonyrnous *


class nonanon real.guest *

email administradorftp@foo.com

loginfails 5

limit nonanon 0 Wk0000-2359 /ftp/.norealusers


readme README* login
readme README* cwd=*

message /welcome.msg login


message .be_careful.txt cwd=*

compress yes anonclass


tar yes anonclass

upload /ftp * no
upload /ftp /incoming yes ftp ftp 0000 nodirs

chmbd no anonymous
delete no anonymous
overwrite no anonymous
rename no anonymous

log transfers anonymous inbound,outbound


passwd-check rfc822 warn

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 9 de 18
Configuración para solo acceso registrado

class all real,guest *


class anon anonymous

email administradorftp@foo.com

loginfails 3

limit anon 0 Wk0000-2359 /home/ftp/no_access.txt

readme README* login


readme README* cwd=*

message /welcome.msg login


message .be_careful.txt cwd=*

compress yes all


tar yes all

chmod no guest
delete no guest
overwrite no guest
rename no guest

logs transfers real inbound, outbound

passwd-check rfc822 warn

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 10 de 18
Configuración para acceso combinado

class all real,guest,anonymous *

email administradorftp@foo.com

loginfails 3

readme README* login


readme README* cwd=*

message /welcome.msg login


message .be_careful.txt cwd=*

compress yes all


tar yes all

chmod no guest,anonymous
delete no guest,anonymous
overwrite no guest,anonymous
rename no guest,anonymous

log transfers anonymous,real inbound,outbound

passwd-check rfc822 warn

Configuración ProFTPd

Comencemos destacando algunas de las ventajas de este servidor:

 Un archivo de configuración único con directivas intuitivas similar al del servidor web
Apache.
 Soporte para IPv6.
 Archivos ".ftpaccess" por directorio con función similar al ".htaccess" en Apache.
 Soporte para virtual FTP server y anonymous FTP.
 Diseñado para funcionar como stand-alone o como server mediante inetd/xinetd.
 El directorio anónimo no requiere una estructura especial, no requiere binarios del
sistema ni ningún otro tipo de archivo.
 Diseño modular, por lo que es fácil extender su funcionalidad. Por ejemplo existen
módulos para soportar SQL, LDAP, encriptación SSL/TLS, RADIUS, etc.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 11 de 18
La instalación del servidor se realiza como se indico anteriormente y solo
destacaremos que se nos pedirá seleccionar su modo de funcionamiento. Esto es si
funcionara como servidor stand alone o bien mediante inetd/xinetd.

La configuración del servidor ProFTPd lucirá de la siguiente manera:

ServerName "ProFTPD server"


ServerType standalone
DefaultServer on

#Puerto de escucha del servidor


Port 21

#Umask 022
Umask 022

#Para prevenir ataque DoS prefijamos el máximo de procesos hijos


MaxInstances 30

#Definimos el usuario y grupo con el que se ejecutara


User nobody
Group nogroup

#Si deseamos que los usuarios estén enjaulados (chroot) habilitamos

#DefaultRoot ~

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 12 de 18
#Damos permisos sobre los directorios y archivos
<Directory />
AllowOverwrite on
</Directory>

#Configuración de usuario anónimo básica sin directorio de upload

<Anonymous ~ftp>
User ftp
Group ftp

#Creamos un alias para el usuario


UserAlias anonymous ftp

# Limit the maximum number of anonymous logins


MaxClients 10

# Mostramos los mensajes de bienvenida y demás


DisplayLogin welcome.msg
DisplayFirstChdir .message

#Limitamos la escritura
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>

Otro ejemplo de configuración es el siguiente

#Umask 022
Umask 022

#Si no se permitirá el acceso de usuarios comunes quitar comentario


# next section
#<Limit LOGIN>
#DenyAll
#</Limit>

#Definimos el usuario y grupo con el que se ejecutara


User nobody
Group nogroup

#Para prevenir ataque DoS prefijamos el máximo de procesos hijos

MaxInstances 30

#Tiempo permitido de "stall"


TimeoutStalled 300

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 13 de 18
#Mostramos los mensajes de bienvenida y demás
DisplayLogin welcome.msg
DisplayFirstChdir .message

#Configuración de usuario anónimo básica con directorio de upload

<Anonymous ~ftp>

#Habilitamos el acceso pero bloqueamos dos dominios conocidos

<Limit LOGIN>
Order deny,allow
Deny from .evil.net, .leecher.net
Allow from all
</Limit>

#Máximo número de clientes permitidos

MaxClients 5 "Sorry, max %m users -- try again later"


User ftp
Group ftp

#Creamos un alias para el usuario anonymous


UserAlias anonymous ftp

#Limitamos la escritura
<Limit WRITE>
DenyAll
</Limit>

#Permisos para subir pero no para descargar ni crear directorios

<Directory uploads/*>
<Limit READ>
DenyAll
</Limit>

<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>

Si deseamos hacer virtual FTP debemos crear configuraciones como las siguientes
y combinarlas con lo antes visto.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 14 de 18
#Primer servidor virtual
<VirtualHost ftp.virtualserver.com>
ServerName "Virtual ProFTPD server"
Umask 027

MaxClients 10
MaxLoginAttempts 1

#Esperar a que el usuario sea autenticado para mostrar saludo


DeferWelcome on

#Deshabilitamos el acceso de todos


<Limit LOGIN>
DenyAll
</Limit>

#Habilitamos el acceso de anónimos con restricciones

<Anonymous //ftp/virtual/virtualserver>
User ftp
Group ftp
UserAlias anonymous ftp

<Limit LOGIN>
AllowAll
</Limit>

<Limit WRITE>
DenyAll
</Limit>

<Directory incoming>
<Limit WRITE>
AllowAll
</Limit>
</Directory>
</Anonymous>
</VirtualHost>

6.4 Ejecución del Cliente


Para conectarnos a un servidor mediante un cliente FTP, debemos ejecutar el
siguiente comando:

# ftp <direccion IP>

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 15 de 18
Con el comando precedente iniciaremos la conexión al servidor y luego de
autenticarnos, ya sea con usuario y password o mediante login anónimo, estaremos
conectados al equipo remoto y en condiciones de ejecutar comandos propios del protocolo
FTP.

Ejemplo de conexión

C:\>ftp 192.168.153.153
Connected to 192.168.153.153.
220 ProFTPD 1.3.1 Server (Debian) [::ffff:192.168.153.153]
User (192.168.153.153:(none)): dmenino
331 Password required for dmenino
Password:
230 User dmenino logged in
ftp> pwd
257 "/home/dmenino" is the current directory
ftp> cd /
250 CWD command successful
ftp>
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
openvpn-2.1_rc15.tar.gz
vpn.sh
openvpn-admin_1.9.4-2_i386.deb
Desktop
226 Transfer complete
ftp: 117 bytes received in 0,06Seconds 1,89Kbytes/sec.
ftp>
ftp> bye
221 Goodbye.
C:\>

Otra posibilidad para realizar la conexión es mediante el modo interactivo, para esto
ejecutaremos solo el comando ftp y luego abriremos la conexión mediante el comando open.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 16 de 18
C:\>ftp
ftp> open 192.168.153.153
Connected to 192.168.153.153.
220 ProFTPD 1.3.1 Server (Debian) [::ffff:192.168.153.153]
User (192.168.153.153:(none)): dmenino
331 Password required for dmenino
Password:
230 User dmenino logged in
ftp>
ftp> pwd
257 "/home/dmenino" is the current directory
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
openvpn-2.1_rc15.tar.gz
vpn.sh
openvpn-admin_1.9.4-2_i386.deb
226 Transfer complete
ftp: 117 bytes received in 0,00Seconds 117000,00Kbytes/sec.
ftp>
ftp> bye
221 Goodbye.
C:\>

6.5 Comandos
La siguiente es una lista de comandos propios de FTP útiles para trabajar con directorios

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 17 de 18
6.6 Transferencia de Archivos
Los comandos para realizar transferencia de archivos son los siguientes:

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 18 de 18

También podría gustarte