Suscribirse al Feed
07Nov

Arch Linux

arch linux logoHace un par de días que estoy usando con Arch Linux, y de momento me ha parecido genial! En este post voy a intentar recopilar todo lo que vaya aprendiendo con esta distro, así como poner algunos enlaces interesantes para todo aquel que se inicie con ella.

Primero explicar brevemente qué es Arch: una distro de Linux bastante ligera y que sigue el principio KISS (Keep It Simple, Stupid! - Mantenlo Simple Estúpido). Luego de instalado tendremos un sistema básico, sin interfaz gráfica, con nada más que lo necesario para comenzar a construir nuestro sistema encima.

Esto es una de las cosas que más me han gustado de Arch: NO te instala software que no quieres/necesitas. Esto es un gran alivio para mi, que vengo de usar Ubuntu, puesto que siento que realmente tengo el control de mi sistema. Además posee un gestor de paquetes (pacman) bastante sencillo de usar y rápido. [leer más].

Artículos interesantes de Arch Linux

Cabe decir que si eres una persona con pocos conocimientos de Linux y computación en general (doctores, abogados, lecheros, etc.), lo recomendable es que usen Ubuntu. Por otro lado, si ya tienes algo de experiencia, encontrarás que Arch es una joya.

14Oct

¿Cómo reconocer a un Linuxcerdo?

Un buen artículo que he leído en CL4551F13D, en donde el autor hace una dura, pero muy cierta, crítica a los usuarios linux radicales. Sin duda un artículo para reflexionar y leer con calma.

¿Cómo reconocer a un Linuxcerdo?

28Sep

3 ways to keep safe your files

One of the most important advantages that Linux has over Windows is the file security, but many users do not try to keep safe his private data. In this little guide I am going to talk about three ways to do that, in two of them we encrypt the files.

Let's do it, first in the easiest way:

  1. Set up basic permissions from a terminal
  2. Using CFS to encrypt folders
  3. Using TrueCrypt to create virtual encrypted disks


1. Set up basic permissions using a terminal

This is the simplest way to protect our data, in wich you only need to set up the correct permissions in order to ban the access to non-authorized users. The only thing you need to do is typing this command:

chmod -R u+wrx,og-wrx private

Where private is a folder where we have our confidential documents. -R means that chmod will assign that permission to all files and directories recursively . u+wrx assign permissions of writing, reading y execution to ourselves; while og-wrx remove permissions permisos writing, reading y execution to others users and groups.

Of course, this is the most primitive way, but most of people do not do that, wich means a big security problem. Let's continue with other methods more complex...


2. Using CFS to encrypt folders

CFS (Cryptographic Filesystem), is a file system that allows you to store and to recover encrypted data. CFS provides application-independent encryption/decryption of the filesystem layer that does not require modification of the underlying filesystem code nor any kind of modification of thekernel source.

Firstly, we must install CFS, for example from a Ubuntu or Debian distro:

sudo apt-get install cfs

Let's do a quick example… the idea is creating a folder named confidential where we will store the confidential data; we can do it with the command cmkdir:

/home/cris/ $ cmkdir confidential
Key: type_a_long_password
Again: type_the_long_password_again

We must specify a password with at least 16 characters; it is important not to forget it, otherwise we won't be able to recover the data again ;) In addition, it is not possible to access the folder that we have created, at least in plain text. But ¿how can we put files into the folder? In order to add files we must "mount" our directory in a separate folder with plain text access, using the cattach command:

/home/cris/ $ cattach /home/cris/confidential
key: type_the_long_password

That will create a folder named confidential in /crypt (/crypt/confidential), where we can access the files normally:

/home/cris/ $ cd /crypt/confidential
/crypt/confidential $ mv /home/cris/file.odt .
/crypt/confidential $ cat /etc/fstab > backup_fstab.bak
/crypt/confidential $ cd

All the files that we add on that directory will be crypted when we detach the folder:

/home/cris/ $ cdetach confidential

If we list the files on the /home/cris/confidential folder, we will see that CFS has crypted the files and filenames:

/home/cris/ $ ls confidential
37401e3e492f0bce 71d8783a255e3b68a8da544204eb3cad

That's it. Now on, when you want to access your encrypted data you can use the cattach command, and don't forget to detach it later using the cdetach command ;)

3. Using TrueCrypt to create virtual encrypted disks

This is in my own opinion the best way to encrypt our private data; TrueCrypt is a volume encryption system, wich is available for the most important distros, even of course Ubuntu. For installing it, you must download the installer for your distro. Now, if for example you have download the Ubuntu x86 one you must uncompress it and install the .deb package:

$ tar xvfz truecrypt-6.0a-ubuntu-x86.tar.gz
$ ./truecrypt-6.0a-setup-ubuntu-x86

You will see a window where you have the choice to extract the .deb package. That file will be sent to the /tmp folder, where you can install it easly using GDebi, or with the command:

$ sudo dpkg -i /tmp/truecrypt_6.0a-0_i386.deb

1 2
23Sep

Ejecutar Windows instalado en el disco duro desde Ubuntu usando VirtualBox

Muchas veces tenemos un sistema Windows instalado/configurado/personalizado antes de instalar nuestra distro favorita, y desearíamos no perder dicho trabajo y poder a la vez ejecutar aplicaciones nativamente para Windows desde nuestro querido Linux.

Lo que podemos hacer en este caso es crear una imagen de acceso virtual de nuestro disco duro, y con ella ejecutar Windows desde Linux. 

Paso cero (opional): muchas veces, cuando Windows inicia, éste reescribe información de drivers en su configuración, de acuerdo al hardware sobre el que corre. Por tanto, y para no correr riesgos de estropear nada, podríamos crear un nuevo perfil de hardware alterno. Para ello vamos a las propiedades de Mi PC, seleccionamos la pestaña Hardware y hacemos clic en Perfiles de hardware. Luego hacemos clic en Copiar y ya está, aceptamos todo, reiniciamos y volvemos a la tranquilidad de nuestro Linux.

Paso 1: crear imagen del disco duro

:~/.VirtualBox$ VBoxManage internalcommands createrawvmdk -filename $HOME/.VirtualBox/WinXP.vmdk -rawdisk /dev/sdb2 -relative -register

VirtualBox Command Line Management Interface Version 2.0.2
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

RAW host disk access VMDK file /home/cristian/.VirtualBox/WinXP.vmdk created successfully.

En realidad lo que se crea es un especie de "acceso directo" al disco, es decir, NO crea una imagen con los datos del disco duro sino acceso al mismo. 

Paso 2: añadir el disco duro virtual a VirtualBox

Abre VirtualBox y selecciona Archivo->Administrador de discos virtuales (File->Virtual Disk Manager en inglés), clic en el botón Añadir (Add) y seleccina el archivo que acabas de crear.

Paso 3: crear una nueva máquina virtual

Clic en el botón Nueva (New) y Siguiente (Next) en el asistente de creación de máquinas virtuales. Digita WinXP como nombre y selecciona Windows XP como tipo de máquina virtua, clic en Siguiente (Next). Leer el resto de la entrada...

10Sep

Wireshark, capturando paquetes

En esta pequeña guía aprenderemos a capturar paquetes con Wireshark, un proceso bastante sencillo e intuitivo. Lo primero, ejecutar el comando wireshark con lo cual aparecerá la interfaz gráfica.

Nota: Es necesario ejecutar Wireshark con privilegios de root, puesto que de lo contrario no podremos configurar las interfaces de red.

Vamos al menú Capture -> Options, con lo cual veremos lo siguiente:

wireshark capture options

  • Interface: es la tarjeta de red que utilizaremos para realizar la captura de los paquetes.
  • Capture packets in promiscuous mode: opción bastante importante. Al estar seleccionada Wireshark captura TODOS los paquetes que la interfaz reciba/envíe. Cabe hacer una pequeña aclaración: cuando tu equipo está conectado detrás de un hub, la tarjeta de red recibe TODOS los paquetes que transmitan/reciban los equipos conectados al mismo hub. Esto es porque, cuando el hub recibe un paquete lo reenvía a todos los puertos conectados, y es el computador quien decide que hacer con ellos (si el paquete es para él, lo recibe; si el paquete es para otro equipo, lo ignora). Esto no sucede así cuando estamos usando un Switch, puesto que cuando usamos una red switcheada se verifica el destinatario del paquete, antes de enviarlo. Luego veremos cómo vulnerar una red switcheada, de momento prosigamos.
  • Limit each packet to: límita el tamaño máximo de cada paquete capturado.
  • Capture filter: aunque en la siguiente entrada aprenderemos a usar esta característica, no está de más decir que sirve para asignar un filtro a la captura. Los filtros son útiles para mostrar sólo la información deseada, por ejemplo: paquetes enviados por la IP XX.XXX.XXX.XX, o sólo paquetes HTTP, etc.
  • File: aquí especificamos el archivo donde serán guardados los paquetes capturados. Es posible además separar los archivos cada vez que alcancen un tamaño, o cada cierto tiempo.
  • Stop capture: nos sirve para detener automáticamente una captura después de ciertas condiciones (tiempo, tamaño del archivo de captura y número de paquetes).
  • En las opciones de visualización (Display Options), es posible configurar a Wireshark para:
    • Actualizar el panel de paquetes cada vez que se capture uno (Update list of packets in real time)
    • Realizar un scroll-down cada vez que se capture un paquete (Automatic scrolling in live capture)
    • Ocultar el diálogo de información de captura (Hide capture info dialog)
  • Por último, las opciones de resolución de nombres (Name resolution) le indican a Wireshark si debe o no intentar resolver las direcciones MAC, el nombre de red y nombre del tipo de transporte, de los paquetes capturados.

Clic en Start para comenzar con la captura de paquetes:

live capture wireshark

Ahora mismo Wireshark está capturando todos los paquetes posibles de la interfaz de red seleccionada, y guardándolos en el archivo que hayamos especificado (lo que nos permite analizarlo en cualquier momento, reiteradamente, y con diversos programas). Aquí suelen surgir algunas preguntas:

¿Porqué solamente veo los paquetes que envía y recibe mi equipo?

Esto puede deberse principalmente a:

  1. Estás tratando de esnifar una red switcheada (que se conecta mediante un switch, y no un hub)
  2. Estás conectado a un hub que está configurado como un switch (mismo caso de arriba)
  3. No configuraste a Wireshark para que esnifara en modo promiscuo (Capture packets in promiscuous mode)

En caso tal que la conexión de tu red esté detrás de un switch, no es posible que veas los paquetes que transmiten y reciben otros equipos. Esto no quiere decir que sea imposible hacerlo; lo más común a realizar en estos casos es un ataque Man in the Middle a través de un ARP Poisoning. Estás técnicas son bastante fáciles de realizar (además de divertidas), pero se salen del tema de esta entrada. En las próximas entradas hablaremos al respecto.

¿Cómo obtengo datos específicos?

Para esto es imprescindible el uso de los filtros, sobre todo cuando los paquetes capturados son demasiados. Este tema lo trataremos en la próxima entrada.

¿Cómo recupero archivos enviados y recibidos mientras se realizaba la captura?

Esto es muy sencillo, pero lo explico en la próxima-próxima entrada :D

06Sep

[Tutorial] Evitar hotlinking y sacarle provecho

Muchos sitios que copian nuestro contenido, bien sea de manera automática o manual, cargan además las imagenes que tenemos alojadas en nuestro servidor, lo cual nos roba el ancho de banda que estamos pagando. La idea de esta pequeña guía es enseñarte cómo evitar que te hagan hotlinking, e ir un poco más allá. El hotlinking es una práctica detestable, aunque reconozco que yo mismo lo hice en mis tiempos de ignorancia suprema...

La técnica que utilizaremos consiste en editar el archivo .htaccess que tenemos en la raiz de nuestro servidor. Para los que no saben qué es .htaccess, me permito citar una definición:

es un archivo de configuración en un servidor Web, y contiene comandos en el lenguaje del servidor que le indican cómo debe comportarse en ciertas situaciones. Alguno de los usos más comunes de un archivo htaccess son la restricción del acceso a determinados archivos o carpetas en Internet (o en una intranet) mediante el uso de contraseñas. Adicionamente, los htaccess se usan para redirigir usuarios automáticamente, para bloquear o permitir el acceso al servidor a ciertas direcciones de IP, y para llamar páginas de error customizadas en lugar de las páginas de error 404 standard del servidor. Los servidores Web Apache, y otros servidores que cumplimentan las normas del NCSA pueden usar htaccess.

Además, es ampliamente utilizado por los bloggers, aún cuando no se den cuenta, puesto que es la manera en que Wordpress hace que las URL puedan ser del tipo http://ejemplo.com/url-muy-satanica, en vez de http://ejemplo.com/?p=666. De eso ya había creado un pequeño artículo, que no esta demás nombrar.

Entonces, la idea de este artículo es configurar nuestro servidor a través del .htacces para que realice algunas de las siguientes acciones:

No cargar imágenes alojadas en nuestro servidor en otras páginas

Vamos a tomar como ejemplo mi .htaccess, que de seguro será similar o igual al tuyo, si usas Wordpress. El archivo en cuestión es el siguiente:


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

Si deseamos que ninguna de nuestras imágenes puedan ser cargadas desde otro servidor, simplemente debemos añadir algunas líneas dejando el archivo en el siguiente estado:


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tuweb.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
</IfModule>

Donde debes cambiar tuweb, por el nombre de dominio de tu site o blog. Pero nada mejor que entender lo que significan estas extrañas líneas:

  • Las líneas del tipo RewriteCond %{HTTP_REFERER} !^http://tuweb.com$ [NC] básicamente le dicen al servidor que para una petición que no (NO = !) proceda de las URLs indicadas, debe crear una regla...
  • ... la regla es RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L], y lo que hace es prohibir (F) la carga de cualquier tipo de imagen (gif|jpg|jpeg|png|bmp), ignorar la diferencia entre mayúsculas y minúsculas (NC) de tal manera que sea igual una petición http://ejemplo.com/imagen.jPg que http://ejemplo.com/imagen.jPG, y por último la L indica que esa será la última regla en ejecutarse en caso de que se cumplan las condiciones.

Solo permitir que algunos sitios carguen nuestras imágenes

Para este caso, la idea es crear una lista blanca de los sitios que pueden cargar nuestras imágenes. Esto es útil, por ejemplo, para permitir a los lectores que nos sigan por medio del feed cargar las imágenes en Google Reader, NetVibes, etc.

Siguiendo con el ejemplo anterior nuestro .htaccess ahora deberá lucir de la siguiente manera:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tuweb.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
</IfModule>

Como ves, lo único que cambia es que añadimos las URL de los sitios permitidos, debajo del nuestro.

Cargar una imagen diferente

Lo típico a hacer aquí, es cargar una imagen que tenga nuestro logo y URL, de tal manera que los lectores del blog que nos hace hotlinking, se vean obligados a entrar a nuestro sitio si quieren ver nuestra imagen.

En este caso, lo que cambia es la última línea (RewriteRule), que es donde ordenamos al servidor a hacer una redirección:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://casidiablo.net$ [NC]
RewriteCond %{HTTP_REFERER} !^http://casidiablo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.casidiablo.net$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.casidiablo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ http://casidiablo.net/hotlink.png [R,NC,L]
</IfModule>

El único flag por explicar, teniendo en cuenta que ya explique el resto en el primer ejemplo, es R: redirecciona la petición a la URL indicada. Con esto cuando alguien intente poner la imagen en su Web, el resultado será el siguiente:

hotlinking frustrado

Cargar la misma imagen pero modificada (distorsionada, en blanco y negro, o con una marca de agua)

Este es mi método favorito, aunque requiere algo de programación en PHP. Puesto que el lector de la web que nos hace hotlinking no tiene la culpa, la idea es que hagamos algo más profesional: mostrar la imagen pero con modificaciones. Así, si nos robaran ésta imagen (de 103.95 KB), el navegador mostraría esto (una imagen de 9.01 KB):

hotlinking frustrado

Lo que se hizo fue lo siguiente:

  • Transformar la imagen JPG, lo cual hace que el ancho de banda utilizado sea menor
  • Reducir el tamaño la imagen, lo cual hace que el ancho de banda utilizado sea menor
  • Poner la imagen en blanco y negro, lo cual hace que el ancho de banda utilizado sea menor
  • Poner una marca de agua, para hacerle saber al lector a donde debe dirigirse
  • Mostrar un preview de la imagen original

Para lograr esto, debemos tener las librerías GD para PHP instaladas en el servidor (la mayoría los trae por defecto). Si deseas aprender a hacerlo, continúa leyendo la siguiente página...

1 2
© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS