Skip to main content

Instalar LAMP con un solo comando en Ubuntu

Atención, este artículo está desactualizado y puede no ser válido para ediciones recientes de Ubuntu

¿Qué es LAMP?

LAMP es el acrónimo de Linux + Apache + MySQL + PHP, y describe una plataforma de desarrollo web que utiliza Linux como Sistema Operativo, Apache como servidor Web, MySQL como Sistema Gestor de Bases de Datos relacional y PHP como lenguaje de programación.

¿Qué necesito para instalarlo?

Para instalarlo necesitas tener cualquier distribución Linux, yo usaré Ubuntu 10.10 como sistema operativo (aunque el proceso debería ser similar en otras distribuciones), y descargar una aplicación de Debian llamada tasksel. Esta aplicación, agrupa varias aplicaciones por tareas y ofrece al usuario una manera fácil de instalar paquetes según tus necesidades. Para instalarlo, necesitamos escribir en un terminal

pedro@pedro-laptop:~$ sudo apt-get install tasksel

Ya tengo tasksel, ¿y ahora qué?

Una vez instalado, ejecutamos tasksel que será el que haga todo lo necesario para preparar nuestro entorno LAMP

pedro@pedro-laptop:~$ sudo tasksel
Menú inicial de tasksel
Menú inicial de tasksel

Una vez lleguemos a este menú, solo tendremos que seleccionar LAMP Server utilizando la barra espaciadora, y ya que estamos, puedes instalar cualquier otra cosa que necesites. Despues sólo tienes que ir al botón de Ok utilizando el tabulador, y empezará la instalación!

Proceso de instalación de LAMP
Proceso de instalación de LAMP

Deberemos rellenar la contraseña que queramos poner al usuario root de MySQL (y luego nos pedirá repetirla por si acaso).

Contraseña de root en MySQL
Contraseña de root en MySQL

Y ya está listo!!

Podemos comprobar si Apache está funcionando abriendo nuestro navegador favorito y escribiendo http://127.0.0.1/ en la barra de direcciones. Si aparece la siguiente imagen, es que Apache funciona bien!!

Comprobación de Apache
Comprobación de Apache

Apache funciona, pero ¿qué pasa con PHP?

Para probar PHP, puedes generar un phpinfo. Para hacerlo sólo tienes que crear un archivo que se llame /var/www/phpinfo.php. Puedes hacerlo de la siguiente manera:

pedro@pedro-laptop:~$ nano /var/www/phpinfo.php

Y escribir en el editor:

<?php
phpinfo();
?>

Si al visitar http://127.0.0.1/phpinfo.php aparece algo similar a lo que se muestra en la imagen siguiente, es que todo está correcto.

Comprobación de PHP
Comprobación de PHP

¿Ya está? Qué facil!

Ya estas preparado para empezar a programar. El directorio al que apunta por defecto Apache, es /var/www, es allí donde está ubicado index.html y phpinfo.php con el que hemos probado el funcionamiento de Apache y PHP respectivamente.

Personalmente, como complemento imprescindible a todo LAMP, simpre instalo phpmyadmin, un gestor para MySQL que nos facilitará mucho las cosas cuando queramos trabajar con Bases de Datos. Para hacerlo:

pedro@pedro-laptop:~$ sudo apt-get install phpmyadmin

Durante el proceso de instalación nos preguntará qué servidor web es el que utilizaremos, en nuestro caso Apache, así que lo seleccionamos con el espacio y presionamos Ok.

Instalación de phpMyAdmin
Instalación de phpMyAdmin

A continuación nos preguntará si queremos que se configure automáticamente o por el contrario no hacer nada. Si te atreves a configurarlo manualmente (modificando los archivos de configuración) haz clic en No, pero es más cómodo hacer clic en Yes.

Instalación de phpMyAdmin
Instalación de phpMyAdmin

También necesitaremos proporcionar la contraseña que previamente habíamos utilizado al configurar MySQL, así que la escribimos (luego nos la volverá a pedir para confirmar).

Instalación de phpMyAdmin
Instalación de phpMyAdmin

Ahora también tenemos listo nuestro phpMyAdmin. Podemos comprobar que funciona correctamente si visitamos http://127.0.0.1/phpmyadmin.

Comprobación de phpMyAdmin
Comprobación de phpMyAdmin

Voilà!! Ya podemos crear fácilmente tablas, bases de datos para jugar con MySQL!! 😀

Página principal de phpMyAdmin
Página principal de phpMyAdmin

Al final no ha sido un solo comando, pero casi!! Ahora nos queda lo más divertido: empezar a programar en PHP para hacer aplicaciones libres!!

Galaxy Live Wallpaper

galaxy-live-wallpaper Galaxy Live Wallpaper es un plugin para Compiz que hace que aparezca como wallpaper una galaxia animada, y nada de un video, sino una animación en toda regla, en la que puedes controlar el ángulo de visión, velocidad, tamaño de las estrellas, y demás cosas… Cabe decir es la primera versión ßeta de este plugin y que SOLO funcionará en Ubuntu 10.10 (por el momento).

La página del desarrollador de este software, con el manual detallado de instalación, es esta, pero si estas utilizando Ubuntu Maverick, sólo tienes que seguir estos pasos para instalarlo:

1. Añade al final del fichero /etc/apt/sources.list las siguientes lineas (recuerda que debes ser root para poder modificarlo):

deb http://ppa.launchpad.net/ilap/lwp/ubuntu maverick main
deb-src http://ppa.launchpad.net/ilap/lwp/ubuntu maverick main

2. Actualiza los repositorios escribiendo en un terminal:

sudo apt-get update

3. Para instalarlo escribe:

sudo apt-get install compiz compizconfig-settings-manager compiz-fusion-plugins-extra compiz-plugins-livewallpapers

El siguiente paso que haremos es cambiar el fondo de pantalla, haciendo clic con el botón derecho en el escritorio » Cambiar el fondo del escritorio » Añadir » en el directorio /usr/share/backgrounds encontrarás la imagen Space_by_ilap.jpg » Abrir

Ahora hay que activar el plugin de compiz, para hacerlo vamos a Sistema » Preferencias » Administrador de Opciones CompizConfig. Al abrirse el administrador, verás una categoría llamada “Live Wallpapers”. Haz clic y actívala seleccionando la opción “Enable Galaxy Live Wallpaper”.

Ya lo tienes!! para activar o desactivar el fondo de escritorio molón, sólo tienes que presionar Super (tecla de windows)+F4 y aparecerá la galaxia dando vueltas!! 😀

Os dejo con el video para que veáis como queda:

Terminales para Gnome

Hace algún tiempo estuve buscando por internet alternativas al terminal de Gnome, porque – llamadme antiguo – el terminal es mucho más rápido para hacer muchas cosas que cualquier entorno gráfico, por muy bonito que pueda resultar compiz fusion.

Me encontré con un par de aplicaciones que me han gustado mucho y resultan muy cómodas en el día a día.

Terminator
La primera es terminator, que a pesar de tener un nombre muy peliculero es muy cómodo cuando necesitas tener varios terminales a la vista. Puedes instalarlo en Ubuntu simplemente escribiendo esto en tu terminal (para otras distribuciones y MacOS, visitad la página oficial)

sudo apt-get install terminator

Una vez instalado podreis encontrarlo en Aplicaciones » Accesorios » Exterminador

Aplicaciones - Accesorios - Exterminador
Aplicaciones » Accesorios » Exterminador

Lo bueno de este terminal es que, haciendo clic con el botón derecho, puedes realizar subdivisiones en horizontal y en vertical para obtener tantos terminales como necesites…

terminator
terminator con 3 divisiones, perfecto para jugar con aircrack 😛

Bueno, en la siguiente imagen quizás me he pasado un poco…

terminator
terminator con 7 divisiones

Nautilus-Terminal
La otra aplicación que encontré se llama nautilus-terminal, la verdad es que esta aplicación no deja de ser gnome-terminal, aunque esta vez integrado en cada ventana de nautilus de una forma muy discreta. En cada ventana aparece una pequeña zona con un botón que pone Mostrar. Al hacer clic se despliega dentro de la propia ventana un pequeño terminal listo para usar. Incluso puedes arrastrar archivos para no tener que escribir su ubicación. Para instalarlo escribe en un tu terminal:

sudo add-apt-repository ppa:flozz/flozz && sudo apt-get update && sudo apt-get install nautilus-terminal

Aquí van un par de capturas de cómo usarlo después de haberlo instalado.

nautilus-terminal
nautilus-terminal

Si conocéis alguno otro interesante escribid un comentario.. Quiero probarlos todos!!

Instala LibreOffice desde repositorios en Ubuntu

Se han configurado unos repositorios de LibreOffice – el sucesor de OpenOffice, para Ubuntu, Linux Mint y otras distribuciones Debian.
Este repositorio realiza una instalación del reciente fork de la suite ofimática, aún en beta, pero todo un alivio para muchos usuarios.
LibreOffice
Abre un terminal y escribe el siguiente comando

sudo echo “deb http://download.tuxfamily.org/gericom/libreoffice / #gericom@hummer” | tee -a /etc/apt/sources.list

wget deb http://download.tuxfamily.org/gericom/gericom.asc -q -O- | sudo apt-key add –

Y para acabar…

sudo apt-get update && sudo apt-get install libreoffice

para instalar la nueva suite ofimática.

Instala LibreOffice desde repositorios en Ubuntu

Se han configurado unos repositorios de LibreOffice – el sucesor de OpenOffice, para Ubuntu, Linux Mint y otras distribuciones Debian.
Este repositorio realiza una instalación del reciente fork de la suite ofimática, aún en beta, pero todo un alivio para muchos usuarios.
LibreOffice
Abre un terminal y escribe el siguiente comando

sudo echo “deb http://download.tuxfamily.org/gericom/libreoffice / #gericom@hummer” | tee -a /etc/apt/sources.list

wget deb http://download.tuxfamily.org/gericom/gericom.asc -q -O- | sudo apt-key add –

Y para acabar…

sudo apt-get update && sudo apt-get install libreoffice

para instalar la nueva suite ofimática.
fuente: omgubuntu

Cosas de Google que quizás no conocías

Google Logo
Google Logo

Escrito por Pedro Carrasco

Que Google es un gigante entre los grandes es algo que todos sabemos. Dicen por ahí que todo lo que toca Google se convierte en oro, pero no es así. Google también tiene más de un proyecto que no acaba de despegar o que ha sido totalmente un fracaso. Por ejemplo:

  • Google X. No, no es un buscador de fotos porno, sino un proyecto que empezó a desarrollar el 15 de Marzo de 2005, y que abandonó un día despues. Al parecer pretendían diseñar un Dock al más puro estilo OSX aunque se arrepintieron pronto.
  • Otro buen ejemplo de que hay productos de Google que no acaban de cuajar es Google Checkout. Este servicio compite directamente con PayPal, el cual parece imbatible hoy en dia. Si compras algo por internet, el vendedor al menos te ofrecerá dos opciones: PayPal o Tarjeta de crédito. Google Checkout pasa muy desapercibido, aunque habrá que esperar qué le depara en el futuro, todavía puede darnos sorpresas.
  • Orkut es una red social promovida por Google que nació en 2004, pero que no acabó de tener demasiado éxito excepto en India y en Brasil, donde se llevan un 37% y 50% del pastel de las visitas a redes sociales. A pesar de que Google se adelantó a Facebook en 3 años, los más de 350 millones de usuarios dejan claro cual es la red social por excelencia.
  • A pesar de que Google compró Youtube, el portal de videos por excelencia, parece que fue una maniobra para hacer pasar desapercibido otro fracaso: Google Video. Aunque ahora Google Video sea un buscador, en sus inicios era más bien una especie de portal donde podías subir videos tal y como ahora se hace en Youtube.
  • Uno de sus últimos fracasos ha sido Google Wave. Tras su lanzamiento a bombo y platillo en 2009, sólo ha tenido que pasar algo más de un año para que el proyecto sea abandonado.

Google Wave Logo

Pero claro, todos estos fracasos de Google son experiencias de las que aprenden para mejorar y saber hacia donde dirigir su siguiente proyecto. Por eso no es de extrañar que otros productos sean todo un éxito. Como ejemplos basta con nombrar Gmail, Google Maps, Street Views, Google Earth, Google Chrome, Google Analytics, Google Adsense, Google Adwords, Google Calendar, Google Docs, Google News, Android, Google Talk, sin olvidarse del propio buscador Google.

Pero esta empresa nunca deja de sorprendernos. Siempre está investigando, desarrollando, probando, ofreciendo nuevos servicios y productos. Hay muchos que sólo se asoman tímidamente por Google Labs sin que mucha gente se haga eco. Veamos algunos de ellos:

  • Google Badge es una pequeña utilidad para Google Talk que nos permite introducir una ventana de chat en nuestra propia web o blog, de manera que si algún visitante pasa por allí y resulta que estamos conectados en ese momento puede hablarnos directamente. Nosotros recibiremos una conversación normal de Google Talk, pero en vez de ser de alguien de nuestra lista de amigos, será de alguien llamado Anónimo.
  • Google Scribe, es un servicio con el que podrás escribir cualquier texto sin tener que escribirlo. El sistema te va proponiendo palabras o frases que suelen utilizarse en ese contexto y sólo tienes que ir seleccionando el número que corresponde a la frase que quieres escribir. La verdad es que creo que será un buen servicio que nos ayudará a redactar documentos muy correctos y muy rápidamente. Sólo falta esperar que lo hagan disponible en otros idiomas, de momento sólo está en inglés.
  • En algunos vídeos de Youtube existe una función muy interesante: La transcripción y traducción automática. La idea es genial! Tú hablas en cualquier idioma en youtube, él reconoce la voz y la transcribe automáticamente a modo de subtítulos. Y además lo traduce al idioma que quieras!! Automáticamente!! Fuera barreras idiomáticas!! Aquí tienes un video con transcripción automática. Haz clic en el botón cc para activarlo.
  • Con Image Swirl puedes buscar imágenes por parecido y de una forma muy visual. Pruébalo, en ocasiones puede resultar interesante.
  • A pesar de que Open Spot sólo funciona en teléfonos Android, es una aplicación a destacar. Open Spot permite a la gente que abandona un aparcamiento de coche pueda avisar a otros usuarios que buscan sitio para aparcar de que allí ahora hay un nuevo sitio libre. Ayudando a otros a encontrar aparcamiento ahorras tiempo, gasolina, reduces la contaminación y además vas reuniendo puntos. Es como un juego!! Si alguien lo prueba que me cuente qué tal funciona en Barcelona!!
  • Google Energy
    Google Energy

    Pero Google no sólo se queda en Internet. Google también se está haciendo un hueco entre las compañías eléctricas. En Estados Unidos dispone de licencia como operador eléctrico y se hace llamar Google Energy. Eso sí, fieles a su lema «Don’t be evil», obtienen la energía de manera renovable mediante paneles solares.

  • Google Translator también es un servicio muy conocido. Pero, como curiosidad, ¿sabías que también traduce al Latín? y no sólo eso, además te lo grava en piedra tal y como se hacía en la época: prueba con «la suerte está echada» ya verás!!
  • Estos de Google no paran. Ayer mismo presentaron un nuevo formato de imagen que desbancará (o debería) al anticuado JPEG. El formato se llama WebP y es capaz de ofrecer la misma calidad o más que JPEG, pero con ratios de compresión de hasta un 75% más que hasta ahora.

Google está creciendo a un ritmo imparable. Mirándolo bien, si sigue creciendo será más fácil acabar trabajando en Google! Aunque sea en Google Burger…

Dropbox: Ahora hasta 10Gb gratis!

Artículo escrito por Pedro Carrasco

Ríos de tinta se han escrito sobre esta genial herramienta: Dropbox. Para el que todavía ande un poco despistado os contaré qué hace este software. Se trata, a mi parecer, del más sencillo sistema de sincronización de archivos en la nube: eso que está tan de moda que ahora llaman cloud computing.

Personalmente utilizo Dropbox para:

  • Hacer backups automáticos de cosas importantes.
  • Compartir archivos (música, fotos, videos, documentos de texto, etc..) con mis amigos mediante un enlace.
  • Enviar archivos de gran tamaño directamente al disco duro de otros usuarios de Dropbox.
  • Restaurar copias de archivos antiguos. Algo así como el Time Machine de Apple, pero en la nube.
  • Generar documentos colaborativos. Un archivo compartido que cada usuario modifica cuando lo necesita.
  • Si cambias de PC o formateas no pierdes información. Sólo instalando Dropbox tendrás de nuevo todos los ficheros que hayas elegido.

Además, el programa te permite disponer de los archivos que quieras en cualquier ordenador (o dispositivo) del mundo en el que tengas instalado Dropbox!! Incluso entre distintos usuarios si compartes carpetas!! Y lo mejor es que puede utilizarse en Linux, Mac, Windows, Android, Blackberry, iPhone, iPad o simplemente a través de la web. Y con una capacidad de hasta 10Gb totalmente gratis. Empiezan ofreciéndote 2Gb, que se incrementa en +250Mb cada vez que invitas a algún amigo.

Cada vez que quieras compartir un documento o foto sólo tienes que copiarlo en tu carpeta Dropbox y aparecerá como por arte de magia, en todos los ordenadores en los que tengas Dropbox instalado. También podemos obtener un enlace que si lo enviamos a cualquier persona, podrá descargar el archivo sin que sea usuario de Dropbox. Otra funcionalidad que nos ofrece es poder recuperar versiones antiguas de ficheros que ya han sido modificados. Pudiendo restaurarlo en cualquier fecha, incluso si el fichero ya ha sido borrado de tu disco duro.

Lo mejor es que lo pruebes tú mismo y veas lo útil que resulta.

Para instalarlo, es tan sencillo como registrarse aquí introduciendo tus datos (el email es importante que sea válido). ¡Recuerda los datos introducidos porque luego los necesitaremos!

Tras registrarte comenzará automáticamente la descarga del programa. Al acabar, deberás instalar haciendo doble clic en el archivo para instalarlo.

Una vez instalado, preguntará si queremos crear una cuenta nueva o utilizar una existente. Haremos clic en utilizar una cuenta existente y después en Siguiente (Next).

Es en este paso donde rellenaremos el campo email y password con los datos que hemos utilizado al principio.

Nos preguntará qué tipo de cuenta queremos, en la mayoría de casos, al menos al principio para probarlo, utilizaremos la cuenta gratuita. Así que seleccionamos la primera opción, que nos ofrece 2Gb para empezar.

Para finalizar la instalación, nos pregunta si queremos añadir un acceso directo en el escritorio (por defecto viene marcado) y si queremos modificar la ubicación de la capeta Dropbox, que por defecto será Mis Documentos, hay que seleccionar la opción marcado en rojo.

Y ya tenemos el programa listo para usar. Una gran herramienta que desde hace más de un año se ha convertido para mi en imprescindible. Ahora es más fácil que nunca tener todos los documentos de la universidad en cualquier ordenador sin tener que cargar con un pendrive a todos lados. O subir los videos de las vacaciones para que cualquiera que queramos pueda descargarlo con un enlace (es mejor que megaupload!!!).

Dropbox: Ahora hasta 10Gb gratis!

[30-sep-2010] UPDATE!! Ahora te duplican el espacio si eres estudiante, visita http://db.tt/edu e indica tu correo electrónico con extensión .edu y a disfrutar de hasta 20Gb!! 😀

Ríos de tinta se han escrito sobre esta genial herramienta: Dropbox. Para el que todavía ande un poco despistado os contaré qué hace este software. Se trata, a mi parecer, del más sencillo sistema de sincronización de archivos en la nube: eso que está tan de moda que ahora llaman cloud computing.

Personalmente utilizo Dropbox para:

  • Hacer backups automáticos de cosas importantes.
  • Compartir archivos (música, fotos, videos, documentos de texto, etc..) con mis amigos mediante un enlace.
  • Enviar archivos de gran tamaño directamente al disco duro de otros usuarios de Dropbox.
  • Restaurar copias de archivos antiguos. Algo así como el Time Machine de Apple, pero en la nube.
  • Generar documentos colaborativos. Un archivo compartido que cada usuario modifica cuando lo necesita.
  • Si cambias de PC o formateas no pierdes información. Sólo instalando Dropbox tendrás de nuevo todos los ficheros que hayas elegido.

Además, el programa te permite disponer de los archivos que quieras en cualquier ordenador (o dispositivo) del mundo en el que tengas instalado Dropbox!! Incluso entre distintos usuarios si compartes carpetas!! Y lo mejor es que puede utilizarse en Linux, Mac, Windows, Android, Blackberry, iPhone, iPad o simplemente a través de la web. Y con una capacidad de hasta 10Gb totalmente gratis. Empiezan ofreciéndote 2Gb, que se incrementa en +250Mb cada vez que invitas a algún amigo.

Cada vez que quieras compartir un documento o foto sólo tienes que copiarlo en tu carpeta Dropbox y aparecerá como por arte de magia, en todos los ordenadores en los que tengas Dropbox instalado. También podemos obtener un enlace que si lo enviamos a cualquier persona, podrá descargar el archivo sin que sea usuario de Dropbox. Otra funcionalidad que nos ofrece es poder recuperar versiones antiguas de ficheros que ya han sido modificados. Pudiendo restaurarlo en cualquier fecha, incluso si el fichero ya ha sido borrado de tu disco duro.

Lo mejor es que lo pruebes tú mismo y veas lo útil que resulta.

Para instalarlo, es tan sencillo como registrarse aquí introduciendo tus datos (el email es importante que sea válido). ¡Recuerda los datos introducidos porque luego los necesitaremos!

Tras registrarte comenzará automáticamente la descarga del programa. Al acabar, deberás instalar haciendo doble clic en el archivo para instalarlo.

Una vez instalado, preguntará si queremos crear una cuenta nueva o utilizar una existente. Haremos clic en utilizar una cuenta existente y después en Siguiente (Next).

Es en este paso donde rellenaremos el campo email y password con los datos que hemos utilizado al principio.

Nos preguntará qué tipo de cuenta queremos, en la mayoría de casos, al menos al principio para probarlo, utilizaremos la cuenta gratuita. Así que seleccionamos la primera opción, que nos ofrece 2Gb para empezar.

Para finalizar la instalación, nos pregunta si queremos añadir un acceso directo en el escritorio (por defecto viene marcado) y si queremos modificar la ubicación de la capeta Dropbox, que por defecto será Mis Documentos, hay que seleccionar la opción marcado en rojo.

Y ya tenemos el programa listo para usar. Una gran herramienta que desde hace más de un año se ha convertido para mi en imprescindible. Ahora es más fácil que nunca tener todos los documentos de la universidad en cualquier ordenador sin tener que cargar con un pendrive a todos lados. O subir los videos de las vacaciones para que cualquiera que queramos pueda descargarlo con un enlace (es mejor que megaupload!!!).

Fragmentación IP

La fragmentación IP es una técnica utilizada para dividir los datagramas IP en fragmentos de menor tamaño. Ésto es necesario ya que cuando los datagramas IP viajan de un lugar a otro, éstos pueden atravesar diferentes tipos de redes y el tamaño máximo -llamado MTU– de estos paquetes puede variar dependiendo del medio físico utilizado para la transmisión.

El valor máximo que técnicamente puede utilizarse para un datagrama IP es de 65536 bytes, aunque en la práctica se utilizan otros tamaños mucho más pequeños:

  • Ethernet: 1518 bytes (típicamente 1500 bytes).
  • PPPoE: 1492 bytes.
  • ATM: 8190 bytes.
  • FDDI: 4470 bytes.
  • PPP: 576 bytes.

Veamos cómo funciona esta técnica con más detalle. La cabecera IP, que suele tener un tamaño de 20 bytes, contendrá la siguiente información:

  • Identificador de fragmento. Cada Fragmento debe asociarse con un único identificador para que el reensamblaje en destino pueda realizarse correctamente.
  • Información sobre la posición en el paquete final.
  • Información sobre el tamaño de los datos que se transportan en el fragmento.
  • Cada fragmento debe contener el bit MF (More Fragments) para saber si el fragmento actual es el último o no.

Así que la figura de un paquete de máximo tamaño que no necesite fragmentación en una red típica Ethernet sería algo así:

Paquete de 1500 bytes
Paquete de 1500 bytes

Si sumamos la cabecera y los datos encapsulados, tenemos que en total hacen 1500 bytes, por lo que al viajar por una red Ethernet, no sería necesaria su fragmentación.

Los datos encapsulados pueden ser tanto un protocolo IP como TCP, UDP o ICMP. Veamos un ejemplo en el que se tenga que utilizar la fragmentación. Este es un ejemplo anormalmente grande, pero en el que podremos ver cómo se realiza el proceso de fragmentación. Se trata de una petición echo que pasa por una red Ethernet con MTU de 1500 bytes.

Proceso de fragmentación de un paquete de 4028 bytes
Proceso de fragmentación de un paquete de 4028 bytes

En el paquete original, la suma de las cabeceras y los datos ICMP suman 4028 bytes. Este paquete al ser transmitido en una red Ethernet deberá ser fragmentado, generandose así 3 paquetes de 1500 bytes o menos. Cada fragmento llevará obligatoriamente al menos la cabecera IP (necesaria para saber hacia dónde se dirige el fragmento), que en este caso ocupa 20 bytes, así que tendremos realmente 1480 bytes útiles.

El primer fragmento contendrá la Cabecera IP + la cabecera ICMP + la información restante para llegar a 1500 bytes, en este caso 1472 bytes. Puesto que es el primer fragmento, el valor de Offset valdrá 0 y el bit MF valdrá 1 ya que hay más paquetes.

El segundo fragmento contendrá la Cabecera IP + la información restante para llegar a 1500 bytes, en este caso 1480. Ahora el valor de Offset valdrá 1480, ya que es la posición que debe ocupar al ensamblar el fragmento (recordemos que el primer fragmento tenía 8+1472 = 1480). El bit MF valdrá 1 ya que no es el último paquete.

El tercer fragmento contendrá la Cabecera IP + la información restante, en este caso 1048 bytes (ya no hay más bytes). El valor de Offset valdrá 2960, ya que el primer y segundo fragmento ocupaban 1480 cada uno. El bit MF se establece a 0 porque es el último fragmento del paquete.

El campo Protocol sólo indica a qué tipo de protocolo corresponde el paquete original. ID fragmento indica un identificador que será igual para todos los fragmentos del paquete original, así se podrá reconstruir en destino sin confusión. El bit MF (more fragments) se establecerá a 1 siempre, excepto para el último paquete, que será 0. El Offset nos indica la posición que ocupa cada fragmento dentro del paquete original. El campo Tamaño, simplemente registra el tamaño del fragmento actual sin contar la Cabecera IP.

Una vez conocemos a grosso modo cómo funciona esto de la fragmentación, explicaré por encima, cómo un usuario malintencionado puede utilizar este procedimiento para realizar un ataque.

El ataque más conocido que explota la fragmentación IP se llama Teardrop. Este ataque usará información falseada en los fragmentos para poder confundir el reensamblaje en destino y colapsar así el sistema.

Imaginemos que tenemos un MTU de 512 bytes y un paquete que necesita ser dividido en N fragmentos y utilizamos los campos Tamaño y Offset de la siguiente manera:

Offset Tamaño
Fragmento 1 0 512
Fragmento 2 500 512
Fragmento N 10 100

Al reconstruir el paquete en destino se producirá un error de desbordamiento de buffer (buffer overrun), ya que el fragmento N apunta a un lugar en el que ya se había escrito previamente y obliga a sobreescribirse.

Otro ataque interesante es enviar cientos o miles de fragmentos manipulados con diferentes ID de fragmento contra la máquina que se desea atacar, de manera que agotemos los recursos de reensamblaje del equipo atacado; acabaremos colmando la pila en la que reconstruye estos paquetes, y no aceptará ninguno más, generando así un ataque de Denegación de Servicio (DoS).

Afortunadamente, a dia de hoy, este tipo de ataques no suelen ser efectivos. Los sistemas operativos vulnerables son Windows 3.1x, Windows 95, Windows NT y las versiones inferiores a Linux 2.0.32, así como la 2.1.63.

Otro día hablaré del famoso ping de la muerte! 🙂

Manual práctico de hping

Artículo escrito por Pedro Carrasco

Que es y para qué sirve

La herramienta hping es un analizador/ensamblador de paquetes TCP/IP de uso en modo consola. Está inspirado en el comando ping de unix, aunque a diferencia de éste, hping no solo es capaz de enviar paquetes ICMP sino que además también puede enviar paquetes TCP, UDP, y RAW-IP.

Todo esto quiere decir, que con esta herramienta, podemos generar paquetes TCP/IP a medida, que contengan la información que queramos. Esto puede resultar muy interesante para poder efectuar auditorías de red y poder así prevenir ataques malintencionados.

Descarga e instalación

La instalación de esta herramienta, al menos en Ubuntu, es realmente sencilla, como la mayoría de aplicaciones. Tan sólo hay que abrir una consola y escribir como root:

root@laptop:/home/root# apt-get install hping3

Para más información puedes consultar la web oficial aquí.

Diferentes usos y su sintaxis

El uso más sencillo que podemos darle es como sustituto de la herramienta ping, aunque veremos que la información que nos aporta es algo diferente. Vamos a comparar ambas herramientas:

root@laptop:/home/root# ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.016 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.017 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.023 ms
^C
— localhost ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.016/0.019/0.023/0.002 ms

root@laptop:/home/root# hping3 localhost
HPING localhost (lo 127.0.0.1): NO FLAGS are set, 40 headers + 0 data bytes
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.1 ms
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.1 ms
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=0 flags=RA seq=2 win=0 rtt=0.0 ms
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=0 flags=RA seq=3 win=0 rtt=0.0 ms
^C
— localhost hping statistic —
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.0/0.1 ms

En ambos casos, la información que nos proporciona es muy similar, salvo algún pequeño matiz como el campo de flags, que a continuación veremos de qué se trata.

También podemos utilizarlo como scanner de puertos, utilizando el método idle scan (por cierto, método ideado por Salvatore Sanfilipo, el mismo creador de hping), la sintaxis es la siguiente:

root@laptop:/home/root# hping3 -S localhost -p 9091
HPING localhost (lo 127.0.0.1): S set, 40 headers + 0 data bytes
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=9091 flags=SA seq=0 win=32792 rtt=0.1 ms
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=9091 flags=SA seq=1 win=32792 rtt=0.1 ms
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=9091 flags=SA seq=2 win=32792 rtt=0.1 ms
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=9091 flags=SA seq=3 win=32792 rtt=0.0 ms
^C
— localhost hping statistic —
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.1/0.1 ms

Si nos fijamos en el valor del flag, veremos que pone SA, que quiere decir SYN/ACK, que a grosso modo es el mensaje que un servidor responde cuando tiene un puerto abierto (en mi caso tengo un pequeño servidor web en el puerto 9091). Si hubiera estado cerrado, nos habría respondido con el flag RA, que quiere decir RST/ACK, o lo que es lo mismo, que tiene el puerto cerrado; veámoslo utilizando otro puerto distinto:

root@laptop:/home/root# hping3 -S localhost -p 9092
HPING localhost (lo 127.0.0.1): S set, 40 headers + 0 data bytes
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=9092 flags=RA seq=0 win=0 rtt=0.0 ms
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=9092 flags=RA seq=1 win=0 rtt=0.1 ms
^C
— localhost hping statistic —
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.0/0.1 ms

En este caso nos responde con un RST/ACK, lo que nos indica que el puerto 9092 está cerrado.

Otro uso que podemos darle es como herramienta traceroute, aunque para este uso, prefiero tcptraceroute, veamos cómo hacerlo con hping:

root@laptop:/home/root# hping3 pedrocarrasco.org -t 1 −−traceroute
HPING pedrocarrasco.org (wlan0 174.132.157.133): NO FLAGS are set, 40 headers + 0 data bytes
hop=1 TTL 0 during transit from ip=10.109.8.1 name=UNKNOWN
hop=1 hoprtt=0.9 ms

El campo ip=10.109.8.1, hace referencia a la IP del primer salto que realiza para llegar al dominio especificado. Ésto lo hemos especificado poniendo -t 1 (también podemos utilizar el comando -z en vez de -t, e incrementar el TTL cuanto queramos de uno en uno presionando Ctrl+Z).

Además podemos “firmar” los paquetes que enviemos, con el contenido que queramos. Aunque este ejemplo es inocuo, utilizándolo (in)debidamente podríamos causar diversas alteraciones en la máquina destino. Veámos el ejemplo:

root@laptop:/home/root# cat firma.txt
esto es solo un ejemplo
root@laptop:/home/root# hping3 -2 -p 7 localhost -d 50 -E firma.txt
HPING localhost (lo 127.0.0.1): udp mode set, 28 headers + 50 data bytes
[main] memlockall(): Success
Warning: can’t disable memory paging!
ICMP Port Unreachable from ip=127.0.0.1 name=localhost
status=0 port=1963 seq=0

Estableciendo la opción -2 enviamos paquetes UDP, con la opción -d 50 indicamos la longitud del mensaje y con la opción -E indicamos que lea del archivo firma.txt. Podemos ver lo que hemos enviado si capturamos con cualquier sniffer (yo he usado wireshark) el tráfico de la red.

Firmar paquetes con hping
Firmar paquetes con hping

Otra interesante habilidad de hping es poder enviar archivos a través de la red. Para esto, necesitamos una máquina que envíe algún archivo, y otra que esté a la escucha para recibirlo. Primero, preparamos la máquina que permanecerá a la escucha, para ello utilizaremos el parámetro −−listen en el que especificaremos el texto que nos servirá de indicador de inicio de mensaje (en este caso utilizo signature), el protocolo que usaremos es ICMP y lo establecemos utilizando el parámetro −−icmp (también puede usarse UDP o TCP). Al ejecutarlo veremos algo así:

root@laptop:/home/root# hping3 localhost −−listen signature −−safe −−icmp
Warning: Unable to guess the output interface
hping3 listen mode
[main] memlockall(): Success
Warning: can’t disable memory paging!

Ahora toca preparar por otro lado el comando que nos servirá para enviar el fichero que queramos.

root@laptop:/home/root# hping3 localhost −−icmp -d 50 −−sign signature −−file firma.txt
HPING localhost (lo 127.0.0.1): icmp mode set, 28 headers + 50 data bytes
[main] memlockall(): Success
Warning: can’t disable memory paging!
len=78 ip=127.0.0.1 ttl=64 id=5268 icmp_seq=0 rtt=0.1 ms
len=78 ip=127.0.0.1 ttl=64 id=5287 icmp_seq=1 rtt=0.1 ms
len=78 ip=127.0.0.1 ttl=64 id=5289 icmp_seq=2 rtt=0.1 ms
len=78 ip=127.0.0.1 ttl=64 id=5291 icmp_seq=3 rtt=0.1 ms
len=78 ip=127.0.0.1 ttl=64 id=5293 icmp_seq=4 rtt=0.1 ms
len=78 ip=127.0.0.1 ttl=64 id=5295 icmp_seq=5 rtt=0.1 ms
len=78 ip=127.0.0.1 ttl=64 id=5297 icmp_seq=6 rtt=0.1 ms

El resultado es que en el lado en que estábamos esperando recibir algo, empieza a verse lo siguiente:

root@laptop:/home/root# hping3 localhost −−listen signature −−safe −−icmp
Warning: Unable to guess the output interface
hping3 listen mode
[main] memlockall(): Success
Warning: can’t disable memory paging!
esto es solo un ejemplo
esto es solo un ejemplo
esto es solo un ejemplo
esto es solo un ejemplo
esto es solo un ejemplo
esto es solo un ejemplo

Conociendo este último uso, y con un poco de imaginación podremos utilizar hping como si de un troyano se tratase. Aunque mas que para ser usado como troyano, esta herramienta es perfecta para realizar ataques de DoS, spoof o flood. Acabaremos el artículo viendo un sencillo ejemplo de ataque flooding:

root@laptop:/home/root# hping3 −−rand-source −−flood localhost
HPING localhost (lo 127.0.0.1): NO FLAGS are set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
^C
— localhost hping statistic —
189742 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

Podemos ver que en tan solo unos segundos, hemos inundado la red con casi doscientos mil paquetes transmitidos de forma ininterrumpida. Esto puede (suele) causar que la red se colapse, impidiendo a otros usuarios poder utilizarla, ya que hping no deja espacio (entre paquete y paquete) para que otras máquinas transmitan ningún tipo de información. El parámetro −−rand-source hace que cada paquete tenga un origen distinto y aleatorio, y −−flood no deja espacio entre paquete y paquete. Si tenemos wireshark a la escucha, podemos ver cual es el resultado:

hping-flood
hping-flood

Ahora os toca practicar con hping para aprender más sobre el protocolo TCP/IP y sus debilidades. No creo que haga falta decirlo, pero por si acaso aviso de que el uso malintencionado de esta herramienta puede ser ilegal, así que utilizad esta información de un modo educativo o para auditar vuestra propia red.