lunes, 16 de julio de 2007

Localiza el país de una IP desde la cónsola

Esta mañana leyendo el blog de Vertito he visto que hablaba sobre geoip de la empresa MaxMind. geoiplookup es una utilidad de línea de comandos incluida en el paquete geoip que nos permite conocer el país de origen de cualquier dirección IP o hostname. Su uso es muy sencillo, p.e:


$ geoiplookup 64.233.183.103
GeoIP Country Edition: US, United States



La versión de la base de datos que viene con la última versión estable para gentoo (1.4.0-r1) es de agosto del año pasado. No es la base de datos comercial que puedes comprar en la página de MaxMind que se llama GeoIP Country sino su hermana pequeña y gratuita GeoLite Country. También hay versiones que afinan más la procedencia hasta la ciudad o región pero éstas son de pago.

Para saber que base de datos usa geoip:


$ geoiplookup -v
GEO-106FREE 20060801 Build 1 Copyright (c) 2006 MaxMind LLC All Rights Reserved


Esta utilidad está sobretodo orientada a webmasters y ya está integrada en algunas herramientas de estadísticas web como awstats. Pero siempre es curioso tenerla a mano para nuestras pequeñas investigaciones sobre la red ;)

domingo, 15 de julio de 2007

check_openvpn_pl

Este plugin de Nagios comprueba el estado de los clientes conectados a un servidor OpenVPN mediante la interfaz de gestión del mismo. Para habilitar la interfaz de gestión en el servidor tenéis que incluir una línea como la siguiente en su archivo de configuración:

management IP port [pw-file]


Actualmente se accede a la interfaz de gestión mediante telnet sin ningún tipo de seguridad adicional por lo que se recomienda configurar la interfaz de gestión para que use la dirección local del túnel vpn o el localhost (127.0.0.1). Podéis encontrar más información sobre la interfaz de gestión aquí.

Las opciones -H (IP o hostname del servidor) y -p (puerto del servidor) son obligatorias siempre. Si el plugin puede conectarse con la interfaz de gestión mostrará el nombre común (tal como se especifica en el certificado de cliente) de los clientes conectados. Si no, terminará con estado crítico. La opción -i muestra las IP remota del cliente en vez de su nombre y la opción -n muestra el número de clientes conectados.

Se puede comprobar que un cliente en concreto esté conectado usando una de estas dos opciones -C (nombre común) o -r (IP remota). Si se usan estas opciones, también se debe especificar el estado de salida que devolverá el plugin si no encuentra el cliente mediante las opciones -w (warning) -c (critical).

Ejemplos de uso:


# Uso básico: devuelve los nombres de los clientes conectados la opción -t (timeout) es opcional el valor predeterminado es 10
check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -t 5
OpenVPN OK: cliente1 cliente2

# Devuelve las IP's remotas de los clientes en vez de los nombres
check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -i
OpenVPN OK: 192.168.0.5 192.168.0.15

# Devuelve el número de clientes conectados.
check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -n
OpenVPN OK: 2 connected clients.

# Comprueba si cliente1 está conectado y si no devuelve warning
check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -C cliente1 -w
OpenVPN OK: cliente1 cliente2

# Comprueba si la máquina con IP 192.168.0.15 está conectada y si no devuelve critical
check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -r 192.168.0.15 -c
OpenVPN OK: 192.168.0.5 192.168.0.15


Os podéis bajar el plugin de Nagios Exchange: check_openvpn_pl

jueves, 12 de julio de 2007

pinfo: otra forma de consultar info

Si sois como yo seguro que odiáis las páginas de info, ya sabéis, el formato de documentación del proyecto gnu. A mí, siempre me ha parecido muy engorrosa la navegación a través de estas páginas y siempre terminaba consultado las man (si es que las había) aunque no fuesen tan completas. Pues bien,con pinfo se acabo el sufrimiento.

pinfo ofrece coloración de enlaces y navegación entre enlaces mediante los cursores semejante a lynx lo cual hace la navegación muy intuitiva. Esta es la página info de grub vista con info:


Y aquí la misma página vista con pinfo, en esta segunda toma los enlces están coloreados de azul y así es más fácil distinguirlos:


Si queréis olvidaros definitivamente del "horrible" info añadid a vuestro .bashrc (sin comillas) "alias info=pinfo" así cada vez que ejecutéis info, realmente estaréis ejecutando pinfo.

lunes, 9 de julio de 2007

Auditoría de vulnerabilidades en Gentoo

glsa significa Gentoo Linux Security Advisory que podríamos traducir por Asesor de Seguridad de Gentoo Linux. Es un sistema para informar de vulnerabilidades en los paquetes instalados en sistemas Gentoo/Linux. A continuación os mostraré como montar un sistema que audite diariamente nuestra máquina y nos envié un mail a una cuenta de gmail con el resultado de la auditoría.

Esto yo lo tengo montado en una máquina que hace de router para mi red. Este ejemplo es aplicable en el caso de que no dispongamos de un servidor de correo propio. Si tuvieramos servidor de correo podríamos enviar los resultados de la auditoría directamente a través de glsa-check.

Para poder enviar mails a gmail tendréis que instalar el paquete sendEmail. También debéis instalar el paquete gentoolkit que es el que contiene la herramienta glsa-check. A continuación crearemos un script para enviar los mails, lo podemos llamar por ejemplo /usr/local/bin/smail.sh


#!/bin/sh

SE=/usr/bin/sendEmail
TOMAIL=my@gmail.com # la cuenta desde la que enviamos el mail
MAIL=myother@gmail.com # la cuenta en la que lo recibiremos
MAILSERVER=smtp.gmail.com:587
MAILUSER=myuser # el usuario de la cuenta desde que enviamos el mail
PASSFILE=/root/.mypass # archivo que contiene el password de la cuenta desde la que enviamos el mail (chmod 400)


while getopts s:a:m: OPTIONS; do
case "$OPTIONS" in
s) SUBJECT=$OPTARG;;
a) ATTACHMENT=$OPTARG;;
m) MESSAGE=$OPTARG;;
esac
done

if [ ! -z "$MESSAGE" ]; then
$SE -t $TOMAIL -f $MAIL -s $MAILSERVER -xu $MAILUSER -xp $(cat $PASSFILE) -o tls=yes -u "$SUBJECT" -m "$MESSAGE"
else
$SE -t $TOMAIL -f $MAIL -s $MAILSERVER -xu $MAILUSER -xp $(cat $PASSFILE) -o tls=yes -u "$SUBJECT" -o message-file="$ATTACHMENT"
fi

# die gracefully
exit 0


Añadimos la siquiente línea a /etc/crontab para ejecutar glsa-check cada noche a las 00:15h y que nos envíe el mail:

15 0 * * * root /usr/bin/glsa-check -t all &> /var/log/glsa && /usr/local/bin/smail.sh -s "glsa" -a /var/log/glsa


Enlaces:
Sitio de glsa
glsa feed

jueves, 5 de julio de 2007

Vim Plugin: template file loader

Éste plugin nos permite cargar una plantilla en un archivo al empezar a editarlo con vim. Por ejemplo, siempre que empiezas a escribir un nuevo script de perl (o de cualquier otra cosa) tienes que escribir las mismas cosas, el interprete (shebang!), los módulos que vas a usar, información de la licencia (si usas) etc. ¿No sería maravilloso tener una plantilla con todo eso que se repite siempre y no tener que escribirlo una y otra vez? Pues eso es precisamente lo que hace "template file loader" para ti ;)

Por cada nuevo archivo que edites este plugin busca si tienes una plantilla que concuerde con la extensión del archivo. Las plantillas son unos archivos llamados skel.* (donde * es la extensión que debe coincidir) que se guardan en el directorio $HOME/.vim/templates.

La instalación es muy sencilla, sólo tienes que descomprimir el tar.gz y mover los directorios plugin y templates a tu directorio $HOME/.vim/

Os podéis bajar el plugin desde aquí: template file loader

Aquí os dejo mi plantilla para los scripts de perl, skel.pl:


#!/usr/bin/perl -w

#######################################################################
#
# Copyright (c) 2007 Jaime Gascon Romero
#
# License Information:
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
# $Id:$
# $Revision:$
# #####################################################################

use diagnostics;
use strict;

# vim:sts=2:sw=2:ts=2:et

miércoles, 4 de julio de 2007

check_mcpu

Éste es un plugin de nagios para comprobar el uso de las cpus de una máquina. Sirve tanto para máquinas con un sólo procesador como para máquinas con múltiples procesadores. Comprueba individualmente cada cpu y devuelve 'critical' o 'warning' si el tanto por ciento de cpu libre es menor que el de los valores que le pasemos. El plugin usa la herramienta mpstat que viene en el paquete sysstat.

Todos los argumentos son opcionales así que lo podemos usar sin pasarle ningún argumento.Los valores predeterminados son: warning = 20, critical = 10, reports = 1, interval = 1. Para saber que significan los dos últimos valores podéis consultar la página man de mpstat, pero básicamente son las pasadas que realiza mpstat para determinar el uso de cpu (reports) y los segundos entre pasadas (interval).

Al estar escrito en perl usa alguna funciones del módulo utils.pm que viene con el paquete nagios-plugins. Aseguraos que el valor de 'use lib "/usr/nagios/libexec";' sea el correcto para vuestra máquina.

Si al ejecutar el plugin os responde lo siguiente: "Strange mpstat output: install mpstat without nls support.", tenéis dos opciones:

1.- Instalar sysstat sin soporte para nls (native language support).
2.- Cambiar "Average:" en la línea 81 por lo que veáis al ejecutar 'mpstat -P ALL 1 1'. Seguramente sera algo así como "Media: ".

Podéis bajaros el plugin desde Nagios Exchange: check_mcpu.

print "Hello world!\n";

No he podido resistirme ;)

Una de las cosas que me impulsó a usar Linux, hace ya unos cuantos años , fue el contenido social de las propuestas de la Free Software Foundation, GNU y toda la comunidad del software libre en general. Siempre me ha parecido muy atractiva la idea de estos hackers de que el conocimiento tiene que ser libre y compartido universalmente.

Pues bien, después de tanto tiempo de usar software libre ya es hora de devolver, aunque sea poco, a esta comunidad. Desde aquí compartiré pequeñas guías, trucos y scripts para facilitar la vida a todos aquellos que usamos Linux.

#EOF