Senda Oscura

Linux y Seguridad

Archive for May, 2008


Dual Monitor en Linux

En esta receta voy a explicar un método muy sencillo para tener nuestro Linux conectado a dos monitores. Una advertencia, puede que no funcione en todo tipo de tarjetas de video. Yo la he probado con una Intel 945GM/GMS (driver i810), pero he leído que también funciona perfectamente con las ATI Radeon. Bien, manos a la obra.

1. Conectamos los dos monitores (obviamente)

2. Editamos el xorg.conf

Editamos el fichero de configuración de las X (/etc/X11/xorg.conf) y añadimos la directiva Virtual dentro de los sitios adecuados de la sección Screen, así es como quedaría:

Section “Screen”
Identifier “Default Screen”
Device “Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller”
Monitor “Monitor genérico”
DefaultDepth 24

SubSection “Display”
Depth 24
Modes “1440×900″ “1024×768″ “800×600″ “640×480″
Virtual 2880 900
EndSubSection
EndSection

Los valores de la sección virtual corresponden al tamaño total de la pantalla cuando activemos el modo multimonitor. En este caso mis monitores están conectados uno al lado del otro, por eso he duplicado el tamaño horizontal. Si los monitores estuvieran uno encima del otro, duplicariamos el tamaño vertical. Por supuesto, no es necesario que tengan la misma resolución los dos monitores, pero yo los configuraré con la misma.

3. Reiniciamos las X

4. Consultamos los monitores conectados

$ xrandr -q

Screen 0: minimum 320 x 200, current 1440 x 900, maximum 2880 x 900
VGA connected (normal left inverted right)
640×480        60.0
LVDS connected 1440×900+0+0 (normal left inverted right) 304mm x 190mm
1440×900       60.0*+
1280×800       60.0
1280×768       60.0
1024×768       60.0
800×600        60.3
640×480        59.9
TV disconnected (normal left inverted right)

5. Añadimos y activamos nueva resolución para el monitor

Si no nos gusta la configuración que nos ha detectado por defecto para el nuevo monitor (en mi caso 640×480), siempre podemos añadir nuevas resoluciones. Yo voy a configurarlo con una resolución de 1440×900. Veamos cómo se hace:

Obtenemos los parámetros necesarios para la configuración:

$ cvt 1440 900

# 1440×900 59.89 Hz (CVT 1.30MA) hsync: 55.93 kHz; pclk: 106.50 MHz
Modeline “1440×900_60.00″ 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsyn
c

Creamos el nuevo modo:

$ xrandr –newmode “1440×900_60.00″ 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync

Asociamos el nuevo modo al monitor externo

$ xrandr –addmode VGA 1440×900_60.00

Activamos el nuevo modo, fijaos que le decimos al xrandr que el monitor está a la izquierda de la pantalla principal, otras opciones disponibles son (–right-of, –above, –below y –same-as)

$ xrandr –output VGA –mode 1440×900_60.00 –left-of LVDS

Y listo… ya tenemos nuestro Linux sobre dos monitores.

Navegación Anónima: La red TOR

A pesar de lo que podamos pensar y de lo seguro que nos sintamos tras la pantalla de nuestro ordenador, lo cierto es que navegar en la red de redes es una actividad que puede ser muchas cosas, excepto privada. Es fácil para cualquier sitio web tracearnos, recopilar datos sobre nosotros e incluso recurrir a la vía judicial si hemos hecho alguna acción especialmente ofensiva… no es raro leer alguna noticia sobre cómo ha acabado en juicio una amenaza vertida en forma de comentario en algún blog.

Dejando aparte los casos extremos, lo cierto es que estamos en nuestro derecho de querer navegar anónimamete. A veces más que un derecho es una necesidad… y cómo suele ocurrir en estos casos, siempre hay alguna empresa dispuesta a ayudarnos a cambio de un módico precio, aunque por supuesto, también podemos encontrar alternativas gratuitas que ofrecen un servicio similar. Alguna de las páginas dedicadas a navegación anónima son http://anonymouse.org/, http://ibypass.net/ y http://www.anonymizer.com/ por citar algunas.

El problema con este tipo de páginas es que son exclusivamente para eso, para navegación anónima, pero que pasa si queremos mantener nuestra IP oculta mientras mandamos un correo con nuestro cliente POP, jugamos al Quake, usamos nuestro cliente SSH, chateamos en el IRC o usamos nuestro programa de mensajería instantánea… en definitiva, que pasa cuando queremos usar cualquier cliente TCP. En ese caso tenemos que recurrir a otro tipo de soluciones como es el caso de la que nos ocupa: TOR

Tor es una red anónima diseña para proteger la privacidad de sus usuarios. El funcionamiento es como sigue, cuando un cliente se quiere conectar a la red TOR solicita a un servidor de directorio los nodos TOR disponibles, luego establece un circuito virtual aleatorio e inicia la conexión con el nodo final. La conexión entre los nodos TOR va cifrada y sólo va en plano desde el último nodo hasta el destino final.

Ejemplo red TOR

En la página oficial podéis encontrar una explicación mucho más detallada de funcionamiento. A mi lo que me interesa es enseñaros un modo muy rápido de instalar TOR y que desde  hoy mismo empecéis a ser seres anónimos, o por lo menos, que tengáis las herramientas para serlo.

Manos a la obra:

1. Instalamos TOR y Privoxy

Privoxy es un proxy privado que será nuestro punto de entrada a la red TOR. Una vez que tengamos todo instalado y configurado, haremos que nuestras aplicaciones usen privoxy y éste se encargará de pasar el tráfico a la red TOR.

# apt-get install tor privoxy

Pudiera ser que estos paquetes no se encuentren en nuestra distribución (esto es especialmente cierto si usamos Debian Etch). En ese caso habría que bajarse los fuentes y compilarlos, como muy bien explican en la web oficial.

2. Configuramos Privoxy

Editamos el fichero de configuración /etc/privoxy/config, borramos todo su contenido y en su lugar escribimos lo siguiente:

#———– BEGIN ———–

user-manual /usr/share/doc/privoxy/user-manual
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile standard.action # Internal purpose, recommended
actionsfile global.action # Global default setting for all sites
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
filterfile default.filter
listen-address 127.0.0.1:8118
toggle 1
enforce-blocks 0
buffer-limit 4096
forward-socks4a / 127.0.0.1:9050 .
forwarded-connect-retries 0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0

#———— END ————

Reiniciamos privoxy de la manera usual, normalmente:

$ /etc/init.d/privoxy restart

3. Configuramos las aplicaciones para que usen TOR

Bien, esta es la parte complicada, ya tenemos instalado TOR en nuestro ordenador y Privoxy configurado para que se conecte a él. Ahora bien, tenemos que configurar todas y cada una de nuestras aplicaciones para que se conecten con nuestro proxy local. Para los que tengan las cosas claras sólo mencionar que Privproxy escucha en: 127.0.0.1:8118

Para los que no, aquí tenéis como configurar el navegador para que use un proxy. Otras aplicaciones, como los clientes de mensajería instantánea, tienen en sus opciones de configuración la posibilidad de definir un proxy, en este caso la configuración variará de un cliente a otro y lo mejor es buscar algún tutorial sobre cómo configurar ese cliente. Hay un tercer grupo de aplicaciones que no tienen posibilidad de especificar proxy pero aún así nos interesa que vayan a través de TOR (un ejemplo de éstas podría ser el cliente de SSH estándar). En este caso es necesario el uso de aplicaciones puentes como proxychains, capaces de ‘proxyficar’ cualquier aplicación.

Una advertencia

TOR ofrece anonimato, es decir, oculta nuestra IP al destino final, pero no ofrece seguridad frente a escuchas por parte del repetidor final. Es decir, en el nodo final de la red TOR, justo antes de comunicarnos con el destino, los datos son descifrados y por lo tantos susceptibles a escuchas malintencionadas. Si tenemos datos confidenciales no podemos dejar la responsabilidad de que esos datos no sean capturados en manos de TOR, sino en manos del destino final que deberá usar algún protocolo seguro como HTTPS. Hace unos meses un hacker sueco se hizo con una buena cantidad de datos confidenciales precisamente por esta falsa creencia. Lo vuelvo a repetir y lo pongo en negrita para los que lean en diagonal: TOR ofrece anonimato, no protección total fretne a escuchas. Sí que ofrece protección parcial hasta el punto de que nuestros datos no serán visibles para los sniffers que haya en nuestra propia red local, lo cual viene muy bien a todos esos pobres empleados que se encuentran intesamente monitorizados y no pueden ver porno en las horas de trabajo.

Y ya que estamos, también podemos usar TOR para evitar las restricciones de acceso si estamos detrás de un firewall (o de un proxy con filtros restrictivos, sí, sí, cómo ese que os enseñé a montar en el artículo anterior). En fin, que hay muchas posibilidades y no os las he contado todas, echad un vistazo a la web oficial porque vale la pena.

Bloquear contenido

Hace algunos días un padre preocupado me preguntó como podía controlar lo que sus hijos ven en Internet, o incluso bloquear ciertos sitios web de contenido dudoso. Esta preocupación no es nueva y de hecho ha sido explotada por numerosas compañías para obtener buenos beneficios. Pero lo cierto es que nos basta tener un pequeño servidor con Linux para montar un sistema de este tipo de forma barata y sencilla. En este post explicaré paso a paso lo que tenemos que hacer para lograrlo.

En los ejemplos usaré el gestor de paquetes apt, sustitúyelo por el de tu distribución según el caso.

Lo primero que tenemos que hacer es instalar un proxy en nuestro servidor. Un proxy es un programa que hace de intermediario entre dos aplicaciones, una vez configurado todo adecuadamente, el navegador web se conectará al proxy y es éste el que se conectará a la página web final. Así pues, todas las conexiones pasarán a través del proxy lo que llegado el momento nos permitirá filtrarlas según nos convenga.

1. Instalamos el proxy, yo usaré un proxy libre llamado squid y un plugin diseñado especialmente para filtrar contenido, squidGuard:

# apt-get install squid squidguard

Seguidamente editamos el fichero de configuración /etc/squid/squid.conf, buscamos la sección que hace referencia a la claúsula visible_hostname y añadimos al fichero la opción:

{…}

visible_hostname localhost

{…}

2. Modificamos la configuración para que el proxy lo pueda usar cualquier máquina de la red local

La configuración por defecto sólo permite que el squid sea usado desde el host en el que está instalado (localhost). Así pues, si quisieramos que todos los usuarios de la red interna pudieran usar el proxy, tendríamos que editar el squid.conf y añadir lo siguiente bajo la sección http_access

{…}

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl localnet src 192.168.1.0/255.255.255.0
http_access allow localhost
http_access allow localnet
http_access deny all
{…}

Con la primera regla (acl localnet…) establecemos una acl (lista de control de acceso) llamada localnet que hace referencia a nuestra red local. Aquí deberás cambiar la IP mostrada por la que corresponda a tu red.

3. Conectamos el squid con el squidGuard, para que este útlimo pueda determinar si debe filtrar la dirección o no:

Al final del squid.conf añadimos siguiente línea

{…}

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

4. Nos bajamos la lista de sitios prohibidos y la colocamos en su ubicación final

# cd /var/lib/squidguard

# wget http://squidguard.mesd.k12.or.us/blacklists.tgz

# tar xvzf blacklists.tgz

# rm -rf db

# mv blacklists db

# squidGuard -C all

# chown -R proxy:proxy db

5. Configuramos el squidGuard para que no permita acceder a los sitios prohibidos

Editamos el fichero de configuración /etc/squid/squidGuard.conf y en la sección # DESTINATION CLASSES añadimos:

{…}

#
# DESTINATION CLASSES:
#

dest ads {
domainlist ads/domains
urllist ads/urls
}
dest aggressive {
domainlist aggressive/domains
urllist aggressive/urls
}
dest audio-video {
domainlist audio-video/domains
urllist audio-video/urls
}
dest drugs {
domainlist drugs/domains
urllist drugs/urls
}
dest gambling {
domainlist gambling/domains
urllist gambling/urls
}
dest hacking {
domainlist hacking/domains
urllist hacking/urls
}
dest mail {
domainlist mail/domains
urllist mail/urls
}
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest proxy {
domainlist proxy/domains
urllist proxy/urls
}
dest redirector {
domainlist redirector/domains
urllist redirector/urls
}
dest spyware {
domainlist spyware/domains
urllist spyware/urls
}
dest suspect {
domainlist suspect/domains
urllist suspect/urls
}
dest violence {
domainlist violence/domains
urllist violence/urls
}
dest warez {
domainlist warez/domains
urllist warez/urls
}

{…}

Ahora, buscamos la línea que empieza por acl { y la borramos junto con todo lo que le sigue hasta el final del fichero. En su lugar ponemos:

{…}

acl {
default {
pass !ads !aggressive !drugs !gambling !hacking !mail !porn !proxy !violence !warez all
redirect http://www.sendaoscura.com/prohibido.html
}
}

Y con esto queda configurado todo. Si quisieramos añadir una lista de sitios prohibidos propios, nos bastaría con añadir un nuevo directorio en /var/lib/squidguard/db y en ahí dentro poner dos ficheros: domains (que contendrá una lista de IPs de dominios inválidos) y urls (que contendrá una lista de urls inválidas). Tras eso ejecutaríamos “squidGuard -C all“, que acutaliza las bases de datos del SquidGuard y luego editaríamos el squidGuard.conf como hemos hecho anteriormente para añadir esta nueva lista a las ya controladas.

6. Configuración de los equipos clientes para que usen el proxy

Ya sólo nos queda obligar a los distintos navegadores de la red local a que usen el proxy que hemos configurado. Llegados a este punto hay diferentes alternativas, pero cómo no quiero extenderme más de lo necesario os comentaré la más simple de todas y nombraré alguna más. Si tenéis interés podéis dejar un comentario y os amplio información.

En esta aproximación, simplemente vamos equipo por equipo configurando los navegadores para que usen nuestro proxy, en esta web podéis encontrar información detallada sobre como hacer esto: configuración del navegador para que use un proxy

Luego nos aseguramos que la configuración del proxy no se pueda alterar, según el navegador elegido tendremos que hacer esto de una manera u otra. A modo de ejemplo comentaré como hacerlo con el Firefox, que además es muy sencillo. Nos basta instalar la extensión Public Fox, la cual nos permite poner un password para acceder a las opciones de configuración (entre otras cosas). Así pues, configuramos el plugin de la forma adecuada y ya nadie que no conozca el password podrá acceder a las opciones para desactivar el proxy. Y con esto nuestro sistema queda listo.

Una alternativa más elegante es el uso de un proxy transparente junto con un filtro de red a nivel TCP (IPTables, por ejemplo). Este último forzaría a todas las peticiones dirigidas a un puerto HTTP a pasar a través del proxy transparente.

Kameraflage

No he podido resistir la tentación de comentar esta tecnología (aunque luego alguno que otro luego me deje algún comentario criticándome)

Bueno, a lo que iba, Kameraflage es una tecnología que permite imprimir textos e imágenes que no son visibles al ojo humano (se usan colores que se encuentran fuera del espectro visible), pero que son capturados fácilmente por las cámaras digitales. Así pues, podemos llevar una camiseta que aparentemente esté vacía, pero que contenga todo tipo de mensajes subversivos que sólo aparecerán cuando nos fotografien. En la web oficial se explican otras aplicaciones, como la protección de películas de estreno u obras de arte mediante la sobreimpresión de texto.

Foto realizada con Kameraflage
Esperemos que saquen una línea de camisetas con frases variadas, seguro que se convierten en un buen regalo-putada.