Mostrando entradas con la etiqueta servidores. Mostrar todas las entradas
Mostrando entradas con la etiqueta servidores. Mostrar todas las entradas

lunes, 29 de febrero de 2016

Creación de un Hidden Service de Tor


Antes de comenzar esta PoC, queremos recalcar que está realizada con fines educativos y, sobre todo éticos. Y no nos hacemos responsables del mal uso que puedan darle.


Vamos a montar un Hidden Service, es decir, un servidor con dominio .onion, aumentando así la privacidad y anonimato del servicio dado. Este tipo de dominio conforman lo que se conoce como red Tor, perteneciente a la Deep Web.


Para realizar esta PoC, montaremos un servidor web en un entorno virtualizado (no por ello falso, ya que aún virtualizado estará en la red y será accesible) sobre GNU/Linux Debian.


¿Qué es Tor?
Tor (The Onion Routing) es una red de nodos distribuidos por el mundo, en el que los paquetes viajan por los mismos antes de llegar a su destino, ofreciendo privacidad y sobre todo anonimato. Cada nodo por el que pasa un paquete es cifrado por capas (e ahí el nombre de Onion).


La red de Tor forma parte además de la conocida Deep Web, en la que el anonimato, como arma de doble filo, es tanto usada con fines éticos (librerías, tutoriales de todo tipo, prensa sin censura) como con fines delictivos (pedofilia, mercado negro, servicios ilegales).


Tras esta breve introducción a Tor, si deseas más información, te dejamos algunos enlaces que pueden serte de utilidad: Wikipedia, Tor Project, Cómo empezar a usar Tor, Cómo funiona Tor.


Instalación del servidor web (LAMP)
Comenzamos con la instalación del servidor LAMP en nuestro Debian. LAMP es el acrónimo dado a la infraestructura del servidor web conformado por las siguientes herramientas: Linux + Apache + MySQL + PHP (A veces, MySQL puede ser sustituido por MariaDB, y PHP por Perl o Python). No vamos a entrar en detalles sobre la instalación, ya que realizaremos una instalación básica sin configuraciones extra. Anteriormente en este blog explicamos algo parecido.
Como Instalar Apache Mysql PHP en Debian


El proceso es sencillo y no ahondaremos en configuraciones, por lo que únicamente instalaremos los paquetes necesarios y editaremos el contenido de la página.



# apt-get install apache2 php5 libapache2-mod-php5 php5-mcrypt mysql-server php5-mysql




Comprobamos  el correcto funcionamiento de nuestro servidor web (conectándonos a la IP del servidor desde un navegador):




Editamos el contenido de la página. Éste se encuentra en la ruta /var/www/html.






Ya tenemos nuestro servidor LAMP corriendo, es el momento de instalar Tor y anonimizarlo, así como obtener el dominio .onion. Cabe destacar que en esta prueba de concepto no contemplamos todos los aspectos de seguridad, por lo que no se debe asumir que siguiendo estos pasos tendremos un servidor completamente seguro y anónimo, para lograr esto, debemos contemplar otras medidas de seguridad en el servidor, tales como detectores de intrusos, VPN, proxys, hardening del servidor, etc.


Instalación de Tor en nuestro servidor Debian
Antes de instalar Tor es necesario instalar algunos paquetes que permiten el correcto funcionamiento e instalación de Tor, los cuales son:


# apt-get install screen build-essential libevent-dev openssl zlib1g-dev libssl-dev




Una vez instalados, instalamos Tor con el gestor de paquetes apt-get.




El archivo de configuración, donde definimos los hidden service, se encuentra en /etc/tor/torrc. Accedemos y añadimos las siguientes líneas al final:




El parámetro “HiddenServiceDir” indica la ruta donde se almacena el contenido de la página. Nosotros hemos creado una carpeta dentro de /root denominada tor, donde alojaremos el index.html y el resto de contenido dela página.


El parámetro “HiddenServicePort” indicamos el puerto por el que accederemos al servidor. Podéis poner el que queráis, en mi caso he usado el puerto 80 (por defecto). Si elegimos un puerto extraño, deberemos configurar el archivo de configuración de Apache para que responda al mismo puerto además del archivo /etc/apache2/ports.conf.


Una vez guardado los cambios, reiniciamos el servidor y reiniciamos tor.




Arrancamos el servidor Tor con el siguiente comando:




Una vez terminado, listamos el contenido de la carpeta que hemos seleccionado para almacenar el Hidden Service, y veremos dos nuevos archivos junto al index.html.




¿Qué son? “private_key” almacena la clave privada del servidor.




El fichero “hostname”, almacena el dominio asignado .onion:




Para finalizar, únicamente debemos descargar el navegador de Tor (o acceder con un navegador con soporte para Tor) y veremos nuestra página. Editando el contenido podéis crear una página dinámica para objetivo que queráis, aunque eso es otro tema. (repetimos que no nos hacemos responsable del mal uso que puedan darle, puesto que es sólo para fines educativos y éticos).

sábado, 20 de febrero de 2016

Aplicaciones Web (I)

Buenos días hackers!
Esta es una entrada distinta y no menos importante. En informática una aplicación es un software que permite al usuario realizar una determinada tarea o servicio.
Una aplicación web es simplemente un software creado para ejecutarse mediante un navegador (el cliente). La diferencia clara con las aplicaciones de escritorio, es que estas pueden acceder a todo el hardware del ordenador. En una aplicación web el hardware queda oculto al programador.
Otra diferencia existente esta, en que los navegadores no tienen la capacidad para compilar código de lenguajes como C o Java, pero si tienen interpretes muy potentes para lenguajes como Javascript, como por ejemplo el motor V8 del navegador Chrome.
Existen unas ventajas y desventajas de las aplicaciones web frente a las aplicaciones de escritorio.

Ventajas:


  • Gran compatibilidad: No requieren un sistema operativo en concreto, tanto en entornos de escritorio como en móviles. El único requisito es disponer de un navegador instalado en el sistema.
  • Mantenimiento: Las aplicaciones web se actualizan, pero solo en el servidor donde se alojan, eso quiere decir que el usuario no tiene que actualizar nada y menos instalar nada en su ordenador. Como se dijo anteriormente únicamente del navegador (cliente).
  • Uso sencillo por los usuarios: El navegador es el software usado, y es bien conocido por todo el mundo con una interfaz gráfica sencilla e intuitiva. 
  • Datos almacenados en base de datos.
  • Bajo coste: No existe formato físico de la aplicación web, es digital donde el software se encuentra en Internet. 
  • Sencilla accesibilidad: Las aplicaciones web son accesibles desde cualquier máquina y desde cualquier parte del mundo. Existe una interrelación entre usuario y aplicación.


Desventajas:


  • Hardware desaprovechado: No es necesario tener un ordenador más o menos potente que otro, ya que las aplicaciones web depende únicamente del navegador.
  • Conectividad: Sin conexión a Internet, las aplicaciones web carecen de sentido. Aunque actualmente esto no es un problema ya que estamos interconectados. 
  • Dificultad para el desarrollador: Existe una dificultad clara para el programador frente a desarrollar una aplicación de escritorio. El proceso es diferente debido a la conexión a Internet, la depuración de código en diferentes lenguajes y la espera de peticiones a los servidores. 
  • Control excesivo de nuestra información: Una aplicación de escritorio, al poder estar offline nuestros datos e información se queda almacenada en nuestra máquina sin que exista peligro alguno, a no ser que exista conexión a internet y mediante un troyano nos puedan estar espiando de una forma u otra. En una aplicación web los datos se almacenan en servidores de bases de datos, dependemos de terceras personas y de la ética de la empresa que almacenan nuestros datos de que no se corra el peligro de fugas de información. Si una persona mal intencionada accede al servidor de base de datos, puede obtener información confidencial de miles o millones de usuarios, poniendo en peligro dicha integridad.  

Los lenguajes y tecnologías en el lado del cliente son los elementos, una vez traducidos, para ser interpretado por el navegador normalmente en un documento HTML.
El cliente realiza una petición http al servidor web a la espera de una página que contiene código HTML y otros elementos pertenecientes a otros lenguajes, como por ejemplo:


  • CSS: Es un lenguaje de estilos que permite modificar la apariencia de una web. Es importante debido a que el cliente, a parte de esperar una completa funcionalidad de la aplicación web, exige cierta belleza en la apariencia. 
  • Javascript: Es un lenguaje sencillo y potente interpretado, cuyo código se puede incluir en una página web. Permite cierto dinamismo en la página al igual que interactividad. También es un lenguaje en el lado del servidor, convirtiéndose en un lenguaje full-stack. 
  • Flash: Es un software que se suele incrustar en el código HTML de tipo object haciendo referencia a un archivo de tipo SWF. Los archivos reproducibles de Adobe Flash, que tienen generalmente la extensión de archivo SWF, pueden aparecer en una página web para ser vistos en un navegador web, o pueden ser reproducidos independientemente por un reproductor Flash.
  • Silverlight: Es similar al anterior, pero propietario de Microsoft. 
  • Applets de Java: Se incrusta en el código HTML con el nombre de applet. Estan escritos en el lenguaje de programación Java. Pueden ejecutarse en el navegador requiriendo de Java Virtual Machine (JVM). 

 Esquema de el lado del cliente: 


El cliente introduce una dirección para realizar una petición http al servidor web. Los paquetes http salen por el router domestico hasta nuestro proveedor de servicios (ISP), para realizar la petición al servidor web solicitando un recurso. El servidor web busca dicho recurso y envia al cliente un documento HTML con elementos incrustados (SWF, Javascript, applet de Java...) que será interpretado por el navegador. 
Una vez el navegador lo interpreta, muestra al usuario con un formato entendible.

En la actualidad están en desuso tecnologías avanzadas en el lado del cliente como puede ser Flash, debido al auge de HTML5. Sin embargo Javascript es cada vez más potente, obligando a los navegadores a procesar aplicaciones más avanzadas en este lenguaje. Todo el proceso descrito anteriormente es oculto al usuario, y con un fin favorable al no tener que instalar nada en su máquina, simplemente tener el navegador actualizado.
  

Funcionamiento del lado del servidor: La programación web como se explico antes, dista de una clara diferencia con la programación de aplicaciones de escritorio. Esta diferencia reside en que dependiendo del lado del cliente (navegador) o el lado del servidor (servidor web), se usará un distinto lenguaje de programación. 
Cuando el cliente hace una petición http a un recurso web, el servidor que contiene dicho recurso se encuentra con componentes del lado del servidor (PHP, .NET, Python...) y pide al servidor de aplicaciones la traducción en formato entendible por el cliente (navegador). El resultado lo envía el servidor web o servidor http al cliente. 
La mayoría de veces, las peticiones http son la entrega de un documento HTML.
Los servidores web tienen la capacidad de resolver las peticiones http, pero no traducen el código de los documentos que se entregan al cliente, es decir, se necesita de los servidores de aplicaciones para su traducción. 
Los servidores de aplicaciones traducen el código a través de lenguajes del lado del servidor como pueden ser Python, PHP o Java. Además el código del lado del servidor puede implicar el acceder a otros servidores como por ejemplo un servidor de base de datos.
Actualmente los servidores web actuan también como servidores de aplicaciones ya que estos son simples módulos de software, aunque es importante la diferencia ya que unos se encargan de resolver peticiones http y los otros de traducir lenguajes de servidor.

La ventaja existente de este funcionamiento es que la parte pesada se la lleva la parte del servidor en cuanto a trabajo de procesamiento se refiere.
Al ver la diferencia entre los distintos lados de este funcionamiento, es un proceso complejo el desarrollo web debido a la existencia de los elementos del lado del cliente (front-end) y del servidor (back-end). Por tanto habrá personal dedicada a distintos lenguajes de programación para una misma aplicación web.

Google Analytics