jueves, 3 de febrero de 2011

FTP EN SERVER 2008 (I) INSTALACIÓN DEL IIS

Para realizar algunas prácticas en Windows Server 2008 (http, dns, correo, ftp...) necesitamos tener instalado el servicio IIS.
Vamos a ello:

Vamos a: Inicio -> Administrador del Servidor o pulsáis el icono que aparece al lado del botón inicio
En el Administrador del Servidor seleccionáis la opción Funciones
Pulsamos el enlace donde pone Agregar funciones
Pasamos la primera pantalla y en la siguiente seleccionamos la opción Servidor web IIS
Al seleccionar el Servidor web IIS nos va a pedir instalar unas características requeridas para Servidores Web (IIS), la verdad es que hay que decir sí, porque si cancelas no se instala el IIS.
Pulsamos siguiente y en la siguiente pantalla nos hace una breve descripción de lo que estamos instalando, podemos dar siguiente otra vez y en esta pantalla hay un listado de opciones para instalar en el servidor IIS, como puede ser: ASP.NET, CGI, Redireccionamiento HTTP,...etc.

Una vez tenemos todas las opciones que queremos seleccionadas pulsamos siguiente y después de la ventana de resumen instalamos.
Cuando la instalación acaba hay un resumen de la instalación y ya tenemos el IIS 7 listo para trabajar, vamos a: Inicio -> Herramientas Administrativas -> Administrador de Internet Information Services (IIS) y nos aparece el IIS
Si abrimos el árbol del IIS y nos ponemos encima del Default Web Site,
a la derecha, en el menú lateral pulsamos Examinar *:80(http) y nos aparecerá la página del IIS 7
 
También podemos abrir el navegador y poner http://localhost

Servidor VSFTPD

Servidores FTP

El Protocolo de Transferencia de Archivos (FTP) es un protocolo TCP para subir y descargar archivos entre ordenadores. El FTP funciona según el modelo cliente/servidor. El componente servidor se denomina demonio FTP. Está continuamente escuchando peticiones FTP de clientes remotos. Cuando se recibe una petición, gestiona la creación de la sesión y establece la conexión. Durante la duración de la sesión ejecuta las órdenes enviadas por el cliente FTP.
El acceso a un servidor FTP puede hacerse de dos maneras:
  • Anónimo
  • Autenticado
En el modo Anónimo, los clientes remotos pueden acceder al servidor FTP usando la cuenta de usuario por defecto llamada «anonymous» o "ftp" y enviando una dirección de correo como contraseña. En el modo Autenticado los usuario deben poseer una cuenta y su contraseña. El acceso del usuario a los directorios u ficheros del servidor FTP dependerá de los permisos definidos para la cuenta utilizada. Como regla general, el demonio FTP oculta el directorio raíz del servidor FTP y lo cambia por el directorio de inicio del FTP. Esto oculta el resto del sistema de archivos en las sesiones remotas.



vsftpd - Instalación del Servidor FTP

vsftpd es un demonio FTP disponible en Ubuntu. Es fácil de intalar, configurar y mantener. Para instalar vsftpd ejecuta el siguiente comando:

sudo apt-get install vsftpd 

vsftpd - Configuración del Servidor FTP

Puedes editar el archivo de configuración de vsftpd, /etc/vsftpd.conf, para cambiar las opciones por omisión. De forma predeterminada, sólo se permiten los accesos FTP anónimos. Si deseas desactivar esta opción, debes cambiar la siguiente línea:

anonymous_enable=YES
por
anonymous_enable=NO
De forma predeterminada, los usuarios locales del sistema no pueden  iniciar una sesión al servidor FTP. Para cambiar esto, debes descomentar  la siguiente línea: 
 
#local_enable=YES
De forma predeterminada, los usuarios pueden descargar archivos desde  el servidor FTP. Sin embargo, no pueden subir archivos al servidor FTP.  Para cambiar esto, debes descomentar la siguiente línea:

#write_enable=YES
Del mismo modo, de forma predeterminada, los usuarios anónimos no  pueden subir archivos al servidor FTP. Para cambiar esta opción, debes  descomentar la siguiente línea:

#anon_upload_enable=YES
El archivo de configuración consta de muchos parámetros de  configuración. La información sobre cada parámetro se encuentra  disponible en el archivo de configuración. Además, puedes consultar la  página del manual, man 5 vsftpd.conf, para conocer más detalles sobre  cada parámetro. 
Una vez que haya configurado vsftpd puede ejecutar el demonio. Puedes ejecutar el siguiente comando para lanzar el demonio vsftpd :

sudo /etc/init.d/vsftpd start 

Comandos FTP en Consola Linux

Comandos FTP para usar desde consola Linux

OPEN

Con este comando se abre una sesión con el ftp seleccionado. Este comando no funcionaria sin previamente haber establecido conexión con el servidor FTP:
    ftp 212.152.1.22

CLOSE

Como es evidente, con este comando se cierra sesión.

GET

Este comando probablemente es el más utilizado ya que es el que se utiliza para bajarte los ficheros del servidor remoto de FTP. Tienes que estar en el directorio del servidor remoto donde está el archivo que quieres recibir. Se copiará en el directorio en local en el que estés.
    get fichero.txt

PUT

Este como el segundo es muy utilizado haciendo justo lo contrario, subiendo los ficheros al servidor de FTP. Los archivos de origen los toma del ordenador local, del directorio donde estés situado en local. Se suben al directorio remoto donde estés situado.
    put fichero.txt

LCD

Específica el directorio local sobre el que vamos a trabajar, es decir donde colocaremos los archivos que queremos compartir con el servidor remoto.

CD

Este comando actúa de la misma forma que en MS-DOS es decir, se utiliza para moverse a través de los directorios del servidor de FTP.

LCD

Tiene la misma función que el anterior pero este aplicado a tus directorios locales.

LS

Con este comando sacamos una lista de directorios y archivos encontrados en el servidor, actúa de la misma forma que en el interprete de comandos en Linux.

DELETE

Cuidado con este comando, que solo se puede aplicar al servidor remoto, ya que se utiliza para borrar archivos que se encuentren en dicho servidor con el que estamos conectados. Sólo podrán utilizarlo usuarios que tengan los permisos adecuados.

APPEND

Permite reanudar una descarga que por cualquier motivo haya sido interrumpida. Este comando puede resultar muy útil cuando intentemos descargas archivos bastante pesados, que tarden mucho tiempo, ya que puedes reanudar la descarga en el punto donde la dejaste.

MPUT

Este comando nos permite subir varios archivos a la vez al servidor en remoto, es bastante útil cuando se necesitan subir varios archivos.

MGET

Hace la operación inversa que el anterior, es decir, descarga varios archivos del servidor en remoto, a la vez.

USER

Con este comando cambiamos de usuario e iniciamos sesión con otro usuario distinto.

BYE

Por ultimo hay un comando que cierra la sesión y sale del programa de ftp de forma que todas las sesiones abiertas se cierran.

EL SERVICIO FTP

1.- Introducción.

El servicio FTP (File Transfer Protocol, Protocolo de Transferencia de Ficheros), es un de los mas antiguos dentro de Internet. Es un servicio que los usuarios lo utilizan frecuentemente (descarga de drivers, música, documentos, etc.), pero esto es sólo una parte del servicio, ya que también es posible, implementar en nuestra máquina, un servidor FTP para que otros usuarios se puedan conectar a nuestra computadora y recoger/dejar información en una zona concreta. Existen dos tipos de transferencias:
  • Descarga (download). Consiste en traer un archivo a nuestro ordenador desde un servidor remoto. También se dice "bajar un archivo".
  • Carga (upload). Consiste en llevar un archivo desde nuestro ordenador a un servidor. También se dice " subir un archivo".
El servicio FTP (File Transfer Protocol),es por tanto un servicio que se utiliza para transferir información, almacenada en ficheros, de una máquina remota a otra local, o viceversa. Para poder realizar esta operación es necesario conocer la dirección IP (o el "nombre") de la máquina a la que nos queremos conectar para realizar algún tipo de transferencia.
Es fundamental distinguir entre máquina local y máquina remota:
  • MAQUINA LOCAL: Es aquella desde donde nos conectamos para hacer la transferencia, es decir, donde ejecutamos ftp.
  • MAQUINA REMOTA: Es aquella a la que nos conectamos para transferir información.
El servicio FTP se puede realizar a través de los navegadores de Internet (Firefox, Chrome, Internet Explorer...), así como a través de clientes FTP.
Los servidores FTP controlan el acceso de los usuarios a su sistema de carpetas. Esto quiere decir que, para conectarse a un servidor FTP, necesitamos un usuario (login) y una contraseña (password). Se ofrece una alternativa de acceso no autentificado: el usuario anonymous, que no lleva contraseña. Normalmente, este usuario tiene los permisos restringidos. 

2.- Tipos de FTP.

 
Existen tres tipos de FTP:
  • FTP Anónimo: Cualquiera puede descargar un archivo sin identificarse.
  • FTP Autenticado: Hay que conectarse al servidor utilizando un nombre y una contraseña.
  • FTP Embebido: Es el que se realiza desde las páginas Web, a través de navegadores. Es una opción dentro del FTP Anónimo.
En resumen, el FTP Anónimo/Embebido se utiliza normalmente para el download y el FTP Autenticado para el upload.


El FTP anónimo es un servicio que nos permite acceder a ficheros que están situados en un ordenador sin tener cuenta o estar registrados en él. Se accede utilizando el usuario especial anonymous y la contraseña es nuestra dirección de correo electrónico (por cortesía, como mínimo). Está específicamente orientado para trabajar con ficheros, cuyo contenido puede ser de lo más variado (texto, fotos, software, ejecutables...) y la transferencia se puede realizar entre ordenadores con distintos sistemas operativos y entre distintas redes, siempre que se tenga una aplicación que maneje este servicio.
Los servidores de FTP anónimo son los que permiten que cualquiera que esté conectado a Internet se conecte a ellos y descargue archivos. Es por ello que se utilizan para poner a disposición del gran público todo tipo de archivos.
Es la mejor alternativa al envío de mensajes de correo electrónico con ficheros grandes, ya que evita que los mensajes atraviesen varios servidores, saturándolos. Dichos ficheros se colocan en el servidor FTP anónimo y pueden ser recogidos por quien los necesite de una manera rápida y eficaz.
Para recoger un fichero, se necesita saber obligatoriamente el ordenador en el que está y se recomienda conocer la localización del fichero a transferir y el tipo de fichero, para saber si después de transferido, se disponen de las herramientas adecuadas para manejarlo como se desea.
Es muy recomendable guardar los archivos que descarguemos en un directorio temporal, ya que siempre vendrán comprimidos y su directorio final será probablemente otro distinto al de descarga. De esta forma siempre conservaremos el archivo comprimido inicial en un lugar localizado.


El FTP Autenticado se utiliza para conectarse a un servidor y enviar/recibir archivos a/desde un directorio para luego hacerlos públicos/privados. Por ejemplo, si deseásemos colocar estas páginas en Internet, habría que enviarlas al servidor. Pero, por otro lado, no nos gustaría que cualquiera pudiese acceder a ellas para cambiarlas o eliminarlas. Por tanto, se necesita un protocolo con contraseña.

Como se ha comentado antes, el FTP Embebido es una parte del FTP Anónimo que se realiza desde los navegadores Web. Es quizá el mas popular hoy día, ya que las descargas se realizan haciendo clic en determinados enlaces desde la Web. Una vez hecho el clic, se inicia el proceso de descarga, solicitando desde el navegador, la ubicación del fichero dentro de nuestro equipo.
Hay que tener en cuenta que, normalmente este tipo de FTP, es mas lento que el que se realiza con clientes FTP pero es mas cómodo al no tener que saber manejar nada mas que el navegador Web.
 
 
3.- Servidores FTP.
 
El servidor FTP es el software que tienen instalado las máquina que ofrecen servicio de FTP a la Comunidad Internet. El servidor de archivos debe admitir las transferencias de tipo FTP, por lo que deberá ser un ordenador especialmente preparado para esta tarea.
Los servidores FTP de Internet son en su inmensa mayoría sistemas UNIX/LINUX aunque se puede montar un servidor FTP en nuestro ordenador. Para ello, necesitaremos un programa específico; hay varios muy populares, gratuitos, algunos incluso en castellano.
Los servidores FTP controlan el acceso de los usuarios dentro de su sistema de carpetas. Esto quiere decir que, para conectarse a un servidor FTP, necesitamos un usuario (login) y una contraseña (password). Se ofrece una alternativa de acceso no autentificado: el usuario anonymous, que no lleva contraseña. Normalmente, este usuario tiene los permisos restringidos.
 
4.- Clientes FTP.

El acceso convencional a los servidores FTP se realiza por medio de programas cliente específicos para el protocolo FTP, que permiten cosas como la transferencia de grupos de ficheros o directorios completos. Es la forma más fácil de transferir archivos entre un PC y un servidor remoto, por tanto, para ficheros grandes es mejor utilizar Clientes FTP que el correo electrónico. Los clientes FTP más utilizados son:
  • En Microsoft Windows: WS-FTP y CuteFTP o Filezilla
  • En Linux: ncftp (en modo consola) y gFTP o Filezilla (gráfico).

sábado, 29 de enero de 2011

APACHE EN UBUNTU

APACHE es un servidor web HTTP que podemos instalar en Ubuntu desde el terminal:
$ sudo apt-get install apache2
El sistema nos pedirá instalar otros paquetes adicionales:
apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
Descargará poco más de 3 Mb y se ocuparán 10,5 Mb de espacio en el disco duro. Al terminar, podemos comprobar que el servidor esta configurado para iniciarse con el sistema si escribimos:
$ ls /etc/init.d/apache2
y recibimos como respuesta:
/etc/init.d/apache2
Esto quiere decir que se ha creado el guión de inicio del servidor.
El servidor ya debe estar iniciado al acabar la instalación pero por si falla, podemos iniciar el servicio manualmente, así como detenerlo o reiniciarlo. Basta con usar la orden que necesitemos de entre las siguientes:
$ sudo /etc/init.d/apache2 start
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/apache2 restart

Ahora al hacer start, debería decirnos que el servicio ya se ha iniciado:
$ sudo /etc/init.d/apache2 start
* Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.1.1 for ServerName
httpd (pid 2523) already running


Se puede comprobar haciendo un listado de los procesos cargados y que se estén ejecutando actualmente con el comando:
$ ps -ef | grep apache
Que por ejemplo puede devolver:
root 2523 1 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2525 2523 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2526 2523 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2527 2523 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
emi 3230 3015 0 13:32 pts/1 00:00:00 grep --color=auto apache

Ahora podemos también verificar que el servidor está funcionando correctamente, basta con acceder a la dirección http://localhost/, que es la dirección local de una máquina (equivale a http://127.0.0.1/).
En el navegador veremos una página de confirmación:

HTTP

Hypertext Transfer Protocol o HTTP (protocolo de transferencia de hipertexto) es el protocolo usado en cada transmisión de lared. El HTTP fue desarrollado por el World Wide Web Consortium y la Internet Engineering Task Force, colaboración que culminó en 1999 con la publicación de una serie de RFC, el más importante de ellos es el RFC 2616 que especifica la versión 1.1. HTTP define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. Al cliente que efectúa la petición (un navegador web o un spider) se lo conoce como "user agent" (agente del usuario). A la información transmitida se la llama recurso y se la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden ser archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la traducción automática de un documento, etc.
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado.

Primeros Servidores

  • CERN httpd Server
  • NCSA httpd server
  • Compuserve httpd server

Métodos de Petición

HTTP define 8 métodos (algunas veces referido como "verbos") que indica la acción que desea que se efectúe sobre el recurso identificado. Lo que este recurso representa, si los datos pre-existentes o datos que se generan de forma dinámica, depende de la aplicación del servidor. A menudo, el recurso corresponde a un archivo o la salida de un ejecutable que residen en el servidor.
HEAD
Pide una respuesta idéntica a la que correspondería a una petición GET, pero sin el cuerpo de la respuesta. Esto es útil para la recuperación de meta-información escrita en los encabezados de respuesta, sin tener que transportar todo el contenido.
GET
Pide una representación del recurso especificado. Por seguridad no debería ser usado por aplicaciones que causen efectos ya que transmite información a través de la URI agregando parámetros a la URL.
Ejemplo:
GET /images/logo.png HTTP/1.1 obtiene un recurso llamado logo.png
Ejemplo con parámetros:
/index.php?page=main&lang=es
POST
Somete los datos a que sean procesados para el recurso identificado. Los datos se incluirán en el cuerpo de la petición. Esto puede resultar en la creación de un nuevo recurso o de las actualizaciones de los recursos existentes o ambas cosas.
PUT
Sube, carga o realiza un upload de un recurso especificado (archivo), es el camino más eficiente para subir archivos a un servidor, esto es porque en POST utiliza un mensaje multiparte y el mensaje es decodificado por el servidor. En contraste, el método PUT te permite escribir un archivo en una conexión socket establecida con el servidor.
La desventaja del método PUT es que los servidores de hosting compartido no lo tienen habilitado.
Ejemplo:
PUT /path/filename.html HTTP/1.1
DELETE
Borra el recurso especificado.
TRACE
Este método solicita al servidor que envíe de vuelta en un mensaje de respuesta, en la sección del cuerpo de entidad, toda la data que reciba del mensaje de solicitud. Se utiliza con fines de comprobación y diagnostico.
OPTIONS
Devuelve los métodos HTTP que el servidor soporta para un URL especifico.Esto puede ser utilizado para comprobar la funcionalidad de un servidor web mediante peticion en lugar de un recurso especifico
CONNECT

Códigos de respuesta

Son códigos de tres dígitos:
  • 1xx Mensajes
Descripción
100 111 Conexión rechazada
  • 2xx Operación exitosa
Descripción
200 OK
201-203 Información no oficial
204 Sin Contenido
205 Contenido para recargar
206 Contenido parcial
  • 3xx Redireción
Descripción
301 Mudado permanentemente
302 Encontrado
303 Vea otros
304 No modificado
305 Utilice un proxy
307 Redirección temporal
  • 4xx Error por parte del cliente
Descripción
400 Solicitud incorrecta
402 Pago requerido
403 Prohibido
404 No encontrado
409 Conflicto
410 Ya no disponible
412 Falló precondición
  • 5xx Error del servidor
Descripción
500 Error interno
501 No implementado
502 Pasarela incorrecta
503 Servicio nodisponible
504 Tiempo de espera de la pasarela agotado
505 Versión de HTTP no soportada

TÚNELES SSH

Ssh nos ofrece entre otras cosas una consola remota segura, ftp seguro, X forwarding y lo que hoy vamos a ver, túneles a través del protocolo ssh. Básicamente hay dos tipos, túnel en modo listen y en modo remote; empezaré por el primero, que es el que más comúnmente suelo usar.

Imaginemos que estamos por ejemplo en un aula de ordenadores en una biblioteca o en la universidad. Queremos conectar a nuestro emule en el puerto 4080 de nuestro ordenador sobremesa, para poder ver como van esas descargas o bien añadir algo que nos han recomendado para bajar, por poner un ejemplo. Pero claro sólo tenemos el router configurado para que funcione con los puertos de emule y el ssh hacia un ordenador cualquiera de nuestra red. Suponemos que el servicio ssh está corriendo en la misma máquina que el emule, que esta máquina se llama en la red molongo y que tiene la ip 192.168.1.110, ssh está en esta máquina en el puerto 22, sin embargo el router redirecciona el puerto 4422 al 22 de esa máquina.
Según esto, si queremos hacer sesión ssh tendríamos que ejecutar el comando ssh -p 4422 usuario@nombre_de_maquina_en_internet así conectaríamos haciendo sesión ssh al puerto 22 del ordenador de sobremesa. Pero realmente lo que queremos es tener acceso al puerto 4080, donde podemos conectar a la interfaz web de emule. Recordemos que no tenemos acceso desde internet a ese puerto, pues no tenemos las reglas de redireccionamiento activadas en el firewall de nuestro router, así que haremos un túnel del puerto 4080 del sobremesa molongo al puerto 8888 del ordenador desde el que estamos accedidendo.
El comando sería: ssh -p 4422 -L 8888:localhost:4080 usuario@nombre_de_maquina_en_internet
Con este comando conseguimos una sesión ssh, pero además el túnel, ahora si abrimos el navegador web y ponemos la dirección http://localhost:8888 veremos lo mismo que si ponemos http://localhost:4080 en molongo.
Ahora veamos cómo se sabe qué es cada opción, -p es para decir qué puerto usamos para la sesión ssh, por defecto es 22, pero en nuestro router hemos abierto el 4422 direccinoado al 22 de molongo. -L es para hacer un túnel en modo listen y se especifica puerto_local:maquina_remota:puerto_remoto, debemos tener en cuenta que puerto_local es el puerto al que queremos llevar el puerto_remoto mediante el túnel y que maquina_remota es el nombre o ip de la máquina visto siempre desde la máquina en la cual está ejecutando el sshd al que estamos conectando. En el ejemplo anterior también funcionaría si pusiéramos molongo o 192.168.10.110 en lugar de localhost.
Si quisiéramos conectar a otra máquina de la red, en lugar de al sobremesa, por ejemplo a un servidor web que tengamos para acceder sólo desde nuestra red local, bastaría con substuir localhost por la ip o el nombre de esa máquina y también el puerto por el que queremos acceder, por ejemplo quedaría -L 8888:servidorweb:80.
Por otro lado tenemos el túnel en modo remoto, que es algo más extraño. Imaginemos que lo que queremos es acceder al servidor web para administrarlo, usando para ello una sesión ssh, este servidor no tiene acceso desde internet, pues está detrás de un firewall y no diponemos de puertos que redireccionen a él. En este caso el comando lo ejecutamos en el servidor web, de manera que lo que hacemos en este caso es decirle que haga un túnel para llevar el puerto 22 local al puerto 5522 de un equipo que sea accesible desde internet. ssh -p 4422 -R 5522:localhost:22 usuario@nombre_de_maquina_en_internet.
La opción -N es para que no ejecute ningún comando remoto, y la opción -f para que pase a segundo plano.