Servidor Ubuntu como proxy transparente con filtro de contenidos

Estándar

En este tutorial básico explicaré brevemente como instalar un proxy transparente con filtro de contenidos. También quedara cubierta la generación de informes web con el tráfico y accesos de los usuarios.

Premisas.
1) Se entenderá en todo momento que el sistema instalado es Ubuntu 12.04 Server con la opción LAMP instalada y configurada.
2) El sistema tendrá dos tarjetas de red, eth0 y eth1. La tarjeta de red eth1 estará conectada directamente al router y la tarjeta eth0 estará conectada a un switch.
3) La red interna (las máquinas contectadas al switch) tendrá ip en el formato 192.168.2.X
4) La red externa (la que conecta con el router) tendrá ip en el formato 192.168.1.X

Instalando

Instalamos squid3, dansguardian y sarg

sudo apt-get install squid3 dansguardian sarg

Configurando

1.-Configuración de Squid.

Editamos el fichero de configuración de squid

sudo nano /etc/squid3/squid.conf

y nos aseguramos de que existe esta linea y no esta comentada, si no existe la creamos.

http_port 3128 transparent

Con esto le decimos a squid que funcione en el puerto 3128 y de forma transparente.
Añadimos también lo siguiente:

acl localnet src 192.168.2.0/24
http_access allow localnet
http_access allow localhost
visible_hostname server
cache_dir ufs /var/spool/squid3 7000 16 256

Con esto definimos nuestra red y el permiso de acceso, así­ como la cantidad de mb que queremos de cache (7000).

2.-Configuración de Dansguardian:

Editamos el fichero de configuración de dansguardian:

sudo nano /etc/dansguardian/dansguardian.conf

Localizamos la lí­nea con la directiva «logfileformat» y la establecemos a «3» para que los logs sean idénticos a los que genera squid. Esto lo haremos para que Sarg los entienda.

logfileformat = 3

Localizamos la lí­nea donde se define donde debemos dejar los logs y la dejamos asi

loglocation = ‘/var/log/dansguardian/access.log’

Buscamos la diretiva filterport y la establecemos a 8080, esto sera el puerto donde Dansguardian permanecerá a la escucha.

filterport = 8080

Ahora definiremos la ip del proxy, que por defecto es el propio servidor.Debe quedar así­:

proxyip = 127.0.0.1

Por último definimos el puerto en el que Dansguardian se conecta al proxy:

proxyport = 3128

Para finalizar ponemos una almohadilla # en la lí­nea que empieza por UNCONFIGURED para indicarle a Dansguardian que está todo configurado. Que quede así­:

#UNCONFIGURED – Please remove this line after configuration

Y con esto terminamos la configuración de dansguardian.

3.-Configuración de Sarg.

Sarg es un generador de informes, lo que hace es leer el log de Squid o Dansguardian (en nuestro caso Dansguardian) y generar una web donde podremos ver gráficamente quién accede a internet, dónde accede y cuanto pesa lo que está descargando o visitando. Manos a la obra:

sudo nano /etc/sarg/sarg.conf

Comentamos la linea access_log del principio del fichero ya que la añadiremos al final con otro valor.

#access_log /var/log/squid/access.log

Y al final añadimos la siguiente configuración, que no voy a comentar por pura pereza 😛
Fijaos que la primera lí­nea es igual al access_log que hemos comentado antes, y que ahora queda activa y definida.

access_log /var/log/dansguardian/access.log
dansguardian_conf /etc/dansguardian/dansguardian.conf
graphs yes
graph_days_bytes_bar_color orange
title «Reportes de Acceso de Usuarios»
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
temporary_dir /tmp
output_dir /var/www/sarg
resolve_ip
user_ip no
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
exclude_users /etc/sarg/exclude_users
exclude_hosts /etc/sarg/exclude_hosts
date_format u
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
records_without_userid ip
use_comma yes
mail_utility mailx
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
usertab /etc/sarg/usertab
long_url no
date_time_by bytes
charset Latin1
show_successful_message yes
show_read_statistics yes
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0
site_user_time_date_type table
download_suffix «zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg»

Ahora tenemos que crear una serie de directorios donde sarg generará los informes,

sudo mkdir /var/www/sarg /var/www/sarg/diario /var/www/sarg/semanal /var/www/sarg/mensual

y otorgarle la propiedad a www-data para que podamos accederlos más tarde

sudo chown -R www-data:www-data /var/www/sarg

Ahora crearemos unos script para generar los informes, diariamente, semanalmente y mensualmente.

-Script diario.

sudo nano /usr/sbin/sarg-informe-diario

con el siguiente contenido

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
sarg /var/log/dansguardian/access.log -o /var/www/sarg/diario -z -d $YESTERDAY-$TODAY
exit 0


-Script semanal.

sudo nano /usr/sbin/sarg-informe-semanal

con el siguiente contenido

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date --date "1 week ago" +%d/%m/%Y)
sarg /var/log/dansguardian/access.log -o /var/www/sarg/semanal -z -d $YESTERDAY-$TODAY
exit 0


-Script mensual.

sudo nano /usr/sbin/sarg-informe-mensual

con el siguiente contenido

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date --date "1 month ago" +%d/%m/%Y)
sarg /var/log/dansguardian/access.log -o /var/www/sarg/mensual -z -d $YESTERDAY-$TODAY
exit 0


Asignamos permisos a los scripts que hemos creado para que se puedan ejecutar

sudo chmod 755 /usr/sbin/sarg-informe*

Y los añadiremos a crontab para automatizar la ejecución. Abrimos crontab.

sudo crontab -e

Y añadimos las siguientes lineas

00 00 * * * /usr/sbin/sarg-informe-diario > /dev/null 2>&1
00 01 * * 1 /usr/sbin/sarg-informe-semanal > /dev/null 2>&1
03 02 1 * * /usr/sbin/sarg-informe-mensual > /dev/null 2>&1

La coletilla «> /dev/null 2>&1» es para que no mande un correo con el resultado cada vez que se ejecuta.
Reiniciaremos crontab

sudo service cron restart

Con estas lineas conseguiremos que los informes se generen con caracter diario (primera lí­nea), semanal (segunda lí­nea) y mensual (tercera linea).
Y ahora a esperar a que se generen los primeros resultados (24h). Que seran visibles desde el servidor abriendo un navegador y accediendo a las siguientes direcciones:

Para el informe diario http://127.0.0.1/sarg/diario
Para el informe semanal http://127.0.0.1/sarg/semanal
Para el informe mensual http://127.0.0.1/sarg/mensual

Si no quereis esperar siempre podeis ejecutar el script a mano, por ejemplo el diario serí­a así­:

sudo sarg-informe-diario

Tened en cuenta que en el punto en el que estamos no hemos reiniciado ni squid, ni dansguardian ni ha habido tráfico en la red como para que todo funcione. Probad a ejecutarlo al final del tutorial y vereis el resultado.

4.-Configurando la red

Para que la red conectada a eth0 pueda acceder a internet (que está en eth1) debemos habilitar el «ip forwarding». Editaremos el siguiente archivo:

sudo nano /etc/sysctl.conf

Y nos aseguramos de que esta activado, recordemos que 1 es activado y 0 desactivado.

net.ipv4.ip_forward=1

También necesitaremos decirle al sistema que aplique un par de reglas para que cuando reciba un intento de acceder a una web lo redireccione a Dansguardian para que lo analice y permita o no el acceso. Hay muchas maneras de hacer esto pero a mi me gusta crear un pequeño script que arranque al inicio del sistema.

Crearemos un fichero llamado reglas_iptables en /etc/init.d

sudo nano /etc/init.d/reglas_iptables

y le añadiremos las siguientes lí­neas:

#! /bin/sh
iptables -F
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


Guardamos y le damos permiso de ejecución:

sudo chmod +x /etc/init.d/reglas_iptables

Crearemos un enlace simbólico en /etc/rc2.d/ para que se ejecute al iniciar.

sudo ln -sf /etc/init.d/reglas_iptables /etc/rc2.d/S20reglas_iptables

Ahora configuraremos las tarjetas de red (si es que aún no lo habeis hecho ya). Esto lo hacemos editando el fichero interfaces.

sudo nano /etc/network/interfaces

Y dejándolo como sigue:

auto eth1
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8

#Segunda tarjeta red
auto eth0
iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.0

Con estos cambios le hemos dicho al sistema que la tarjeta eth1 que poseera la direccion ip 192.168.1.2, se conectará al router que tiene la ip 192.168.1.1 y usará los servidores de nombres (dns) de google, que son 8.8.8.8. Esta tarjeta es la que da acceso a internet.
Tambien le decimos que la tarjeta eth0 poseerá la dirección 192.168.2.1, esta tarjeta es la que se comunica con nuestra red interna.

Dicho esto solo queda reiniciar el equipo o los servicios y cruzar los dedos para que no me haya equivocado al escribir este pequeño y básico tutorial.

Reiniciamos servicios

sudo service squid restart
sudo service dansguardian restart
sudo /etc/init.d/reglas_iptables

Se agradeceran crí­ticas constructivas y notificación de meteduras de pata. 😛

Huerto Urbano AMB(pendiente de patente)

Estándar

El año pasado hice un primer intento de Huerto Urbano que finalizó con un resultado bastante mediocre en cuanto a producción se refiere. Eso si, aprendí­ y me divertí­ muchí­simo, tanto, que hoy he vuelto a iniciar otro huerto urbano y quiero compartir un poco mi  experiencia contigo.

Si esperas encontrar aquí­ un manual perfecto e inequí­voco de como montar y mantener un huerto urbano, vas apañao, porque aqui lo que voy a explicar es como montar un Huerto Urbano AMB. AMB= A Mi Bola.

Lo primero que tenemos que saber es que necesitamos tener sol, si vives en un piso donde el sol no llega, adelante, intentalo, pero no esperes gran cosa. El sol y el agua, son la vida. Si te falta alguno de los dos, mierda.

Yo vivo en un bajo que tiene sol de tarde, desde aproximadamente las 14:00-14:30 hasta que se pone, o sea que sol no me falta, y agua mientras pague los recibos..tampoco me va a faltar.

Buscando por el internetes encontré unas hidrojardineras caseras de lo mas chulo (una hidrojardinera es una jardinera con sistema semiautomatico de riego). Basicamente consistia en dos cajas que.. uf.. mejor ves a la web de Xavier Sarrate i lo ves por ti mismo, que va a ser más facil. -> http://www.xaviersarrate.com/index.php/2009/08/24/huerto-urbano-barato-balcon-2/

Yo he usado una sola caja muy parecida pero con ruedas, la encontré en los chinos. Y uso una sola caja porque el riego prefiero hacerlo yo y dejarme de automatizaciones caseras. A la caja en cuestión le hice unos agujeros para poder drenar el agua y que no se me ahoguen las pobres hortalizas. Dadas las necesidades de las hortalizas que querí­a plantar, he usado una caja de 18cms de alto y otra de 38cms de alto. En la primera (la mas bajita) he plantado cebollas y lechugas y en la más alta he plantado tomates, habas y pimientos. ¿Por qué lo he hecho así­? Pues porque el pimiento y el tomate necesitan una profundidad de tierra de 30cms como mí­nimo y las demás solo 15cms. Algo interesante a la hora de plantar es saber qué hortalizas son compatibles para ser plantadas juntas, esto se llama «asociación de cultivos». Yo para esto (y para muchas otras cosas) suelo consultar Hort Urbí .  Tambien me ha sido muy util la siguiente tabla http://www.planthogar.net/guia-practica/huerto/hortalizas.html

El siguiente paso es la tierra que vamos a usar, que no es tierra común sino algo llamado «sustrato universal», que viene siendo un tipo de tierra formada por muchas cosas (buscalo en google). Resumiendo, es una supertierra mucho menos pesada que la tierra común, llenita de nutrientes por doquier y que encima retiene la humedad mucho mejor. Yo la compré en jardiland porque tengo uno muy cerca, pero se puede encontrar facilmente en cualquier gran superficie, floristerí­a, vivero, etc.

Sustrato Universal

Una vez llenadas las cajas con el sustrato, planto las hortalizas, que en mi caso son germinadas (no planto semillas sino la hortaliza un poco crecidita). En la siguiente foto vereis las hortalizas germinadas colocadas encima de la tierra.

Hortalizas germinadas

Cavamos un pequeño hoyo…

Tu dame hueco que yo yaaaa

Y colocamos, en este caso, las cebollas..

Cebollas

Hay que ir con cuidado y no compactar demasiado la tierra ( aplastarla), queremos que se sujete bien pero tambien que puedan expandirse las raices. Os dejo aqui una vista de como queda tras plantar las lechugas y cebollas.

Lechugas y cebollas

Y ahora una vista de la caja «alta» con los tomates, pimientos y habas. Ahora mismo hay demasiados para una sola caja pero esta previsto el transplante en cuanto llegue la segunda ronda de cajas (rompí­ una y tuve que encargar otra).

Tomates, pimientos y habas

Después de esto, riego suavemente para proporcionar la humedad suficiente (con cariño, sin anegar) y me tomo un refrigerio, que estoy mu cansao! 😛

Y  este es el fin de la primera parte, en la siguiente entrada hablaré un poco de los enemigos que acechan a nuestras verduras y como combatirlos.

 

 

Captura de video analógico en Ubuntu mediante mencoder

Estándar

Ayer mi cuñada me pidió que le pasara de la videocámara al ordenador el ví­deo de reyes. Le pedí­ el cable para conectar la cámara al ordenador y , oh sorpresa! no lo tenia. Entonces recordé mi vieja sintonizadora Avermedia TV Capture 98 que tení­a acumulando polvo en un cajón y pensé que quizá podria usarla para capturar el video. Abrí­ el ordenador, la instalé y lo encendí­. Ubuntu la reconoció tal cual sin hacer nada más. Conecté el cable de video de la cámara a la entrada de video RCA de la tarjeta y luego conecté el audio de la camara a la entrada de micrófono del ordendor.


Instalé tvtime para verificar que la imagen se veí­a.

sudo aptitude install tvtime

Lo ejecuté teniendo en cuenta que ya tenia instalado otro dispositivo de video, la webcam  con lo cual la sintonizadora serí­a /dev/video1

tvtime –device=/dev/video1

Una vez ejecutado tvtime, fui a Configuración de entrada y luego pulse en Cambiar origen de video hasta que apareció la opcion Composite1. Acto seguido pulse play en la camara y pude ver el video pero… no habia sonido.. Abrí­ las propiedades de sonido y quité el mute del micrófono, ajusté el volumen y voilá, imagen y video 🙂

Ahora faltaba lo peor, capturar esa imagen y video al disco duro y a ser posible dejarlo comprimido en mpg4, despues de buscar , buscar y buscar, provar PiTiVi, Cinelerra, Kino, Lives, Kdenlive, xdtv y un largo etcétera de programas encontré un mensaje en una lista donde alguien decia que mencoder y ffmpeg funcionaban muy bien para este propósito. Asi que me puse manos a la obra y empece a hacer pruebas con las distintas opciones y me salió el siguiente churro de orden:

mencoder -tv driver=v4l2:device=/dev/video1:input=1:width=384:height=288:fps=25:adevice=dev/dsp:audiorate=44100:forceaudio:forcechan=2 -oac mp3lame -lameopts cbr:preset=192 -ovc xvid -xvidencopts bitrate=1600 tv:// -o captura.avi

Este rollo increible viene a ser algo asi como «captura el video de la entrada composite de la tarjeta sintonizadora y comprimelo , de paso toma el audio del micrófono y comprimerlo en mp3, el resultado ponlo en captura.avi».

Total, misión cumplida 🙂