Instalación y primeros pasos con ntop 5 en Debian 6

ntop es la herramienta más popular y completa para monitorizar el tráfico de una red cuando nos interesa, no sólo conocer la magnitud del mismo sino su procedencia y características. Colocado en un punto estratégico de nuestra red nos sirve para detectar cualquier tipo de anomalía en la misma. Si lo instalamos en un servidor nos sirve para auditar el tipo de tráfico que este emite y recibe de forma gráfica y muy didáctica.

Como ocurre en algunas ocasiones la versión en la paquetería de debian (4.0.33 en la estable y 4.99.3 en testing y unstable) va bastante por detrás de la del producto (5.0.1) así que si te apetece jugar con lo último lo mejor es bajarte los fuentes y compilarlos en tu máquina. Pero ya sabes que, en este caso, tendrás que preocuparte de posibles actualizaciones de forma manual. ntop, en particular, no parece tener ningún aviso automático de la aparición de nuevas versiones. Vamos a ello.

Antes que nada, instalamos los paquetes necesarios para realizar la instalación, las dependencias y alguna otra cosa necesaria:

apt-get install build-essential libtool automake autoconf libpcap-dev libgdbm-dev rrdtool librrd-dev libssl-dev python-dev libgeoip-dev graphviz subversion python-pip

A continuación nos descargamos de aquí la última versión estable de ntop, la copiamos en, por ejemplo, el directorio /tmp de nuestra máquina y la descomprimimimos:

wget -c http://sourceforge.net/projects/ntop/files/ntop/Stable/ntop-5.0.1.tar.gz
tar xvfz ntop-5.0.1.tar.gz

Ahora entramos al directorio donde se han descomprimido los fuentes (ntop-5.0.1 en este caso) y generamos los binarios.

cd ntop-5.0.1/
./autogen.sh
make
make install
ldconfig

Y listo. Sólo nos quedan unos cuantos retoques. Los datos que ntop capture una vez esté en funcionamiento se guardarán en /usr/local/var/ntop. El daemon de ntop se ejecuta con el usuario nobody, así que debemos de hacerlo propietario de dicho directorio para que pueda escribir libremente en él:

chown -R nobody /usr/local/var/ntop

El binario de ntop ya está listo para ejecutarse y se encuentra en el directorio /usr/local/bin. Si escribes ntop -help tendrás una detallada lista de posibles opciones. Las mías son estas:

/usr/local/bin/ntop -i eth0 -w 3001 -L -d

De esta forma ntop monitorizará todo el tráfico enviado y recibido por el interfaz de red eth0 de nuestra máquina, el interface web de ntop escuchará peticiones en el puerto 3001 (por defecto lo haría en el 3000), guardará los mensajes de log en el syslog de la máquina (/var/log/syslog) y se ejecutará como daemon o servicio en segundo plano.

En la primera ejecución nos pedirá que introduzcamos la contraseña para el usuario admin necesaria para entrar a ciertas páginas restringidas del programa. Muy pocas, la verdad, pero luego veremos como solucionar esto.

ACTUALIZACI?N: Las últimas compilaciones llevan por defecto la contraseña admin para el usuario admin

Para acceder a ntop ya sólo tenemos que ir a nuestro navegador y escribir lo siguiente sustituyendo ip-de-la-maquina por la dirección o nombre correcto donde hemos hecho la instalación y cambiando el puerto por el adecuado si lo hemos modificado en la orden de inicio anterior:

http://ip-de-la-maquina:3001

Pantalla principal de ntop (Traffic Summary)

Para proteger el acceso a cualquier página de ntop (imprescindible sobre todo si es visible desde Internet) debemos de entrar en el menú superior (Admin -> Configure -> Protect URLs) y añadir una regla con un asterisco ‘*’ al limitado grupo de usuarios que deseemos (o al usuario admin si es una instalación de uso particular).
Protegiendo el acceso a ntop

Ahora ya sólo nos quedan unos pequeños ajustes para disponer de algunos gráficos y diagramas adicionales que, por defecto, no vienen configurados. El plugin Round-Robin Database debería de estar activado para disponer de los gráficos de Network Load generales o por protocolo.
Gráficos de carga por protocolo en ntop con rrd activado

Para ello, además de activar el plugin (Plugins -> Round-Robin Database -> Activate), deberíamos de comprobar que en la pantalla de Preferencias (Admin -> Configure -> Preferences) la cadena rrd.rrdPath apunta a un directorio donde el usuario nobody tenga permisos de escritura (típicamente /usr/local/var/ntop/rrd), que en la configuración del plugin (Plugins -> Round-Robin Database -> Configure) las dos cadenas del bloque RRD Files Path apuntan al mismo directorio y que en el bloque Data to Dump de esta misma pantalla tenemos seleccionada, al menos, la opción de Interfaces. Si seleccionamos todas las opciones tendremos muchos más datos de captura pero a costa de cargar más la ejecución y el espacio ocupado por las capturas. Mucho cuidado con el espacio en disco, que podemos necesitar fácilmente 2 Gigas por día en un servidor con un tráfico corrientito.
Configurando rrd en ntop

Para ver los mapas por regiones tenemos que instalar las plantillas Mako para python. Como al principio de todo hemos instalado el paquete python-pip nos basta con salir a línea de comandos y ejecutar lo siguiente:

pip install Mako

Graficos geográficos con Mako y ntop

Por último, aunque hemos instalado graphviz y Dot es uno de sus elementos integrantes, nos hace falta añadir un path en las Preferencias (Admin -> Configure -> Preferences) para disponer de los Mapas de Tráfico de Red Locales. Entramos en ellas y, al final de la tabla, añadimos la cadena dot.path con el valor /usr/bin/dot. Pulsamos Add, confirmamos y listo.
Gráficos de tráfico de red local en ntop

ntop tiene muchas otras gráficas y páginas de información útil e interesante además de estas que he mostrado y cuyo único motivo para aparecer aquí es que necesitan de algún retoque extra en la configuración para poder usarlas, así que lo mejor es que las explores una a una. La documentación para interpretarlas es escasa, todo hay que decirlo, pero últimamente se están poniendo las pilas en este sentido y han prometido, por fin, un manual de usuario en breve.

Y ya sólo nos queda un pequeño detalle para concluir. Si quieres que ntop se ejecute de forma automática como servicio cada vez que hagas un reinicio de la máquina donde la tienes instalada sólo tienes que crear un fichero .sh (por ejemplo ntop.sh) con la línea de ejecución que has usado antes para ponerlo en marcha, crear un enlace al mismo en el directorio init.d y ejecutar lo siguiente:

ln -s /opt/Scripts/ntop.sh /etc/init.d/ntop
update-rc.d ntop defaults 99

Instalando OpenVAS 4 en Ubuntu 11.04

herramientas Hace poco contamos por aquí como instalar la última versión de OpenVAS en Fédora. Si prefieres trabajar con Ubuntu o una distribución derivada puedes seguir lo que se cuenta en ese mismo post salvo en algunos pequeños detalles:

  • La instalación manual se hace descargando los paquetes desde esta dirección si usamos arquitectura i386 o desde este otra si nuestro sistema está compilado para 64 bits.
  • Si queremos integrar el repositorio en nuestro sistema debemos de añadir la siguiente línea en nuestro fichero de fuentes de software (/etc/apt/sources.list):
    deb http://download.opensuse.org/repositories/security:/OpenVAS:/STABLE:/v4/xUbuntu_11.04/ ./
  • Para añadir la firma de autenticación de los paquetes ejecutamos lo siguiente:
    sudo apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys BED1E87979EAFD54</code>
  • Ahora ya podemos instalar. Primero actualizamos la base de datos de paquetes (sudo apt-get update) y luego, si queremos una instalación que integre cliente y servidor en la misma máquina, ejecutamos lo siguiente:
    sudo apt-get install libopenvas4 libmicrohttpd10  openvas-scanner openvas-manager openvas-administrator  greenbone-security-assistant gsd openvas-cli sqlite3

    Si sólo queremos la parte de servidor:

    sudo apt-get install libopenvas4 libmicrohttpd10  openvas-scanner openvas-manager openvas-administrator  greenbone-security-assistant sqlite3

    Y para instalar sólo el cliente:

    sudo apt-get install libopenvas4 gsd openvas-cli
  • Y ya casi. El último punto que nos falta a tener en cuenta es que los ficheros de configuración se encuentran aquí en el directorio /etc/default, así que será aquí donde tendremos que hacer las modificaciones necesarias para habilitar la conexión del cliente desde otra máquina si queremos una instalación distribuida.

Instalando OpenVAS 4 beta en Fedora 14

herramientas OpenVAS es un scanner de vulnerabilidades de red de código abierto creado a partir de un fork de la versión 2 de Nessus que se convirtió en código propietario en su versión 3, allá por el año 2005. Si queremos instalar la última versión de OpenVAS, la 4, disponible en fase beta desde diciembre de 2010, tenemos que hacerlo manualmente. Existen indicaciones de como hacerlo para diferentes distribuciones en esta dirección pero, a mi parecer, son difíciles de seguir para quién no está bien familiarizado con la arquitectura que usa esta herramienta, he detectado algunos errores y no explican, por ejemplo, algo tan básico como la forma de realizar una instalación distribuida cliente-servidor que es uno de los puntos fuertes de la herramienta. Así que vamos allá.

ACTUALIZACI?N: Desde el día 17 de marzo la versión 4 es ya definitiva (ya es casualidad que lo tuviera escrito desde una semana antes y que no mirara la lista de correo hasta días después ¿eh?). El procedimiento de instalación aquí descrito sigue siendo válido y si lo has seguido usando los repositorios se te habrán actualizado los últimos cambios de forma automática.

Para disponer de los paquetes necesarios podemos hacer dos cosas, descargarlos manualmente (de esta dirección si usas arquitectura de 64 bits o de esta otra si usas arquitectura i386) e instalarlos con rpm (o yum con la opción --localinstall) o, mucho más recomendable, añadir un nuevo repositorio a tu máquina para recibir las futuras actualizaciones. En este segundo caso debes de crear un nuevo archivo .repo (por ejemplo openvas.repo) en tu directorio /etc/yum.repos.d y copiar en él lo siguiente (o bajártelo diréctamente desde aquí):

[security_OpenVAS_STABLE_v4]
name=security:OpenVAS:STABLE:v4 (Fedora_14)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/security:/OpenVAS:/STABLE:/v4/Fedora_14/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/security:/OpenVAS:/STABLE:/v4/Fedora_14/repodata/repomd.xml.key
enabled=1

Lo siguiente que tenemos que hacer es decidir que instalar. Cómo decíamos antes, OpenVas tiene una estructura cliente servidor de forma que la parte del programa que realiza el escaneo propiamente dicho puede instalarse en una máquina diferente a aquella desde la que se lanza y monitoriza el análisis o, incluso, distribuirlo entre varias para aliviar la carga. Tenemos, así, la posibilidad de instalar servidores en diferentes puntos estratégicos de nuestra red y usar siempre el cliente desde nuestro ordenador de trabajo. Existe una detallada descripción de la arquitectura que se usa en esta dirección pero si no te interesa meterte en tantos detalles, échale al menos un vistazo a esta imagen para comprender lo que sigue:
Arquitectura de OpenVAS

El servidor de OpenVAS está formado por tres módulos (scanner, manager y administrator) y disponemos de tres posibles clientes para explotarlos: uno en línea de comando (openvas CLI), otro con una aplicación clásica de escritorio que usa las librerías qt4 (greenbone security desktop o gsd) y una tercera posibilidad que es acceder directamente a través de un navegador usando, para ello, el módulo denominado greenbone security assistant.

Y vamos a instalar. Si queremos hacer una instalación completa (cliente y servidor) en la misma máquina y estamos usando el repositorio que hemos puesto anteriormente, tenemos que instalar (recordad, como usuario root) los siguientes paquetes:

sudo yum install sqlite nmap libopenvas4 libmicrohttpd10  openvas-scanner openvas-manager openvas-administrator  greenbone-security-assistant gsd openvas-cli

Si lo que queremos es hacer una instalación sólo con la parte de servidor y, además, tener la posibilidad de conectarnos usando un navegador como cliente, instalaríamos lo siguiente:

sudo yum install sqlite nmap libopenvas4 libmicrohttpd10  openvas-scanner openvas-manager openvas-administrator  greenbone-security-assistant

Si queremos instalar sólo el cliente en línea de comandos:

sudo yum install libopenvas4 openvas-cli

Y, por último, si sólo quisieramos instalar la aplicación cliente de escritorio:

sudo yum install libopenvas4 gsd

Instalación completada. Ahora hay que poner esto en marcha. Si hemos realizado una instalación distribuida (servidor en una máquina y cliente en otra) lo primero que tenemos que hacer es unos cambios en la configuración del servidor ya que este, por defecto, arranca los servicios usado el parámetro --listen=127.0.0.1 de forma que no admite conexiones que no vengan de la propia máquina. Para corregir esto procedemos de la siguiente forma:

Si lo que queremos es poder conectarnos al servidor a través de un navegador web desde otra máquina, debemos de editar el fichero /etc/sysconfig/greenbone-security-assistant y localizar las siguientes líneas:

GSA_ADDRESS=127.0.0.1
...
ADMINISTRATOR_ADDRESS=127.0.0.1
...
MANAGER_ADDRESS=127.0.0.1

En el fichero original no aparecen todas así una debajo de otra ¿eh? 😉 Bien, pues lo único que tenemos que hacer es sustituir el 127.0.0.1 por la ip real de la máquina que actúa como servidor.

Si lo que queremos es usar el cliente de escritorio gsd desde otra máquina, el fichero que debemos de editar es /etc/sysconfig/openvas-manager. Localizamos ahora la siguiente línea y hacemos la misma operación que hemos descrito antes:

MANAGER_ADDRESS=127.0.0.1

¿Continuamos? Lo siguiente (aún en el servidor) sería añadir un primer usuario con privilegio de administrador (cualquiera de los clientes nos pedirá autenticación antes de darnos acceso). El siguiente comando nos creará un usuario llamado josemaria y nos pedirá de forma interactiva la contraseña para este:

sudo openvasad -c add_user -n josemaria -r Admin

A continuación generamos los certificados que también usaremos en la autenticación:

sudo openvas-mkcert -q
sudo openvas-mkcert-client -n om -i

Y ya casi estamos. Para quién no lo conozca, un programa como este que analiza vulnerabilidades se parece en algunos aspectos a un antivirus: alguien tiene que actualizar de forma permanente que nuevas vulnerabilidades existen y de que forma reconocerlas. Al igual que actualizamos las ??firmas? de nuestro antivirus necesitamos actualizar estos patrones de reconocimiento que en OpenVAS reciben el nombre de NVT’s Es por lo tanto necesaria una sincronización periódica. El siguiente script podría servirnos para ello. Además de la sincronización realiza la activación de servicios en el orden correcto de forma que deberíamos de usarlo antes de la primera conexión y después de cada reinicio de la máquina con el servidor:

sudo openvas-nvt-sync
sudo service openvas-manager stop
sudo service openvas-scanner stop
sudo openvassd
sudo openvasmd --migrate
sudo openvasmd --rebuild
sudo service openvas-administrator stop
sudo service openvas-manager stop
sudo service openvas-scanner restart
sudo service openvas-manager start
sudo service openvas-administrator start
sudo /etc/init.d/greenbone-security-assistant restart

Y con esto está todo. Si queremos asegurarnos o posteriormente cuando lancemos un cliente tenemos algún problema, existe un pequeño script que podemos descargar desde aquí y que, ejecutado con privilegios de root, nos permite verificar si nuestra instalación está correcta o, por el contrario, nos alertaría acerca de que es lo que nos falta. Si lo ejecutamos con el parámetro --server obviaría en esta comprobación todo lo referente a la instalación del cliente.

Ahora ya podemos empezar a auditar la red. El cliente de escritorio no crea entrada en ningún menú, así que lo tenemos que ejecutar a mano (pulsando Alt+F2 o directamente desde un terminal) con el comando gsd. En las siguientes ilustraciones se ve la pantalla de conexión y la principal del programa

Login con GSD, el cliente de escritorio de OpenVAS
Pantalla principal de GSD, el cliente de escritorio de OpenVAS

Si preferimos usar el cliente web (mucho más ligero, la verdad) “apuntamos” con nuestro navegador al puerto 9392 de la máquina donde hemos instalado el servidor usando protocolo seguro https (por ejemplo https://192.168.1.217:9392 o https://localhost:9392 en caso de que lo tengamos todo en la misma máquina). A continuación tienes también los pantallazos de la ventana de login y la principal del cliente:

Login con GSA, el cliente web de OpenVAS
Pantalla principal de GSA, el cliente web de OpenVAS

ACTUALIZACI?N: En systenadmin nos cuentan como instalarlo en una Cent.OS además de algunas notas útiles sobre el escalado de eventos y la sobreescritura de alertas para evitar falsos positivos recurrentes.

ACTUALIZACI?N (y II): y si prefieres instalarlo en Ubuntu échale un vistazo a estas notas adicionales.

Instalando un servidor con NFS

servicios en red ¿Cuánto tiempo hace que no te tropiezas con un servidor con NFS? Si se tratase de un animal seguro que casi podríamos decir que está en peligro de extinción. El caso es que, en ambientes mixtos Windows/*nix con un Directorio Activo (que es el entorno más habitual al que nos enfrentamos) es mucho más práctico y menos problemático montar un servidor con Samba. Pero si en nuestro entorno no existen máquinas con windows o estas son minoritarias, aún podemos montar nuestros servidores de archivos con NFS y usar Windows Services for Unix para dar soporte a este protocolo desde las máquinas con windows (aquí tenéis un tutorial de instalación en castellano).

Para preparar la máquina que ofrecerá los servicios de NFS (y partiendo, como siempre, de una Debian o derivada), sólo tenemos que instalar el paquete nfs-kernel-server (sudo apt-get install nfs-kernel-server) y sus dependencias. Una vez hecho esto podemos ver en el archivo /proc/filesystems que nuestro sistema ya debería de soportar nfs.

Los directorios que queremos compartir se configuran de forma sencilla en el fichero /etc/exports. Allí, y en función de nuestras necesidades, podríamos tener algo como esto:

/mnt/Sistemas 192.168.1.0/25(rw,sync,subtree_check)
/mnt/Desarrollo 192.168.1.0/25(rw,sync,subtree_check)
/mnt/Gestión 192.168.1.0/25(rw,sync,subtree_check)
/mnt/Público (rw,sync,subtree_check)

La sintaxis es bien sencilla. En cada línea pondremos en primer lugar el recurso compartido, en segundo la dirección o direcciones de las máquinas que tendrán acceso a él y, por último y entre paréntesis y sin ningún espacio de separación, los atributos que aplicaremos al recurso compartido.

La forma de expresar las máquinas que tienen acceso al recurso es bien versatil. Podemos poner una única dirección IP (192.168.1.5), una subred completa (192.168.1.0/25 ó 192.168.1.0/255.255.255.128), un nombre de máquina (estacion1.midominio.net), o usar comodines * y ? (estacion*). Si no ponemos nada quiere decir que no habrá restricciones en cuanto al origen de la conexión (como en el caso del recurso /mnt/Público del ejemplo anterior). Si quisiéramos aplicar opciones diferentes según el origen de la conexión lo hacemos de forma consecutiva en la misma línea del fichero exports. De esta forma:

/mnt/Gestión 192.168.1.10(rw) 192.168.1.11(rw) 192.168.1.0/25(ro)

Las diferentes opciones de montaje pueden consultarse con man exports. Algunas de las más comunes son ro (sólo lectura), rw (lectura y escritura), async o sync (según si queremos que replique las modificaciones antes de hacer un commit de estas o no), etc. Despues de cada cambio en el fichero de unidades compartidas debemos de ejecutar la orden exportfs -a para que estos tengan efecto. Ah, y no olvidemos que los permisos aplicados sobre ficheros y directorios de las unidades compartidas ha de ser coherente con los que apliquemos al publicar las mismas.

Y ahora nos vamos con los clientes. En ellos lo único que tenemos que instalar es el paquete nfs-common y sus dependencias. Y listo. Ahora podemos montar las unidades de nuestro servidor remoto de forma manual o, si queremos hacerlo de forma permanente, añadiendo una línea en nuestro fichero fstab. La forma manual sería algo así:

mount -t nfs servidornfs:/mnt/datos /home/josemaria/datos

Si queremos hacerlo desde el fichero fstab, la línea a añadir para el mismo ejemplo anterior sería esta:

servidordns:/mnt/datos /home/josemaria/datos nfs auto,user,noexec,rw

Un par de notas finales. NFS siempre ha recibido muchas críticas por su seguridad hasta la versión 3. La versión 4, que es la que implementan ya los kernels modernos de Debian y sus derivados (Ubuntu, etc.), puede usar Kerberos para proporcionar seguridad en los accesos si así lo requerimos. Por último, aquí tenéis una buena comparativa que señala las debilidades y fortalezas de los sistemas de compartición de archivos más comunes (CIFS es la versión de SMB implementada por los sistemas de Microsoft).

Proxy transparente con Squid en Debian

icono de herramientas Si fuese cristiano pensaría que Zaryn Dentzel es el anticristo y esa abominación suya que se llama tuenti el camino a la perdición de toda una generación de adolescentes que prefieren perder el tiempo con estas bobadas en lugar de atender a las clases… O eso hacían, antes de que instalara el proxy con squid, claro. ¿Necesitáis un filtro de contenido eficiente y barato que funcione con software libre? Pues acompañadme…

La máquina que hará de proxy debe de tener dos tarjetas de red. Le instalamos una Debian seleccionando como interfaz de red primaria la que irá conectada al router externo, en mi caso la eth0. La instalación ha de ser mínima (sólo sistema estandard) para que la máquina no tenga ningún servicio superfluo.

Al final, el diagrama de red que perseguimos es como este:

Diagrama de red con Squid

Después del primer arranque configuramos las tarjetas de red en /etc/network/interfaces. Las mías quedan de la siguiente forma:

allow-hotplug eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.252
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.3

allow-hotplug eth1
iface eth1 inet static
address 192.168.100.1
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255

Instalamos ahora los paquetes correspondientes a los servicios que vamos a necesitar y que no vienen incorporados en la instalación por defecto: dhcp y squid:

sudo apt-get install dhcp squid

Usaremos el servicio dhcp para asignar direcciones en nuestra red interna. Para configurarlo debemos, primero, editar el fichero /etc/default/dhcp para especificar la interface que queremos que use el servicio (por defecto es eth0 y nosotros lo queremos en eth1). Para ello basta con completar la siguiente línea en dicho fichero:

INTERFACES="eth1"

Luego editamos el fichero /etc/dhcpd.conf y configuramos los datos correspondientes a la subred que vamos a administrar:

subnet 192.168.100.0 netmask 255.255.255.0 {
     range 192.168.100.100 192.168.100.254;
     option broadcast-address 192.168.100.255;
     option routers 192.168.100.1;
     option domain-name-servers 80.58.61.250, 80.58.61.254;
     }

Y ahora ya arrancamos el servicio de dhcp con /etc/init.d/dhcp start

ACTUALIZACI?N PARA DEBIAN 7: Hay algunos cambios en lo relativo a la instalación del servidor dhcp:

  • El paquete de instalación se llama ahora dhcp3-server
  • El fichero de configuración principal (donde seleccionamos el interface de escucha) se llama ahora isc-dhcp-server y sigue estando en el directorio /etc/default
  • El fichero donde configuramos los pool de direcciones se sigue llamando dhcpd.conf pero se encuentra ahora en el directorio /etc/dhcp
  • El daemon del servicio se llama ahora isc-dhcp-server

Ya casi estamos. Ahora vamos a hacer unos cambios en el fichero de configuración de squid (/etc/squid/squid.conf). Primero localizamos la línea con el puerto de entrada de squid (por defecto http_port 3128) y añadimos el parámetro transparente. Debe de quedarnos algo así:

http_port 3128 transparent

A continuación de esto, y en el mismo fichero, añadimos la siguiente línea:

acl lan src 192.168.1.2 192.168.100.0/24

Y, por último, buscamos la siguiente línea y la descomentamos (o la escribimos si no aparece):

http_access allow localnet

Ahora sólo nos queda configurar la máquina como router y direccionar el tráfico web que recibe por el interfaz interno (eth1) al puerto 3128 que es el que usa squid. Esto lo hacemos gracias a IPtables (que vienen instaladas en Debian por defecto) y al script que os copio a continuación (que he tomado de las páginas de Unixcraft) y que debes de configurar para que se ejecute de forma automática en el arranque de la máquina:

#!/bin/sh
# squid server IP
SQUID_SERVER="192.168.1.2"
# Interface connected to Internet
INTERNET="eth0"
# Interface connected to LAN
LAN_IN="eth1"
# Squid port
SQUID_PORT="3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

Si hemos arrancado de forma manual el script anterior, a continuación hay que reiniciar el daemon de squid:

service squid restart

Y lo que nos queda ya es bien fácil: personalizar la página que muestra Squid cuando tratas de visitar una página restringida (esto es opcional, claro, pero conveniente) y configurar las reglas de páginas prohibidas y permitidas. Si tenéis problemas con el tema de las reglas u os resulta más cómodo contar con una interfaz web para la configuración de estas, webmin tiene un módulo para la configuración de squid.

net2ftp: un cliente web para tu servidor FTP

herramientas En la mayoría de los casos, proporcionar un cliente web para acceder a un servidor FTP no es algo que aporte valor añadido alguno: clientes FTP los hay a patadas y para todos los gustos y cuando nos sea imprescindible o conveniente usar el navegador para acceder a nuestro FTP (sólo para bajar archivos, ojo) podemos usar la sintaxis siguiente:

ftp://usuario:contraseña@servidor/ruta

Un cliente web te sirve, sobre todo, para resolver dos situaciones: una técnica y la otra humana. En un ambiente muy restrictivo en cuanto a políticas de cortafuegos en el que sólo se te permite ofrecer a tus clientes acceso web a los servidores internos de la empresa, puedes ofrecer un servicio de FTP mediante una de estas utilidades (ya que el tráfico real por FTP se realiza siempre entre servidores internos). En el segundo caso, el humano, se trata de evitar problemas cuando tienes que ofrecer este servicio a un grupo muy heterogéneo de usuarios (muchos de ellos sin formación técnica alguna) y sin tener que preocuparte de lo que tienen instalado en sus ordenadores, de normalizar clientes para resolver problemas, etc. Basta con que tengan conexión a Internet y un navegador.

En cualquiera de estos dos casos (y seguro que se os ocurre alguno más) net2ftp es una solución elegante y fácil de implementar. Es software libre (¡por supuesto!) y la instalación es muy sencilla.

Pantallazo del net2ftp

Además tiene soporte para pieles (skins, uno de ellos muy ligero para ser usado desde dispositivos móviles), complementos (plugins), etc.

Taskfreak!

herramientas Después de una evaluación (bastante informal, todo hay que decirlo) de entre la colección de herramientas para implementar GTD que os enlacé desde aquí hace unos días he decidido quedarme con Taskfreak!.

La primera parte del proceso de selección fue bien sencilla: debía de ser una herramienta web (para colgarla en mi servidor web y que sea accesible desde cualquier sitito), gratuita y de código abierto (por evidentes razones) y que usara tecnologías que me resultaran cómodas y familiares (PHP, MySQL, etc.). De entre las opciones que quedaron después de este filtro, eché un vistazo a las funcionalidades que estaba buscando y me quedé con sólo dos. Y al final ganó este Taskfreak!

Taskfreak

NOTA: El procedimiento de instalación y las funcionalidades que cuento en esta entrada se corresponden con la versión 0.62 multiusuario.

El procedimiento de instalación es tan sencillo como el de cualquier otra aplicación de este tipo: creas un nuevo servidor virtual, dejas en él el código, creas una base de datos y modificas los datos correspondientes a la conexión a la misma en las líneas adecuadas del fichero config.php (que se encuentra dentro del directorio include)

define('TZN_DB_HOST','edita_esto');
define('TZN_DB_USER','edita_esto');
define('TZN_DB_PASS','edita_esto');
define('TZN_DB_BASE','edita_esto');

Una vez hecho esto ejecutamos, ya desde nuestro navegador, el fichero /install/index.php (apuntando correctamente a la URL que hayamos creado para nuestra nueva instancia web) y se crearan las tablas y recursos necesarios para empezar a trabajar con él. El usuario por defecto es admin y la contraseña está en blanco. Es conveniente ponerle una contraseña a este usuario y borrar el directorio install completo una vez que nos aseguremos de que todo está correcto.

El programa cuenta con traducción al castellano y tan sólo hay que hacer un par de modificaciones más para disfrutarlo así. Cambiar una línea más en el mismo fichero config.php (buscar la línea define('FRK_DEFAULT_LANGUAGE','en'); y sustituir 'en' por 'es'), y otra en el fichero calendar-setup.php dentro del directorio jscalendar: en la línea done pone param_default("firstDay",0); sustituir el 0 por un 1 para que las semanas empiecen por lunes y no por domingo. Existe un problemilla menor con la traducción al castellano: el fichero calendar-es.js con la traducción al castellano del jscalendar (dentro de jscalendar/lang) viene codificado en ISO-8859-1 mientras que el resto del proyecto lo está en formato UTF-8 y los caractéres acentuados no se muestran correctamente. La solución es tan fácil como cambiar la codificación del fichero y volver a subirlo a nuestro servidor web.

Y, para que se os meta por los ojos, os hago un pequeño resumen de algunas de las características que más me han gustado y me han hecho decantarme por este programa:

filtros en taskfreakFiltros. Existen dos tipos de filtros: por contexto (personales, de trabajo, reuniones, etc.) y por proyecto.
filtros en taskfreakLos contextos se eligen de entre una lista predefinida mientras que los proyectos los crea el propio usuario. Yo suelo trabajar con sólo dos contextos (personales y de trabajo) así que no me afecta mucho que sean tan rígidos. Se pueden realizar vistas filtradas tanto por contexto como por proyectos (y por una combinación de ambos) y, además, elegir si queremos ver las tareas pendientes, las concluidas o todas. Existen también filtros referentes a usuarios (he instalado la versión multiusuario por si acaso…).

clasificación de tareas en taskfreakClasificación y ordenación. Las vistas de tareas pueden clasificarse por prioridad, contexto, proyecto, título, usuario o fecha tope de finalización. La identificación de prioridades y contextos usa un sistema muy intuitivo basado en colores. Y una consideración aquí para los puristas: las implementaciones de GTD más tradicionales usan una clasificación basada en cinco niveles: tareas inmediatas, para esta semana, este mes, este año y “quizás algún día”. Aquí esta clasificación no existe y se sustituye por una escala de prioridades de 1 a 9 y la posibilidad de poner una fecha tope de finalización.

Creación de nuevas tareas. El proceso es tan sencillo como pulsar un botón y cumplimentar la sencilla ficha que aparece a continuación donde la mayor parte de los campos son opcionales o se rellenan por defecto.

creación de nuevas tareas en taskfreak

progreso, comentarios y etc. en taskfreakComentarios, progreso, edición y eliminación de tareas. Con un sólo click se pueden añadir comentarios a las tareas, entrar de nuevo en la ficha de edición, eliminarlas o modificar la información de su estado de progreso. El progreso se muestra en una escala de cinco niveles (cada uno corresponde a un 20% de la tarea) y se muestra mediante cuadros de colores que van del rojo al verde. Si pulsamos directamente sobre el quinto recuadro (100%) la tarea se dará por concluida.

históricos de tareas concluidad en TaskfreakHistóricos. Las tareas concluidas se guardan en un histórico (disponible desde uno de los filtros, como hemos visto antes) y con toda la información asociada a su evolución, comentarios, etc.

En definitiva, y siempre a mi juicio, se trata de una implementación muy útil tanto para gestión del tiempo de forma personal como para pequeños grupos de trabajo.

Dos últimos enlaces antes de dejarlo: existe un foro de soporte asociado al proyecto y, aunque no lo he mirado aún, he visto que también tiene soporte para plugins y algunos desarrollos que pueden consultarse en este apartado del foro.

Y para los que quieran probar una alternativa mi segunda opción era TaskStep.

Rescue Time en GNU/Linux

herramientas Llevo algo más de una semana probando el servicio de Rescue Time a través del soporte no oficial para Linux y la verdad es que cuando “limen” los problemas que tiene puede ser una herramienta bastante útil para ver en que ocupamos el tiempo y ayudarnos a planificar mejor las horas que pasamos delante del ordenador.

Si queréis probarlo lo primero que hay que hacer es abrirse una cuenta. Las personales son gratuitas y las de grupos de trabajo de menos de cinco miembros también. Luego completamos nuestro perfil y pasamos a la página de descargas para GNU/Linux. El cliente que nos ofrecen está escrito en Python e incluye una extensión para Firefox y un applet para la barra de tareas de Gnome. Otros navegadores web no están soportados y la extensión de Firefox no parece funcionar correctamente en mi sistema (Kubuntu Hardy con firefox 3 RC1) aunque he podido comprobar que funciona a la perfección en Ubuntu Hardy con la misma versión de Firefox.

Una vez descargado y descomprido la instalación es bien sencilla. Entramos en el directorio donde hemos descomprimido el paquete y ejecutamos lo siguiente:

python setup.py build
sudo python setup.py install

A continuación instalamos el ‘plugin’ para firefox (el archivo con extensión xpi que está dentro del directorio firefox_extension) y ejecutamos el programa recolector de datos desde un terminal: rescuetime_linux_uploader.

En la primera ejecución nos pedirá usuario y contraseña (los correspondientes a la cuenta que hemos creado hace unas líneas). Luego ya no volverá a hacerlo.

josemaria@penique:/mnt/temp/downloads/rescuetime-linux-uploader-80$ rescuetime_linux_uploader
Your rescuetime username: josemaria@xxxxxxxx.xx
Your rescuetime password:
Logging in...
login success!
Main() started
Python version: 2.5.2 (r252:60911, May 7 2008, 15:19:09)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]

Konsole (josemaria@penique: /mnt/temp/downloads/rescuetime-linux-uploader-80 - Terminal - Konsole) now focused (Extended info: None)
D3lphin (downloads - Dolphin) now focused (Extended info: None)
D3lphin (rescuetime-linux-uploader-80 - Dolphin) now focused (Extended info: None)
Firefox (Un lugar en el mundo? ? Editar ?? WordPress - Mozilla Firefox) now focused (Extended info: None)

Los gráficos que tienes a tu disposición para analizar el consumo de tiempo delante del ordenador son muchos y variados: horarios, semanales, mensuales, por aplicación, etc. El problema que yo estoy teniendo ahora mismo es que hay muchas aplicaciones que me guarda sin identifcar y en el apartado de “otros”, entre ellas todas las que utilizo a través de un navegador debido al problema con Firefox y KDE que os comentaba hace unas líneas.

xxxx
xx
xx

Y no sintáis envidia al pensar que trabajo tan poquito como se ve en estas gráficas. Es sólo que no he tenido activo el servicio todo el tiempo (a ver si va a estar leyendo esto mi jefa y…)

ACTUALIZACI?N: Se me olvidaba. Si usáis KDE y queréis que el programita arranque nada más fácil que hacer un enlace simbólico en el directorio adecuado:

ln -s /usr/bin/rescuetime_linux_uploader $HOME/.kde/Autostart/rescuetime_linux_uploader

ACTUALIZACI?N (y II): Hay disponible una nueva versión (release 84) pero aún no corrige el problema con el Firefox. Para instalarla en los sistemas de la familia Ubuntu hay que tener previamente instalado el paquete bzr correspondiente a bazaar.

ACTUALIZACI?N (y III): Experimento cerrado por el momento. El plugin de Firefox rompe la funcionalidad de muchos otros plugins y bloquea la ejecución de muchas funciones de javascript evitando la ejecución normal de varias páginas que considero indispensables. Ya lo volveré a probar en otra ocasión…

Anda, anímate a usar Cacti

herramientasDebe de haber pocos programas tan fáciles de instalar y configurar y tan útiles para un administrador de sistemas como Cacti Yo no la conocía hasta que mi amigo Jose me la recomendó aquí mismo hace ahora justamente dos años y desde entonces es un “primer pick” obligado en cualquier sistema que me encomiendan.

Algunas gráficas de Cacti

La instalación en una debian o derivada es lo de siempre: apt-get install cacti y ya. Para la configuración basta con saber algo de SNMP y como configurar o habilitar este protocolo en los dispositivos que queramos monitorizar. ¿No te animas a probarlo?

OpenProj 1.01

icono de herramientas OpenProj sale de betas. Si estás buscando una herramienta de gestión de proyectos para sustituir a Microsoft Project (entre 390,00? y 1.200,00? según el tipo de licencia, que no se te olvide aunque no la estés pagando… 😉 ) y buscas que sea multiplataforma, software libre y que importe y exporte documentos en formatos .mpp lo mismo es esto lo que necesitas…

Pantallazo de OpenProj

Descargas aquí.