http://www.linuxparatodos.net/web/comunidad/base-de-conocimiento/-/wiki/Base+de+Conocimiento/Servidor+de+Protocolo+de+Transferencia+de+Archivos+%28FTP%29?_36_pageResourcePrimKey=54795
Table of Contents [-]
- Acerca del Protocolo FTP
- Funcionamiento del Protocolo FTP
- Modos de conexión del cliente FTP
- Modo Activo
- Modo Pasivo
- Modo Activo vs Modo Pasivo
- Modos de acceso del cliente FTP
- Acceso Anónimo
- Acceso de Usuario
- Acceso de Invitado
- Instalando VSFTPD
- Archivos de configuración de VSFTPD
- Configuración del fichero vsftpd.conf
- Habilitando o negando accesos anónimos al servidor FTP
- Habilitar o negar autenticarse a los usuarios
- Habilitar o negar la escritura en el servidor FTP
- Estableciendo un mensaje de bienvenida en el servidor FTP
- Habilitar el acceso de invitado para ciertos usuarios de FTP
- Habilitar al usuario anónimo la función de subir contenido al servidor FTP
- Habilitar al usuario anónimo la función de crear carpetas en servidor FTP
- Estableciendo permisos de escritura, lectura y ejecución al contenido albergado en el servidor FTP
- Limitando la tasa de transferencia a los usuarios anónimos
- Limitando la tasa de transferencia a los usuarios autenticados
- Limitando el numero de conexiones hacia el servidor FTP
- Limitando el numero de conexiones por IP hacia el servidor FTP
- Configuración del fichero chroot_list
- Iniciar , detener o reiniciar el servidor FTP
- Creación de cuentas de usuario en el servidor FTP
Acerca del Protocolo FTP#
La
historia de este protocolo se remonta al año de 1969 cuando el
Instituto Tecnológico de Massachusetts mejor conocido como el MIT
presentó la propuesta del primer Protocolo para la transmisión de
archivos en Internet. Era un protocolo muy sencillo basado en el sistema
de correo electrónico pero sentó las bases para el futuro protocolo de
transmisión de archivos (FTP).
- En 1985, quince años después
de la primera propuesta, se termina el desarrollo del aún vigente
protocolo para la transmisión de archivos en Internet (FTP), basado en
la filosofía de cliente-servidor.
- Fragmento extraído de Wikipedia
El
protocolo FTP (File Transfer Protocol) es una de las herramientas mas
usadas entorno a la administración de portales web y tiene como
principal función la transferencia de archivos. Esta transacción puede
ser efectuada desde una LAN (Red de área local) o en una WAN (Red de
Área Amplia). El protocolo FTP esta basado principalmente en la
arquitectura Cliente-Servidor el cual consiste básicamente en un
programa “Cliente” que realiza peticiones a otro programa “Servidor” el
cual responde a su petición. Visto de otra forma podemos entenderlo como
el equipo cliente que se conecta al servidor para descargar archivos
desde el o para enviarle archivos. FTP hace uso del modelo TCP/IP y
trabaja directamente sobre la capa de aplicación del antes mencionado.
Así mismo el protocolo FTP hace uso de los puertos 20 y 21 para la
comunicación y control de datos. Un problema básico de FTP es que está
pensado para ofrecer la máxima velocidad en la conexión, pero no la
máxima seguridad, ya que todo el intercambio de información, desde el
login y password del usuario en el servidor hasta la transferencia de
cualquier archivo, se realiza en texto plano sin ningún tipo de cifrado,
con lo que un posible atacante puede capturar este tráfico mediante la
ayuda de un sniffer y acceder al servidor. Una forma de solucionar este
gran problema de seguridad es mediante la utilización de aplicaciones
como “SCP” y el “SFTP” los cuales permiten transferir archivos pero
cifrando el trafico , por lo general estas aplicaciones son incluidas en
el paquete de openSSH tema que veremos mas adelante.
Funcionamiento del Protocolo FTP#
Generalmente
se origina cuando el cliente FTP envía la petición al servidor para
indicarle que requiere establecer una comunicación con el, entonces el
cliente FTP inicia la conexión hacia el servidor FTP mediante el puerto
21 el cual establecerá un canal de control. A partir de este punto el
cliente FTP enviara al servidor las acciones que este debe ejecutar para
poder llevar a cabo el envío de datos. Estas acciones incluyen
parámetros para la conexión de datos así como también la manera en como
serán gestionados y tratados estos datos. Algunos de los parámetros
enviados por el cliente FTP para la conexión de datos son los
siguientes:
- Puerto de datos
- Modo de transferencia
- Tipo de representación y estructura
Los parámetros relacionados a la gestión de datos son los siguientes:
- Almacenar
- Recuperar
- Añadir
- Borrar
- Obtener
El
proceso de transferencia de datos desde el servidor hacia el cliente
deberá esperar a que el servidor inicie la conexión al puerto de datos
especificado ( en modo activo ) y luego de ello transferir los datos en
función a los parámetros de conexión especificados anteriormente.
Modos de conexión del cliente FTP#
FTP establecerá dos modos de conexión diferentes para el cliente, el Modo Activo y el Modo Pasivo.
Modo Activo#
El
modo activo generalmente es conocido también como modo estándar y este
opera de la siguiente forma. Se establecen dos conexiones distintas, la
primera conexión establece una comunicación para la transmisión de
comandos a través de un puerto aleatorio mayor que el 1024 del cliente
FTP hacia el puerto 21 del servidor FTP y por esa misma conexión se le
notifica al servidor FTP cual es el puerto de nuestro cliente FTP que
esta a la espera de los datos. Entonces y para comprender mejor, si
usted descarga algún archivo mediante la ayuda de algún cliente de FTP,
es el servidor FTP el que inicia la transmisión de datos, desde su
puerto 20 al puerto que aleatoriamente el cliente FTP le ha indicado. Se
le llama modo activo porque la transmisión de datos es iniciada por el
propio servidor FTP.
Modo Pasivo#
Esto
se logra cuando el cliente FTP inicia la conexión con el servidor FTP
mediante el envió del comando PASV en este punto el cliente FTP
establece una comunicación mediante un canal de control el cual
generalmente utiliza un puerto aleatorio mayor al 1024 para comunicarse
con el servidor FTP a través de su puerto 21. Al pasar a modo pasivo el
cliente FTP pedirá al servidor FTP que habrá un puerto, el cual deberá
ser aleatorio y mayor al 1024, recibida la contestación, será el cliente
FTP el que establezca la conexión de datos al servidor FTP a través del
puerto especificado anteriormente.
Modo Activo vs Modo Pasivo#
Como
hemos explicado antes, en el modo activo se abre una conexión para
datos desde el servidor FTP al cliente FTP, esto es, una conexión de
fuera hacia adentro, entonces, si el cliente FTP se encuentra detrás de
un firewall, este filtrara o bloqueara la conexión entrante. En el modo
pasivo es el cliente FTP el que inicia tanto la conexión de control como
la de datos, con lo cual el firewall no tendrá ninguna conexión
entrante que filtrar.
Modos de acceso del cliente FTP#
Un
cliente FTP es la aplicación o software que servirá de intermediario
entre el servidor FTP y nuestro equipo, así mismo existen dos versiones
de clientes FTP, los gráficos y los que se usan a linea de comandos. En
la mayoría de los casos se implementaran clientes gráficos de FTP esto
debido a que son mas fáciles y sencillos de manejar por el usuario.
Nosotros recomendamos usar el cliente FTP FileZilla. FileZilla es un
cliente FTP, gratuito, multiplataforma , libre y de código abierto.
Sustenta los protocolos FTP, SFTP y SFTP. Así mismo, los clientes FTP
pueden acceder a los servidores FTP de tres formas distintas, estas son:
- Acceso Anónimo
- Acceso de Usuario
- Acceso de Invitado
Acceso Anónimo#
El
acceso anónimo a un servidor FTP se caracteriza porque este no pide
ningún tipo de autenticacion al cliente FTP ( login y password ) para
entrar en el. Generalmente este tipo de accesos son implementados para
que cualquier usuario tenga acceso a los recursos que ahí se comparten,
los cuales normalmente solo pueden ser leídos o copiados , restringiendo
a los usuarios la función de crear o modificar dichos recursos.
Acceso de Usuario#
Este
tipo de acceso se caracteriza porque este si requiere autenticacion del
cliente FTP ( login y password ) ante el servidor FTP. Generalmente
estos accesos son implementados para un grupo selecto de usuarios, los
cuales tendrán ciertos privilegios sobre los recursos del servidor como
podría ser modificar, eliminar, crear , subir o descargar archivos o
carpetas. Otra característica de este acceso es que permite al usuario
FTP acceder a cualquier parte del sistema operativo, lo cual es un grave
fallo de seguridad.
Acceso de Invitado#
El
acceso de invitado bien podría ser un híbrido entre el acceso anónimo y
el acceso de usuario, ya que en este tipo de acceso de requiere
autenticacion del cliente FTP ( login y password ) ante el servidor FTP,
lo que lo diferencia de los últimos dos es que el usuario FTP solo
podrá trabajar en un directorio de trabajo destinado exclusivamente para
el, evitando así que el usuario FTP tenga acceso a otras partes del
sistema operativo, pero sin restringir los privilegios que tiene sobre
su propio directorio de trabajo. Proceso de instalación del servidor FTP
Instalando VSFTPD#
La instalación de VSFTPD es relativamente sencilla , solo debe teclear en terminal el siguiente comando.
[root@ localhost ~]# yum install -y vsftpd
Recuerde que este comando se debe ejecutar como root
Archivos de configuración de VSFTPD#
La
configuración de VSFTPD se realizara sobre dos ficheros distintos, uno
de configuración general propio de VSFTPD y otro para especificar al
servidor FTP los usuarios que harán uso del acceso de invitado. El
primer fichero de configuración de VSFTPD lo encontramos en la siguiente
ruta
/etc/vsftpd/vsftpd.conf
El segundo fichero de
configuración debe ser creado por usted mismo ya que de otra forma nunca
podrá especificar al servidor FTP los usuarios que harán uso del acceso
de invitado. La ruta en la que se debe crear dicho fichero es la
siguiente:
/etc/vsftpd
Y sera nombrado con el nombre siguiente:
chroot_list
A
este fichero deberán ser agregados los nombres de los usuarios de FTP
que trabajaran en su directorio de trabajo, de esta manera se restringe a
estos usuarios el acceso a otras partes del sistema operativo,
cualquier otro usuario no agregado a este archivo podrá acceder a
cualquier parte del sistema operativo, lo cual es un grave fallo de
seguridad. Al final nuestros archivos deberán estar ubicados en las
siguientes ruta:
/etc/vsftpd/vsftpd.conf ---> Fichero de configuración propio de VSFTPD
/etc/vsftpd/chroot_list
---> Fichero que definirá los usuarios que harán uso del acceso de
invitado [RECUERDE QUE ESTE FICHERO DEBE SER GENERADO POR USTED] }}}
El siguiente paso sera editar y configurar los ficheros que previamente creamos.
Configuración del fichero vsftpd.conf#
Para
llevar a cabo la configuración de este fichero le recomendamos usar el
editor de textos VIM. A continuación le presentamos las diferentes
opciones que pueden ser habilitadas o negadas en el fichero de
configuración vsftpd.conf
Habilitando o negando accesos anónimos al servidor FTP#
Al
haber abierto el fichero trate de buscar la linea siguiente: Para
habilitar el acceso anónimo al servidor FTP solo deberá teclear la
palabra YES , caso contrario si usted desea tener deshabilitada esta
opción solo deberá teclear la palabra NO.
anonymous_enable=YES|NO
Habilitar o negar autenticarse a los usuarios#
Para habilitar o negar los accesos autenticados de los usuarios locales en el servidor FTP deberá buscar la siguiente linea:
local_enable=YES|NO
Deberá
teclear la palabra YES para habilitar la autenticacion , caso contrario
si usted desea tener deshabilitada esta opción solo deberá teclear la
palabra NO.
Habilitar o negar la escritura en el servidor FTP#
Para habilitar o negar la escritura en el servidor FTP deberá buscar la siguiente linea
write_enable=YES|NO
Una
vez ubicada esta linea recuerde borrar ( si es que esta ) el signo de
numero (#) para habilitar esta función. Establezca el valor YES o NO de
acuerdo a lo que se requiera.
Estableciendo un mensaje de bienvenida en el servidor FTP#
Este
parámetro sirve para establecer un mensaje de bienvenida el cual será
mostrado cada vez que un usuario acceda al servidor de archivos. Una vez
ubicada esta linea recuerde borrar ( si es que esta ) el signo de
numero (#) para habilitar esta función. Para agregar este mensaje al
servidor FTP deberá buscar la siguiente linea y editarla.
ftpd_banner=Bienvenido al Servidor FTP de Linux Para Todos
Habilitar el acceso de invitado para ciertos usuarios de FTP#
Para
limitar a los usuarios a trabajar en su propia carpeta de trabajo se
deberán editar las siguientes lineas del fichero vsftpd.conf
chroot_list_enable=YES |NO
Una
vez ubicada esta linea recuerde borrar ( si es que esta ) el signo de
numero (#) para habilitar esta función. Habilitar este parámetro
indicara al servidor FTP que el usuario solo podrá trabajar dentro de su
carpeta de trabajo, para ello solo habrá que teclear la palabra YES, en
caso contrario use la palabra NO El siguiente parámetro se encuentra en
función del anterior, de forma que si usted lo habilito también tendrá
que habilitar este ultimo, para ello solo deberá borrar el caracter de
numero (#)
chroot_list_file=/etc/vsftpd/chroot_list
El parámetro
/etc/vsftpd/chroot_list
indica
la ruta en la cual se encuentra el fichero con los nombres de los
usuarios que serán limitados a trabajar en su propia carpeta de trabajo
Recuerde que usted creo previamente este fichero
Habilitar al usuario anónimo la función de subir contenido al servidor FTP#
Para habilitar o negar al usuario anónimo el subir datos al servidor FTP deberá buscar la siguiente linea:
anon_upload_enable=YES|NO
Una
vez ubicada esta linea recuerde borrar ( si es que esta ) el signo de
numero (#) para habilitar esta función. Establezca el valor YES o NO de
acuerdo a lo que se requiera.
Habilitar al usuario anónimo la función de crear carpetas en servidor FTP#
Para habilitar o negar al usuario crear carpetas en servidor FTP deberá buscar la siguiente linea:
anon_mkdir_write_enable=YES|NO
Una
vez ubicada esta linea recuerde borrar ( si es que esta ) el signo de
numero (#) para habilitar esta función. Establezca el valor YES o NO de
acuerdo a lo que se requiera.
Estableciendo permisos de escritura, lectura y ejecución al contenido albergado en el servidor FTP#
La
siguiente linea Indica que los archivos subidos al servidor quedarán
con los permisos 022, es decir, sólo escritura para el grupo y los
demás.
local_umask=022
Si tu deseas agregar otro tipo de
permisos sobre el contenido que sera albergado en tu servidor FTP solo
deberás modificar el valor 022 por el que tu creas mas conveniente.
Nosotros recomendamos usar el permiso “664”
local_umask=664
es decir, lectura y escritura para el propietario del fichero, y sólo lectura para el grupo y los demás
Limitando la tasa de transferencia a los usuarios anónimos#
Usted
puede limitar la tasa de transferencia ( en bytes ) para los usuarios
anónimos, solamente deberá agregar la siguiente linea al final del
archivo
anon_max_rate=10240
Como podemos observar hemos
limitado la tasa de transferencia a solo 10 Kb para los usuarios
anónimos, usted podrá definir ese parámetro de acuerdo a sus
necesidades.
Limitando la tasa de transferencia a los usuarios autenticados#
Usted
puede limitar la tasa de transferencia ( en bytes ) para los usuarios
anónimos, solamente deberá agregar la siguiente linea al final del
archivo
local_max_rate=10240
Como podemos observar hemos
limitado la tasa de transferencia a solo 10 Kb para los usuarios
autenticados, usted podrá definir ese parámetro de acuerdo a sus
necesidades.
Limitando el numero de conexiones hacia el servidor FTP#
Usted
podrá establecer un numero máximo de conexiones que podrán acceder
simultáneamente al servidor FTP, para ello solo habrá que añadir la
siguiente linea al final de archivo.
max_clients=3
Como podemos observar hemos limitado el acceso a solamente 3 clientes FTP
Limitando el numero de conexiones por IP hacia el servidor FTP#
Usted
podrá establecer un numero máximo de conexiones desde una misma
dirección IP que podrán acceder simultáneamente al servidor FTP, para
ello solo habrá que añadir la siguiente linea al final de archivo.
max_per_ip=3
Como podemos observar hemos limitado el acceso a simultaneo a solamente 3 IP´s .
Configuración del fichero chroot_list#
La
configuración de este fichero es relativamente fácil, solo deberá
añadir dentro de el los nombres de los usuarios que serán limitados a
trabajar dentro de su carpeta personal de trabajo. Ejemplo:
[root@ localhost ~]# vim /etc/vsftpd/chroot_list
paty angelica erika viridiana iliana regina
"chroot_list"}}}
Al terminar solo deberá guardar los cambios hechos al fichero.
Iniciar , detener o reiniciar el servidor FTP#
Para iniciar el servidor FTP por primera vez solo deberá teclear en terminal el siguiente comando:
[root@ localhost ~]# /etc/init.d/vsftpd start
Igualmente
existen opciones ya sea para reiniciar, detener, recargar o conocer el
status en el que se encuentra el servidor FTP. Estas opciones pueden ser
consultadas en la siguiente tabla:
start | Inicia el servicio |
|
stop | Detiene el servicio |
|
restart | Reinicia
el servicio.-La diferencia con reload radica en que al ejecutar un
restart este mata todos los procesos relacionado con el servicio y los
vuelve a generar de nueva cuenta |
|
reload | Recarga
el servicio.-La diferencia con restart radica en que al ejecutar un
reload este solamente carga las actualizaciones hechas al fichero de
configuración del servicio sin necesidad de matar los procesos
relacionados con el mismo, por lo que podría entenderse que hace el
cambio en caliente. |
|
condrestart | Reinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose. |
|
status | Da a conocer el estado en el que se encuentra el servicio |
|
Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor FTP
[root@ localhost ~]# service vsftpd start
Y
de igual manera podemos usar las opciones antes descritas en la tabla
anterior. Recuerde que estos comandos se ejecutan como root.
Creación de cuentas de usuario en el servidor FTP#
Crear
cuentas de usuario en el servidor FTP es un proceso muy parecido a dar
de alta usuarios en Linux. La sintaxis general para dar de alta usuarios
es la siguiente: Las opciones utilizadas son explicadas en la siguiente
tabla:
Opciones | Descripción |
|
-d | --home
| Carpeta de trabajo que sera asignado al usuario
Ejemplos:
a) -d /home/usuario1
b) -d /home/cmartinez
c) -d /home/icastillo |
|
-s | --shell
| -s
/sbin/nologin → El usuario no podrá logearse en el sistema. Ideal para
usuarios con acceso a Samba o FTP pero sin acceso al interprete de
comandos. |
|
Adicionalmente se tiene que asignar una contraseña al usuario FTP.
[root@ localhost ~]# passwd sistemas
Cambiando
la contraseña del usuario . Nueva UNIX contraseña: xxxxxxxxxx Vuelva a
escribir la nueva UNIX contraseña:xxxxxxxxxx passwd: todos los tokens de
autenticación se actualizaron exitosamente. }}} Ejemplo:
[root@ localhost ~]# useradd -d /home/ftp/javier -s /sbin/nologin \ > javier
Explicación: Como podemos observar, estamos creando una cuenta en el servidor ftp, para ello estamos usando el comando
useradd
El parámetro siguiente es
-d /home/ftp/javier
Este
parámetro le indica a Linux que la carpeta de trabajo de javier esta
ubicada en la ruta [/home/ftp/javier], el ultimo parámetro
-s /sbin/nologin
Le
indica a Linux que el usuario no podrá logearse en el sistema lo cual
es ideal para usuarios con acceso a FTP pero sin acceso al interprete de
comandos.