miércoles, 9 de mayo de 2012

Redes FTP Y SAMBA

FTP


Es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo.

El servicio FTP es ofrecido por la capa de aplicación del modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. 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, acceder al servidor y/o apropiarse de los archivos transferidos.

EL MODELO FTP

En el modelo, el intérprete de protocolo (IP) de usuario inicia la conexión de control en el puerto 21. Las órdenes FTP estándar las genera el PI de usuario y se transmiten al proceso servidor a través de la conexión de control. Las respuestas estándar se envían desde el PI del servidor al PI de usuario por la conexión de control como respuesta a las órdenes.

Estas órdenes FTP especifican parámetros para la conexión de datos (puerto de datos, modo de transferencia, tipo de representación y estructura) y la naturaleza de la operación sobre el sistema de archivos (almacenar, recuperar, añadir, borrar, etc.). El proceso de transferencia de datos (DTP) de usuario u otro proceso en su lugar, debe esperar a que el servidor inicie la conexión al puerto de datos especificado (puerto 20 en modo activo o estándar) y transferir los datos en función de los parámetros que se hayan especificado.

Vemos también en el diagrama que la comunicación entre cliente y servidor es independiente del sistema de archivos utilizado en cada computadora, de manera que no importa que sus sistemas operativos sean distintos, porque las entidades que se comunican entre sí son los PI y los DTP, que usan el mismo protocolo estandarizado: el FTP.




También hay que destacar que la conexión de datos es bidireccional, es decir, se puede usar simultáneamente para enviar y para recibir, y no tiene por qué existir todo el tiempo que dura la conexión FTP. Pero tenía en sus comienzos un problema, y era la localización de los servidores en la red. Es decir, el usuario que quería descargar algún archivo mediante FTP debía conocer en qué máquina estaba ubicado. La única herramienta de búsqueda de información que existía era Gopher, con todas sus limitaciones.


EL SERVIDOR FTP

Un servidor FTP es un programa especial que se ejecuta en un equipo servidor normalmente conectado a Internet (aunque puede estar conectado a otros tipos de redes, LAN, MAN, etc.). Su función es permitir el intercambio de datos entre diferentes servidores/ordenadores.

Por lo general, los programas servidores FTP no suelen encontrarse en los ordenadores personales, por lo que un usuario normalmente utilizará el FTP para conectarse remotamente a uno y así intercambiar información con él.

Las aplicaciones más comunes de los servidores FTP suelen ser el alojamiento web, en el que sus clientes utilizan el servicio para subir sus páginas web y sus archivos correspondientes; o como servidor de backup (copia de seguridad) de los archivos importantes que pueda tener una empresa. Para ello, existen protocolos de comunicación FTP para que los datos se transmitan cifrados, como el SFTP (Secure File Transfer Protocol).


EL CLIENTE FTP

Cuando un navegador no está equipado con la función FTP, o si se quiere cargar archivos en un ordenador remoto, se necesitará utilizar un programa cliente FTP. Un cliente FTP es un programa que se instala en el ordenador del usuario, y que emplea el protocolo FTP para conectarse a un servidor FTP y transferir archivos, ya sea para descargarlos o para subirlos.

Para utilizar un cliente FTP, se necesita conocer el nombre del archivo, el ordenador en que reside (servidor, en el caso de descarga de archivos), el ordenador al que se quiere transferir el archivo (en caso de querer subirlo nosotros al servidor), y la carpeta en la que se encuentra.

Algunos clientes de FTP básicos en modo consola vienen integrados en los sistemas operativos, incluyendo Microsoft Windows, DOS, GNU/Linux y Unix. Sin embargo, hay disponibles clientes con opciones añadidas e interfaz gráfica. Aunque muchos navegadores tienen ya integrado FTP, es más confiable a la hora de conectarse con servidores FTP no anónimos utilizar un programa cliente.

ACCESO ANÓNIMO

Los servidores FTP anónimos ofrecen sus servicios libremente a todos los usuarios, permiten acceder a sus archivos sin necesidad de tener un 'USER ID' o una cuenta de usuario. Es la manera más cómoda fuera del servicio web de permitir que todo el mundo tenga acceso a cierta información sin que para ello el administrador de un sistema tenga que crear una cuenta para cada usuario.

Si un servidor posee servicio 'FTP anonymous' solamente con teclear la palabra «anonymous», cuando pregunte por tu usuario tendrás acceso a ese sistema. No se necesita ninguna contraseña preestablecida, aunque tendrás que introducir una sólo para ese momento, normalmente se suele utilizar la dirección de correo electrónico propia.

Solamente con eso se consigue acceso a los archivos del FTP, aunque con menos privilegios que un usuario normal. Normalmente solo podrás leer y copiar los archivos que sean públicos, así indicados por el administrador del servidor al que nos queramos conectar.

Normalmente, se utiliza un servidor FTP anónimo para depositar grandes archivos que no tienen utilidad si no son transferidos a la máquina del usuario, como por ejemplo programas, y se reservan los servidores de páginas web (HTTP) para almacenar información textual destinada a la lectura en línea.

ACCESO USUARIO

Si se desea tener privilegios de acceso a cualquier parte del sistema de archivos del servidor FTP, de modificación de archivos existentes, y de posibilidad de subir nuestros propios archivos, generalmente se suele realizar mediante una cuenta de usuario. En el servidor se guarda la información de las distintas cuentas de usuario que pueden acceder a él, de manera que para iniciar una sesión FTP debemos introducir una autentificación (en inglés: login) y una contraseña (en inglés: password) que nos identifica unívocamente.


CLIENTE FTP BASADO EN WEB

Un «cliente FTP basado en Web» no es más que un cliente FTP al cual podemos acceder a través de nuestro navegador web sin necesidad de tener otra aplicación para ello. El usuario accede a un servidor web (HTTP) que lista los contenidos de un servidor FTP. El usuario se conecta mediante HTTP a un servidor web, y el servidor web se conecta mediante FTP al servidor FTP. El servidor web actúa de intermediario haciendo pasar la información desde el servidor FTP en los puertos 20 y 21 hacia el puerto 80 HTTP que ve el usuario.

Siempre hay momentos en que nos encontramos fuera de casa, no llevamos el ordenador portátil encima y necesitamos realizar alguna tarea urgente desde un ordenador de acceso público, de un amigo, del trabajo, la universidad, etc. Lo más común es que no estén instaladas las aplicaciones que necesitamos y en muchos casos hasta carecemos de los permisos necesarios para realizar su instalación. Otras veces estamos detrás de un proxy o cortafuegos que no nos permite acceder a servidores FTP externos.

Al disponer de un cliente FTP basado en Web podemos acceder al servidor FTP remoto como si estuviéramos realizando cualquier otro tipo de navegación web. A través de un cliente FTP basado en Web podrás, crear, copiar, renombrar y eliminar archivos y directorios. Cambiar permisos, editar, ver, subir y descargar archivos, así como cualquier otra función del protocolo FTP que el servidor FTP remoto permita.

ACCESO INVITADO

El acceso sin restricciones al servidor que proporcionan las cuentas de usuario implica problemas de seguridad, lo que ha dado lugar a un tercer tipo de acceso FTP denominado invitado (guest), que se puede contemplar como una mezcla de los dos anteriores.

La idea de este mecanismo es la siguiente: se trata de permitir que cada usuario conecte a la máquina mediante su login y su password, pero evitando que tenga acceso a partes del sistema de archivos que no necesita para realizar su trabajo, de esta forma accederá a un entorno restringido, algo muy similar a lo que sucede en los accesos anónimos, pero con más privilegios.
-----------------------------------------------------------------------

FILEZILLA(PROGRAMA)


Es un cliente FTP multiplataforma de código abierto y software libre, licenciado bajo la Licencia Pública General de GNU. Soporta los protocolos FTP, SFTP y FTP sobre SSL/TLS (FTPS).

• Inicialmente fue diseñado para funcionar en Microsoft Windows, pero desde la versión 3.0.0, gracias al uso de wxWidgets, es multiplataforma, estando disponible además para otros sistemas operativos, entre ellos GNU/Linux, FreeBSD y Mac OS X.

• El código fuente de FileZilla y las descargas estaban2 hospedadas en SourceForge, el cual presentó a FileZilla como el Proyecto del Mes en noviembre de 2003.3 Actualmente hospeda el código fuente en su propio sitio web y las descargas en Ohloh.

CARACTERISTICAS

• Administrador de sitios: permite a un usuario crear una lista de sitios FTP con sus datos de conexión, como el número de puerto a usar, o si se utiliza inicio de sesión normal o anónima. Para el inicio normal, se guarda el usuario y, opcionalmente, la contraseña.

• Registro de mensajes: se muestra en la parte superior de la ventana. Muestra en forma de consola los comandos enviados por FileZilla y las respuestas del servidor remoto.

• Vista de archivo y carpeta: situada en la parte central de la ventana, proporciona una interfaz gráfica para FTP. Los usuarios pueden navegar por las carpetas, ver y alterar sus contenidos tanto en la máquina local como en la remota, utilizando una interfaz de tipo árbol de exploración. Los usuarios pueden arrastrar y soltar archivos entre los ordenadores local y remoto.

• Cola de transferencia: situada en la parte inferior de la ventana, muestra en tiempo real el estado de cada transferencia activa o en cola.

VENTAJAS


• Fácil de usar.
• Traducido a multiples idiomas.
• Soporte de codificación SFTP sobre SSH y FTP sobre SSL/TLS.
• Permite reanudar la transferencia de archivos y maneja archivos de gran tamaño.
• Administrador de sitios.
• Cola de transferencia.
• Comunicacion a través de un proxy, un proxy FTP o un firewall.
• Registro de mensajes.
• ... y mucho más!

CONFIGURAR SU CUENTA FTP CON FILEZILLA

Esta ayuda toma como ejemplo el programa FTP FileZilla, cualquier cliente FTP es válido:

Paso 1: Descargar FileZilla e instalarlo.

Paso 2: Para conectarse a su FTP, simplemente rellene el formulario que se encuentra en la parte de arriba del programa. Vea el cuadro rojo de la imagen.

Para conectarse a su alojamiento, completar los siguientes campos:

  • Servidor: La dirección de su web. Ej. www.comalis.com
  • Nombre Usuario: El usuario de conexión FTP
  • Contraseña: La contraseña de conexión FTP
  • Puerto: El puerto para acceder al FTP es el 21

Pulsad la tecla “Intro”, el programa se conecta entonces a su alojamiento.

Paso 3: Una vez conectado encuentra la siguiente pantalla:

Ventana Verde (local): Corresponde a las carpetas de su ordenador.

Ventana Roja (remoto): Corresponde a las carpetas de su alojamiento. Debe subir siempre los archivos en la carpeta httpdocs. La página principal de su web debe llamarse index.html.

Para el intercambio de archivos arrastre con el ratón los archivos desde la ventana verda hacia la ventana roja para subir un fichero, y desde la ventana roja a la ventana verde para descargar un archivo.

PASOS A PASOS LINUX(UBUNTU)CONEXION AL WINDOWS

Un servidor de ficheros (servidor FTP) puede ser muy útil a la hora de centralizar datos en nuestra red, compartir con otros e incluso recibir datos de cualquier usuario autorizado para hacerlo. Montar un servidor ftp es muy sencillo gracias a VSFTPD, un servidor rápido, ligero, seguro y de fácil configuración.
Entre sus características más interesantes encontramos:

1.Servidor rápido, estable y seguro.
2.Configuración sencilla.
3.Soporte de usuarios anónimos, registrados y virtuales.
4.Soporte para virtual hosts.
5.Ejecución independiente o mediante (x)inetd.
6.Soporte IPv6 y SSL.
7.Límites por usuario, conexión y ancho de banda.

INSTALACIÓN

Gracias a que VSFTPD está presente en los repositorios oficiales de Ubuntu su instalación será tan sencilla como ejecutar la orden:

$ sudo apt-get install vsftpd

El propio proceso de instalación se encarga de crear el usuario no privilegiado ftp, crear el directorio /home/ftp (donde colocaremos los archivos disponibles para el acceso anónimo) y arrancar el servicio.

Nota: En caso de tener un firewall instalado no olvides que deberás abrir el puerto 21 (si no sabes como hacerlo consulta el artículo Administración del firewall con firestarter), además si conectas a internet a través de un router y pretendes dar acceso al servidor de ficheros desde el exterior deberás redireccionar el puerto 21 en la configuración del router (revisa la documentación de tu modelo de router si no sabes como hacerlo).

Podemos comprobar que el proceso ha funcionado apuntando nuestro navegador o cliente de ftp favorito a la dirección ftp://localhost o ftp://127.0.0.1, en caso de acceder desde un ordenador remoto deberemos usar nuestra IP privada (si conectamos desde dentro de una red local) o nuestra IP pública (si conectamos desde Internet):


Firefox conectado a nuestro servidor de ftp
Nota: no muestra ningún archivo porque aun no he colocado nada en el directorio /home/ftp

CONFIGURACIÓN

La configuración, muy sencilla, se realiza a través de un único archivo de texto plano: /etc/vsftpd.conf. Para realizar cualquier cambio en la configuración editaremos este archivo con la orden:
$ sudo nano /etc/vsftpd.conf

Y una vez hechos los cambios reiniciaremos el servicio con la orden:
$ sudo /etc/init.d/vsftpd restart

Veamos ahora como cambiar la configuración por defecto para dejar el servicio a nuestro gusto con algunos ejemplos.

ACCESO ANÓNIMO

El acceso anónimo permitirá a cualquier persona que conozca nuestra dirección IP conectarse al servicio y navegar por el directorio /home/ftp. Este modo es idoneo para compartir archivos que no necesitan una especial protección.

Para permitir el acceso anónimo editaremos el archivo de configuración y nos aseguraremos de que contiene la linea:
anonymous_enable=YES

Para denegar el acceso anónimo editaremos el archivo de configuración y nos aseguraremos de que contiene la linea:
anonymous_enable=NO

ACCESO PRIVADO

El acceso privado permite establer nombres de usuario y contraseña para acceder al servicio, cada usuarió podrá acceder tan solo a sus propios archivos. Este es un sistema idóneo para organizar la información por usuarios y otorgar un cierto grado de seguridad a los archivos.

Para permitir el acceso privado editaremos el archivo de configuración y nos aseguraremos de que contiene la linea:
local_enable=YES

Para denegar el acceso privado editaremos el archivo de configuración y nos aseguraremos de que contiene la linea:
local_enable=NO

Una vez activado el acceso privado apuntaremos nuestro navegador o cliente de ftp a la dirección ftp://usuario:clave@localhost o ftp://usuario:clave@127.0.0.1, en caso de acceder desde un ordenador remoto deberemos usar nuestra IP privada (si conectamos desde dentro de una red local) o nuestra IP pública (si conectamos desde Internet):


Firefox mostrando el contenido privado de un usuario local


SEGURIDAD

Aunque la configuración por defecto es bastante segura podemos afinar un poco más este aspecto si nuestros datos lo requieren.

Para evitar que los usuarios registrados puedan salir de su directorio $HOME y navegar así por todo el sistema de ficheros editaremos el archivo de configuración y nos aseguramos de que contiene la linea:

root_local_user=YES

Limitar el numero máximo de conexiones simultaneas (para evitar ataques DoS) editaremos el archivo de configuración y nos aseguramos de que contiene las lineas:

listen=YES max_clients=10

Impedir que los usuarios puedan enviar archivos a nuestro servidor (opcion activada por defecto), editaremos el archivo de configuración y nos aseguramos de que contiene la linea:

write_enable=NO

Cambiar el puerto por el que escucha el servicio puede ayudar a evitar ataques automatizados e intrusos poco experimentados, para cambiarlo y usar por ejemplo el puerto 50 editamos el archivo de configuración y añadimos: listen_port=50

# Configuración para el servicio FTP service ftp

{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
per_source = 5
instances = 200
no_access = 192.168.1.3
banner_fail = /etc/vsftpd.busy_banner
log_on_success += PID HOST DURATION
log_on_failure += HOST
} # Fin del servicio FTP
-----------------------------------------------------------------------

SAMBA


Samba es una suite de aplicaciones Unix que habla el protocolo SMB (Server Message Block). Muchos sistemas operativos, incluídos Windows y OS/2, usan SMB para operaciones de red cliente-servidor. Mediante el soporte de este protocolo, Samba permite a los servidores Unix entrar en acción, comunicando con el mismo protocolo de red que los productos de Microsoft Windows. De este modo, una máquina Unix con Samba puede enmascararse como servidor en tu red Microsoft y ofrecer los siguientes servicios:

--> Compartir uno o más sistemas de archivos.

--> Compartir impresoras, instaladas tanto en el servidor como en los clientes.

--> Ayudar a los clientes, con visualizador de Clientes de Red.

--> Autentificar clientes logeándose contra un dominio Windows.

--> Proporcionar o asistir con un servidor de resolución de nombres WINS.

Samba es la idea de Andrew Tridgell, quien actualmente lidera el equipo de desarrollo de Samba development desde su casa de Canberra, Australia. El proyecto nació en 1991 cuando Andrew creó un programa servidor de ficheros para su red local, que soportaba un raro protocolo DEC de Digital Pathworks. Aunque él no lo supo en ese momento, aquel protocolo más tarde se convertiría en SMB. Unos cuantos años después, él lo expandió como su servidor SMB particular y comenzó a distribuirlo como producto por Internet bajo el nombre de servidor SMB. Sin embargo, Andrew no pudo mantener ese nombre -ya pertenecía como nombre de producto de otra compañía-, así que intentó lo siguiente para buscarle un nuevo nombre desde Unix:

grep -i 's.*m.*b' /usr/dict/words

y la respuesta fue:
salmonberry samba sawtimber scramble

ésta manera nació el nombre de Samba. Hoy, la suite Samba implica a un par de demonios que proporcionan recursos compartidos a clientes SMB sobre la red (las comparticiones son denominadas a veces también como servicios). Estos demonios son:

smbd

Un demonio que permite compartición de archivos e impresoras sobre una red SMB y proporciona autentificación y autorización de acceso para clientes SMB.

nmbd
Un demonio que busca a través del Windows Internet Name Service (WINS), y ayuda mediante un visualizador.

Samba se encuentra actualmente mantenido y es ampliado por un grupo de voluntarios bajo la supervisión activa de Andrew Tridgell. Al igual que el sistema operativo Linux, Samba es considerado por sus autores Open Source software (OSS), y es distribuido bajo la the GNU General Public License (GPL). Desde su concepción, el desarrollo de Samba ha sido patrocinado en parte por la Australian National University, donde Andrew Tridgell hizo su doctorado. En adición, algunas partes del desarrollo han sido patrocinadas por distribuidores independientes como Whistle and SGI. Es algo verdaderamente testimonial el que entidades tanto comerciales como no comerciales estén dispuestas a gastar dinero para dar soporte a un esfuerzo Open Source.

En el momento de la impresión de este libro, Andrew ha completado su trabajo de doctorado y ha pasado a formar parte de una compañía desarrolladora de Linux de San Francisco.

Microsoft también ha contribuido materialmente poniendo a disposición su definición de SMB y del Internet-savvy Common Internet File System (CIFS), como Public Request for Comments (RFC), y otros documentos estandar. El protocolo CIFS es el nuevo nombre de las futuras versiones del protocolo SMB que serán usadas en los productos Windows -los dos términos pueden ser usados aleatoriamente en éste libro-. De hecho, verás el protocolo escrito como "SMB/CIFS"

INSTALACIÓN

$ sudo apt-get install samba samba-client smbfs smbclient

esto debería instalar también varias otras dependencias.

HERRAMIENTAS

Tenemos variadas herramientas las cuales podemos utilizar para facilitar la configuración del servidor:

--> system-config-samba : Editor gráfico de configuración.
--> gadmin-samba : Editor gráfico de configuración Avanzado.
--> swat (Samba Web Administration Tool) : Permite administrar samba a través del navegador web en http://localhost:901

MANUALES

samba-doc : instala manuales en /usr/share/doc-base/ y /usr/share/doc/samba-doc/ como texto y html samba-doc-pdf : instala manuales en /usr/share/doc-base/ y /usr/share/doc/samba-doc-pdf/ con formato pdf.

CONFIGURACIÓN

La configuración del servidor samba se realiza en el archivo /etc/samba/smb.conf el cual podemos modificar de la siguiente manera:
$ sudo nano /etc/samba/smb.conf

PARA MODIFICAR EL GRUPO DE TRABAJO

Buscamos la línea que diga algo como :
workgroup = MSHOME
y reemplazamos MSHOME por el nombre de nuestro grupo de trabajo.

PARA COMPARTIR UNA CARPETA

OPCION 1

Primero debemos crear una carpeta con permisos (por ejemplo) :
$ sudo mkdir /home/publico
$ sudo chmod 755 /home/publico

Luego abrimos la configuración y le agregamos, al final, algo como esto :
[publico]
comment = Cosas publicas
path = /home/publico
public = yes
writable = no
Las opciones son sugerentes, por ejemplo "public = yes" es para que se pueda acceder a la carpeta cualquier usuario, y "writable = no" es para que no se pueda escribir.

OPCION 2

Para añadir los recursos con nautilus (navegador de archivos) debemos crear la siguiente carpeta con sus respectivos permisos:
$ sudo mkdir -p /usr/local/samba/lib/usershares
$ sudo chgrp sambashare /usr/local/samba/lib/usershares
$ sudo chmod 1770 /usr/local/samba/lib/usershares
Y luego agregas los siguientes parámetros a la configuración:
usershare path = /usr/local/samba/lib/usershares
usershare max shares = 10
Finalmente se pueden añadir carpetas en nautilus haciéndole click derecho, opción "opciones de compartición".

OPCION 3

Nos dirigimos al menú de Ubuntu: Sistema, Administración y seleccionamos Carpetas compartidas. Pulsamos añadir (en la imagen yo ya tengo añadida una carpeta, pero tú deberías tenerla en blanco) y nos aparecerá una imagen como la inferior.
Aumentar En ruta, buscamos la carpeta que queremos compartir, como nombre pondremos Compartidos (por ejemplo) y seleccionamos Permitir examinar la carpeta. Pulsamos sobre Configuracion general de archivos compartidos con Windows, en Dominio introducimos el nombre de red que posea la máquina Windows

PERMISOS

Los usuarios que ingresan a un recurso público, el sistema le da como nombre de usuario nobody y como nombre de grupo nogroup, es así como podemos cambiar el nombre de usuario y nombre de grupo a nuestras carpetas, con el fin de que el sistema también sepa quien es el propietario de esa carpeta:

$ sudo chown nobody:nogroup /home/publico
$ sudo chmod 555 /home/publico
y si queremos que también pueda escribir sobre esta carpeta
$ sudo chmod 755 /home/public
y además debemos decirle a Samba que se lo permita (acuerdate que para que un permiso sea válido, tanto el sistema como Samba deben estar de acuerdo)

1 comentario:

  1. Holaa, de casualidad sabes como puedo crear el servicio VSFTPD para un Controlador de Dominio Samba?

    ResponderEliminar