Modulo 6 - FTP
Modulo 6 - FTP
Modulo 6 - FTP
Administrador Linux
Módulo 6
FTP
Objetivos
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
Examen
Los participantes deberán rendir el examen online o presentar el material solicitado según
corresponda.
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:
Ejemplos de uso
# 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)
Descomprimimos:
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.
6.3 Configuración
wu-ftp
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.
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
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
Creamos la cuenta del usuario llamado “ftp” y le damos acceso al shell que hemos creamos
# 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:
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.
email administradorftp@foo.com
loginfails 5
upload /ftp * no
upload /ftp /incoming yes ftp ftp 0000 nodirs
chmbd no anonymous
delete no anonymous
overwrite no anonymous
rename no anonymous
email administradorftp@foo.com
loginfails 3
chmod no guest
delete no guest
overwrite no guest
rename no guest
email administradorftp@foo.com
loginfails 3
chmod no guest,anonymous
delete no guest,anonymous
overwrite no guest,anonymous
rename no guest,anonymous
Configuración ProFTPd
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.
#Umask 022
Umask 022
#DefaultRoot ~
<Anonymous ~ftp>
User ftp
Group ftp
#Limitamos la escritura
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
#Umask 022
Umask 022
MaxInstances 30
<Anonymous ~ftp>
<Limit LOGIN>
Order deny,allow
Deny from .evil.net, .leecher.net
Allow from all
</Limit>
#Limitamos la escritura
<Limit WRITE>
DenyAll
</Limit>
<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.
MaxClients 10
MaxLoginAttempts 1
<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>
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.
6.5 Comandos
La siguiente es una lista de comandos propios de FTP útiles para trabajar con directorios