VMWare Tools en Debian Squeeze

Vamos a simplificar, si queremos instalar las VMWare Tools en una Debian Squeeze;

 vi /etc/apt/sources.list

a帽adimos;

deb http://ftp.es.debian.org/debian/ squeeze main contrib

deb-src http://ftp.es.debian.org/debian/ squeeze main contrib

Ejecutamos;

apt-get update 

apt-get install open-vm-tools open-vm-source 

module-assistant auto-install open-vm -i

 

Listo 馃槈

OpenVPN netsh command failed: returned error code 1

Estoy preparando el manual de instalaci贸n de OpenVPN en Debian Squeeze y al finalizar todo el proceso solo me quedaba realizar la primera conexi贸n pero me he encontrado una sorpresa. En el caso de OpenVPN 1.0.3 para Windows (en este caso Windows 7) nos aparece un error al realizar la conexi贸n;

TAP-WIN32 device [LAN1] opened: \.Global{42DD2F8F-045C-4FA3-A56F-9289645100D6}.tap
NETSH: C:WINDOWSsystem32netsh.exe interface ip set address LAN1 dhcp
ERROR: netsh command failed: returned error code 1
NETSH: C:WINDOWSsystem32netsh.exe interface ip set address LAN1 dhcp
ERROR: netsh command failed: returned error code 1
NETSH: C:WINDOWSsystem32netsh.exe interface ip set address LAN1 dhcp
ERROR: netsh command failed: returned error code 1
NETSH: C:WINDOWSsystem32netsh.exe interface ip set address LAN1 dhcp
ERROR: netsh command failed: returned error code 1
NETSH: command failed
Exiting

En este caso (netsh Command failed: returned error code 1) tenemos una soluci贸n simple.

En el fichero de configuraci贸n del cliente introducimos el siguiente comando

script-security 2 system

Con esto conseguiremos una conexi贸n normal

Para una explicaci贸n de los motivos oficiales, mirad en el siguiente enlace

 

Introduccion a los buffers overflows

Hola, bueno pues voy a por mi primer mini-turorial a ver que os parece. Tratare sobre los overflows en este caso los stacks overflows ya que creo que es una tecnica donde entran conocimientos de informatica que son interesantes conocer

  • Programacion
  • Arquitectura de Ordenadores

En este primer contacto no voy a profundizar con todo lo que conlleva, de momento claro, este tipo de tecnica si no que intentare que sea divertido, 谩gil y sobre todo entendible para todos los publicos.

驴Que es un stack-overflow?

Un stack-overflow es el intento de controlar un flujo de ejecucion mediante un tama帽o de datos inesperado. Vereis que cuando termine el tutorial entendereis perfectamente la definicion anterior.

En este primer mini-tutorial me centrare en explicar y demostrar como podemos controlar la ejecucion en este caso de un programa muy basico hecho en C

Registros del procesador

El procesador consta de varios registros para poder realizar su trabajo, pero nosotros por el momento solo nos vamos a centrar en uno el registro EIP

Este registro siempre almacena la siguiente instruccion a ejecutar, bueno mejor dicho este registro siempre tiene la siguiente direcci贸n de memoria por la cual el procesador continuara ejecutando.

Imaginemos la siguiente secuencia 5 4 3 2 1 e imaginemos tambien que dicha secuencia son direcciones de memoria. Bien el procesador ejecuta la direccion 5, en ese momento el valor del registro EIP es 4, despues de ejecutar 5 el procesador ejecuta 4, en ese momento el valor del registro EIP es 3 y asi sucesivamente. Ha esto se le llama Flujo de Ejecuci贸n

Lo dicho el valor de EIP siempre sera la siguiente direccion de memoria a ejecutar por el procesador.

Ejemplo practico 馃檪

 

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

void greeting(){
     printf("%sn", "HOLAAAA");
}

int main(int argc, char *argv[]){
    char buffer[16];
    strcpy(buffer, argv[1]);
    printf("%sn", buffer);

    return 0;
}

Aqui tenemos un programa, bastante inutil la verdad, pero nos ira de perlas para demostrar lo que hemos leido anteriormente. Doy por sentado que TODOS sabemos un poquito de C 驴verdad?

Bueno al grano, en la linea 10 vemos el fallo del programa la funcion strcpy. Esta funcion lo que hace es copiar, SIN CONTROLAR LA CANTIDAD DE BYTES, desde un origen de datos a un destino. En nuestro caso copia el 1er argumento de la funcion principal al buffer que hemos declarado de 16 bytes.

Bien y que pasa si el primer argumento que le pasamos a la funcion principal es superior a 16 bytes???

Pues los bytes sobrantes no se pierden por el limbo no, lo que haran son sobreescribir los contenidos de las direcciones de memoria contiguas.

En este dibujillo vemos dos registros nuevos y la pila o stack. Aun no voy a entrar en explicar la pila, de momento, porque os aseguro que es imprescindible conocer como funciona. Los dos registros nuevos son ESP este registro muestra la cima de la pila y EBP que nos muestra la base de la misma y por debajo de todo vemos el famoso registro EIP.

Como vemos en el programa hay una funcion que lo que hace es imprimir por pantalla un “Holaa” pero como podeis ver esa funcion no es llamada en ningun momento, con lo cual no se mostrara ese mensaje. Pues lo que vamos hacer es que el聽 mensaje se muestre y para eso vamos a controlar el flujo de ejecucion.

Herramientas.

Hay varias herramientas necesarias para poder explotar una vulnerabilidad de este tipo pero de momento nos centraremos en una… Ollydbg

Se trata de un debugger para windows bastante sencillo. El uso de este debugger queda fuera del alcance de este Mini-tutorial pero os aconsejo que pilleis un manual y os pongais con el.

Por supuesto necesitaremos un compilador, yo uso Dev-C++ bastante intuitivo.

Juguemos a los hackers

Bien una vez tenemos compilado el programilla de antes… A que no lo habeis hecho aun 卢卢 Va go go go

Lo dicho una vez compilado el programilla lo abrimos con el ollydbg.

 

 

 

 

Se nos abrira una ventana de dialogo, buscamos donde este el binario del resultado de compilar el programilla

 

 

 

 

 

 

 

 

 

 

 

 

Una vez cargado le damos a ejecutar que es el botoncillo ese del play

NOTA: Hay gente que solo al abrir el programa el ollydbg ya le carga el modulo del programa. Si os fijais en la imagen de arriba vereis como a mi me abre con… main thread, module ntdll si os abre como a mi tendreis que darle al boton de play. Si no es vuestro caso y os abre con el module [nombre Programa] No hace falta que le deis al boton play.

 

Ahora nos centraremos en este desensamblado

 

 

 

 

 

 

 

 

 

 

Os acordais de antes cuando hablaba de la secuencia aquella de numeros 5 4 3 2 1 que representaban direcciones de memoria??

Pues los numeros que veis a la izquierda聽 004012xx 004013xx eso son las direcciones de memoria

Si os fijais bien el valor de la direccion 00401296 es “HOLAAA” el mensaje que queremos que se muestre, mmmm interesante

Seguimos viendo el codigo y mmmm vemos en 004012E8 la sentencia strcpy, que como he comentado antes, esta funcion copia un origen de datos a un destino sin comprobar el tama帽o de datos.

observemos el dibujo de la pila y pensemos un poco

 

 

 

 

 

 

 

 

Vemos que debajo de Buffer esta EBP y despues de EBP tenemos EIP Bien pensemos en todo lo que ya se ha explicado… strcpy copiara en buffer todo lo que le pasemos como parametro, como no controla la cantidad de datos podemos pasarnos de los 16 bytes. Tambien sabemos que pasa con los bytes sobrantes que sobreescriben mmmm podriamos llegar a sobreescribir EIP ??

Por supuesto que podemos sobreescribirla y de hecho es lo que queremos, recordad que EIP siempre apunta a la siguiente direccion a ejecutar, pues cojonudo vamos a darle a EIP la direccion del mensaje a mostrar. Vamos a ver como lo hacemos

Arrancamos el ollydbg y cargamos el programa compilado. Vamos a la pesta帽a Debugg y le damos a Arguments

Copiamos treinta A mayusculas y le damos a OK. Olly nos avisara de que los cambios no tendran efecto hasta que hagais un restart en el ollydbg. Pues en Debugg tenemos la opcion restart le damos.

Ahora le damos al Play del ollydbg y pondremos un breakpoint en la linea del strcpy con esto conseguiremos detener la ejecucion del programa justo en el strcpy

Nos situamos encima de la direccion de memoria del strcpy

 

 

 

Pulsamos boton derecho vamos a breakpoint y seleccionamos toggle

 

 

 

 

 

 

 

Le damos a restart y a play otra vez. Se iniciara el programa pulsamos F9 e iremos directamente al breakpoint. volvemos a ejecutar F9 y zasss Mensaje de error

 

 

Lo primero para el que no lo sepa, el valor hexadecimal de la A es 41 Si os fijais bien El valor de EBP es 41414141 mmmm que significa? Pues que hemos sobrepasado el tama帽o de buffer con las A y hemos sobreescrito EBP

Y el valor de EIP ?? Pues el valor es 00004141 Esos ceros significa que no hemos sobreescrito completamente el registro EIP. Ningun problema a帽adamos dos A mas a los argumentos en el ollydbg

 

Ahora si !!!! ahora tenemos EIP sobreescrito completamente con nuestras A. Bien ahora mismo sabemos que con 32 bytes sobreescriremos el valor de EIP.

Ok pero no conseguimos nada sobreescribiendo con EIP con A

Correcto con A no sirve de nada pero y si en lugar de A usaramos la direccion de memoria donde esta ubicada la funcion del mensaje de saludo???

Pues como EIP siempre apunta a la siguiente instruccion a ejecutar por el procesador se mostraria el mensaje de la funcion la cual nunca es llamada.

Los viajes de gulliver de Jonathan Swift

Supongo que la mayoria conoce este libro / pelicula y me gustar铆a hacer hincapie en un acontecimiento de la historia en el cual una ley antiquisima de liliput obliga a la gente a abrir los huevos para comerselos por el lado estrecho, mientras otra gente le gusta abrirlos pero el lado ancho.

Y para que esta historia ??? Pues porque me apetecia contarla esto es un blog no??? Y tambien porque hemos de hablar de los endiannes que se basan en esta novela.

Los procesadores intel se basan en little-endian , mientras que motorolas se basan en big-endian.

Basicamente una direccion de memoria en intel (little-endian) se almacena de la siguiente manera…

Direccion de memoria: 47EF152A Formato Little-Endian: 2A15EF47

Se tiene que invertir el orden. En cambio en big-endian queda de la misma manera 47EF152A

Probando el “Exploit”

Bien pues vamos al lio, ejecutemos el programilla inutil desde un cmd. Sabemos que para sobreescribir EIP tenemos que utilizar 32 bytes, bien pues tenemos que conseguir que EIP contenga la direccion del mensaje a mostrar, miremos la direcci贸n.

Cargamos el programa en el ollydbg le damos al play y buscamos la direccion del mensaje

Vemos que ASCII “HOLAAA” esta en 00401296 pero como somos gente elegante lo que vamos hacer es llamar a la funcion entera pa que muestre el saludo y eso se encuentra en la instruccion PUSH EBP direccion 00401290. PUSH es una instruccion que lo que hace es insertar en la pila pero eso es otro cuento que os prometo contare en los proximos tutos. Eso si, si veo que este lo mira la gente si no va ha escribir mi prima.

Bueno pues eso con 32 bytes sobreescribimos EIP y vemos que las direcciones son 4 bytes. Pues invocamos a pitagoras y deducimos que para alinear la direccion que queremos con EIP hay que restarle 4 bytes a las 32. Nos quedan 28 bytes o sea 28 A, pues ahora a las 28 A le a帽adimos la direccion del PUSH EBP 00401290 pero recordad que hemos dicho que usamos formato little-endian entonces las pondremos al reves o sea AAAAAAAAAAAAAAAAAAAAAAAAAAAA90124000

Quietos y paraos que aun esto no funciona, ya os veo metiendolo rapidamente como argumento… Pues no, no funcionara. Antes de eso vamos a comentar un par de cosas… Una de ellas es la direccion de memoria que vamos a utilizar, fijaros que empieza por 00

Pues es un problema y no lo es. Es un problema porque 00 lo interpretara como fin de cadena, con lo cual dejaria de escribir en el buffer y no lo es porque como esta en formato little-endian y lo vamos a poner al reves no nos cortara nada de nada jajajajajajajjajajaj me encantaaaaaa. Es que asi me libro de escribir como podriamos solucionar el problema del 00 :p

Y el segundo es que no podemos poner directamente la direccion si no tenemos que pasarlo a ASCII.

Yo lo hago con el notepad++ y un plugin, pero bueno hacedlo con el que querais no hay problema

el exploit seria… AAAAAAAAAAAAAAAAAAAAAAAAAAAA901240 y omitimos los 00 del final ya que no hacen falta

Recordad que el 901240 teneis que pasarlo a ASCII

Probemos

Fijaros como queda mi direccion cuando la paso a ASCII, ahora pulsemos ENTER!!!! que nerviosssssss….

Zasssskaaaa en toa la bocaaaa ahi esta el Saludeteeeeee 馃檪

No ha sido muy dificil no? Espero que os haya funcionado si no es asi repasad y mirad no os hayais dejado algo por hacer. Las direcciones de memoria no tienen porque ser las mismas que las mias asi que no seais ga帽anes y mirad bien eso.

He intentado demostrar que es controlar el flujo de ejecucion y creo que lo hemos conseguido, hemos controlado ese flujo mediante un tama帽o de datos no esperado ergo hemos provocado un stack-overflow. No os penseis que con esto ya podremos “Dominar el mundo” nada mas lejos de la realidad, aun falta un caminito para poder aprovechar como dios manda un fallo de este tipo. ASLR, cookie(canary), DEP son terminos que nos tocaran las narices, peroooo para eso estamos para SALTARNOS esas cosas 馃槈

Si teneis cualquier duda ya sabeis postead e intentare ayudaros en lo que buenamente pueda.

Seria interesante que os mirarais para los proximos tutos temas como..

  • La pila (Stack)
  • Programacion C y python (Me encanta)
  • ensambler

Sera muy util la verdad.

Bueno ha sido un placer escribir, espero que os haya gustado y espero veros en los proximos diassssss.

Saludos.

bt380

 

 

Ampliar FileSystem en cluster AIX HACMP

Vamos a listar de FS que tenemos

[AIXServer].root:/ > df -m
Filesystem聽聽聽 MB blocks聽聽聽聽聽 Free %Used聽聽聽 Iused %Iused Mounted on
/dev/hd4聽聽聽聽聽聽聽聽 256.00聽聽聽 140.58聽聽 46%聽聽聽聽 3021聽聽聽聽 3% /
/dev/hd2聽聽聽聽聽聽聽 2688.00聽聽聽 740.54聽聽 73%聽聽聽 34655聽聽聽聽 6% /usr
/dev/hd9var聽聽聽聽 5120.00聽聽 1268.55聽聽 76%聽聽聽聽 2043聽聽聽聽 1% /var
/dev/hd3聽聽聽聽聽聽聽聽 512.00聽聽聽 477.04聽聽聽 7%聽聽聽聽 1053聽聽聽聽 1% /tmp
/dev/hd1聽聽聽聽聽聽聽聽 128.00聽聽聽聽 97.62聽聽 24%聽聽聽聽聽 412聽聽聽聽 2% /home
/proc聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 –聽聽聽聽聽聽聽聽 –聽聽聽 –聽聽聽聽聽聽聽聽 –聽聽聽聽 –聽 /proc
/dev/hd10opt聽聽聽聽 256.00聽聽聽聽 91.47聽聽 65%聽聽聽聽 3065聽聽聽聽 5% /opt
/dev/inst_lv聽聽聽 1920.00聽聽聽 617.22聽聽 68%聽聽聽聽聽 402聽聽聽聽 1% /usr/sys/inst.images
/dev/admin聽聽聽 128.00聽聽聽聽 73.79聽聽 43%聽聽聽聽聽 102聽聽聽聽 1% /usr/local/admin
/dev/tempinglv聽聽 1920.00聽聽聽 593.36聽聽 70%聽聽聽聽聽 753聽聽聽聽 1% /temping
/dev/loglv聽聽聽聽聽 1024.00聽聽聽 251.11聽聽 76%聽聽聽聽聽 977聽聽聽聽 1% /logs
/dev/securitelv聽聽 2432.00聽聽聽聽聽 0.00聽 100%聽聽聽聽聽 938聽聽聽聽 1% /tools/securite
/dev/rcu_lv聽聽聽 17408.00聽聽 3071.92聽聽 83%聽聽聽 65214聽聽聽聽 9% /home/app
/dev/lv1聽聽聽聽聽聽聽聽 496.00聽聽聽 495.60聽聽聽 1%聽聽聽聽聽聽 10聽聽聽聽 1% /nfs1test

Queremos ampliar el FS /dev/rcu_lv de 17Gb a 20Gb

Vamos a listar el tama帽o de este FS (se muestra en bloques de 512, cosas de la historia)

[AIXServer].root:/ > lsfs /dev/rcu_lv
Name聽聽聽聽聽聽聽聽聽聽聽 Nodename聽聽 Mount Pt聽聽聽聽聽聽聽聽聽聽聽聽聽聽 VFS聽聽 Size聽聽聽 Options聽聽聽 Auto Accounting
/dev/rcu_lv聽聽聽聽 —聽聽聽聽聽聽聽聽 /home/app聽聽聽聽聽聽聽聽聽聽聽聽聽 jfs2聽 35651584 rw聽聽聽聽聽聽聽聽 no聽聽 no

Calculamos el nuevo espacio. En nuestro caso pasamos de 17Gb a 20Gb

[AIXServer].root:/ > bc
35651584/2聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 (dividimos por 2 por el tema de los bloques de 512)
17825792
17825792/1024聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 (para mostrar el tama帽o en Mb)
17408
17408/1024聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 (para mostrar el tama帽o de Gb)
17聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽(los 17Gb que tenemos tendremos que calcular el tama帽o nuevo)
20*1024*1024*2聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽(queremos 20Gb y vamos a pasarlo en bloques de 512)
41943040 (este es el nuevo tama帽o)

Ampliaremos el FS por smitty desde la opci贸n de HACMP. si lo hicieramos directamente en la maquina, el nodo pasivo no se daria cuenta del cambio y al balancear el servicio tendriamos problemas

Vamos a Smitty HACMP
[AIXServer].root:/ > smitty hacmp

Vamos a System Management (C-SPOC)

HACMP Logical Volume Management

Shared File Systems

Enhanced Journaled File Systems

Nota! Tal y como dice Carlos-Vindobona en los comentarios, si el FS es JFS en vez de JFS2 (que es con el que trabajamos ahora)聽marcariamos “Journaled File Systems”

Change / Show Characteristcs of a Shared Enhanced Journaled File Systems

Ahora ponemos en SIZE of file system el resultado de 20Gb*1024*1024*2=41943040

 

Enter y…

Ya tenemos el resultado, el nuevo FS tiene 20Gb de espacio

Vamos a verlo;

[AIXServer].root:/ > df -m
Filesystem聽聽聽 MB blocks聽聽聽聽聽 Free %Used聽聽聽 Iused %Iused Mounted on
/dev/hd4聽聽聽聽聽聽聽聽 256.00聽聽聽 140.58聽聽 46%聽聽聽聽 3021聽聽聽聽 3% /
/dev/hd2聽聽聽聽聽聽聽 2688.00聽聽聽 740.54聽聽 73%聽聽聽 34655聽聽聽聽 6% /usr
/dev/hd9var聽聽聽聽 5120.00聽聽 1277.39聽聽 76%聽聽聽聽 2043聽聽聽聽 1% /var
/dev/hd3聽聽聽聽聽聽聽聽 512.00聽聽聽 477.04聽聽聽 7%聽聽聽聽 1053聽聽聽聽 1% /tmp
/dev/hd1聽聽聽聽聽聽聽聽 128.00聽聽聽聽 97.62聽聽 24%聽聽聽聽聽 412聽聽聽聽 2% /home
/proc聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 –聽聽聽聽聽聽聽聽 –聽聽聽 –聽聽聽聽聽聽聽聽 –聽聽聽聽 –聽 /proc
/dev/hd10opt聽聽聽聽 256.00聽聽聽聽 91.47聽聽 65%聽聽聽聽 3065聽聽聽聽 5% /opt
/dev/inst_lv聽聽聽 1920.00聽聽聽 617.22聽聽 68%聽聽聽聽聽 402聽聽聽聽 1% /usr/sys/inst.images
/dev/admin聽聽聽 128.00聽聽聽聽 73.79聽聽 43%聽聽聽聽聽 102聽聽聽聽 1% /usr/local/admin
/dev/tempinglv聽聽 1920.00聽聽聽 593.36聽聽 70%聽聽聽聽聽 753聽聽聽聽 1% /temping
/dev/loglv聽聽聽聽聽 1024.00聽聽聽 251.10聽聽 76%聽聽聽聽聽 977聽聽聽聽 1% /logs
/dev/securitelv聽聽 2432.00聽聽聽聽聽 0.00聽 100%聽聽聽聽聽 938聽聽聽聽 1% /tools/securite
/dev/rcu_lv聽聽聽 20480.00聽聽 6143.82聽聽 71%聽聽聽 65214聽聽聽聽 5% /home/app
/dev/lv1聽聽聽聽聽聽聽聽 496.00聽聽聽 495.60聽聽聽 1%聽聽聽聽聽聽 10聽聽聽聽 1% /nfs1test

Nagios Operations Dashboard

Buscando cosas de nagios he encontrado un Nagios Operations Dashboard

Es un dashboard pensado para entornos de Operaci贸n. Simplicidad al maximo.聽 Muestra solo las alertas Critical y Warning

Este Dashboard se basa en聽2 ficheros;

nagios.php (que te muestra la web)

nagios_get.php (que revisa el estado de Nagios por el fichero status.dat, este es llamado por nagios.php)

Lo unico que tenemos que hacer es modificar el fichero nagios_get.php indicando donde tenemos el fichero status.dat

En la secci贸n nagios dejo colgada la versi贸n para la web. En caso de tener alguna alerta aparecer谩 en dicha secci贸n Link

Dejo aqui un link de descarga del software dash聽y su web oficial

P.D. Parece que hay una versi贸n 2 de esta herramienta, pero esta nueva versi贸n es para Nagios con Mysql, ya que la ultima usa el status.dat. Nueva Versi贸n

Nagios 3.2.3 + Nagios Theme + Cacti en Debian 6 Squeeze

Nagios

Instalamos聽Apache, PHP y librerias;
apt-get install apache2 libapache2-mod-php5 build-essential php5 libgd-graph-perl postfix
Creamos los usuarios y grupos;
/usr/sbin/useradd -m -s /bin/bash nagios
passwd nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd www-data
Descargamos el software de Nagiosmkdir ~/downloads
mkdir ~/downloads
cd ~/downloads
Compilamos e instalamos el software
tar xzf nagios-3.2.3.tar.gz
cd nagios-3.2.3
./configure –with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
Editamos el fichero de contactos modificando el email definido actualmente por el nuestro;
vim /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name聽聽聽聽 nagiosadmin聽聽聽聽聽聽聽聽聽聽聽聽 ; Short name of user
use聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 generic-contact聽聽聽聽聽聽聽聽 ; Inherit default values from generic-contact template (defined above)
alias聽聽聽聽聽聽聽聽聽聽聽聽聽 Nagios Admin聽聽聽聽聽聽聽聽聽聽聽 ; Full name of user
email聽聽聽聽聽聽聽聽聽聽聽聽 nagios@osties.com ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}
Seguimos con la instalaci贸n;
make install-webconf
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
/etc/init.d/apache2 reload
cd ~/downloads
tar xzf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure –with-nagios-user=nagios –with-nagios-group=nagios
make
make install
Lo configuramos para iniciarse con el sistema;
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
El siguiente comando se utuliza para ver si el nagios (binario) funciona correctamente con el nagios.cfg (similar al apache2ctl -t en Apache) Asi veremos si funcionan nuestras modificaciiones
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios start
Ya podemos acceder a nuestro servidor http://pre.osties.com/nagios/ User:nagiosadmin
Una virtud de Nagios no es su entorno grafico. Por eso vamos a modificarle el frontend.
cd ~/downloads
unzip vautour_style.zip -d ./vautour
cp -Rfa /usr/local/nagios/share /usr/local/nagios/share_OLD
cp -Rfa vautour/* /usr/local/nagios/share/
Ahora ya tenemos un Nagios mas “visible”.

CACTI:

En el caso del cacti, el procedimiento es el mismo que en Debian 5 Lenny. Dejo aqui el mismo procedimiento que ya colgue en su dia para Debian 5.
apt-get install mysql-server rrdtool snmp
Activaremos la extensi贸n para el SNMP a帽adiendo la siguientes lineas;
vim /etc/php5/conf.d/snmp.ini
; Enable snmp extension module
extension=snmp.so
file_uploads = On
vim /etc/apache2/mods-enabled/php5.conf (A帽adimos o modificamos los siguientes campos)
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
LoadModule php5_module modules/libphp5.so
# Cause the PHP interpreter to handle files with a .php extension.
AddHandler php5-script .php
AddType text/html .php
# Add index.php to the list of files that will be served as director
# indexes.
DirectoryIndex index.php
vim /etc/apache2/httpd.conf
Include conf.d/*.conf
Vamos聽 a preparar la MySQL para la instalaci贸n de CACTI;
mysqladmin -u root 鈥損 create cacti
cd /tmp
tar xzvf cacti-0.8.7g.tar.gz
mv cacti-0.8.7g/var/www/cacti
cd /var/www/cacti/
mysql -u root -p cacti < cacti.sql
adduser cacti
mysql -u root -p mysql
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 鈥檚omepassword鈥;
mysql> flush privileges;
mysql> quit
Agregamos las siguientes lineas;
vim include/config.php
$database_type = 鈥渕ysql鈥;
$database_default = 鈥渃acti鈥;
$database_hostname = 鈥渓ocalhost鈥;
$database_username = 鈥渃acti鈥;
$database_password = 鈥渃acti鈥;
Con los passwords que hemos puesto y el usuario que toca.
chown -R cacti log
chown -R cacti rra
Agregamos;
vim /etc/crontab
*/5 *聽聽 * * *聽聽 cacti聽聽 php /var/www/cacti/poller.php > /dev/null 2>&1
Nos conectamos con http://pre.osties.com/cacti y pulsamos Next 2 veces y Finish
Cacti
Cacti
Cacti Resumen Instalaci贸n
Cacti Login
Nos logamos como Admin y passwd : admin. Luego cambiamos el password y ya podremos a帽adir los hosts
Ya tenemos nuestro entorno de gr谩ficas ;)
Cacti Inside

Aumentar DumpDevice AIX

El dumpDevice en AIX se usa para que, en caso de problemas de inicio de la maquina tener un VG para dejar un dump con toda la informaci贸n de la maquina y asi poder hacer un analisis.

Este VG, se puede ampliar ya que en muchos casos, el espacio asignado no sera suficiente.

Aqui tenemos un listado de los LV donde podemos ver el sysdump

root:/root > /usr/sbin/lsvg -o|/usr/sbin/lsvg -i -l

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 17 34 2 open/syncd N/A
hd8 jfs2log 1 2 2 open/syncd N/A
hd4 jfs2 5 10 2 open/syncd /
hd2 jfs2 80 160 2 open/syncd /usr
hd9var jfs2 7 14 2 open/syncd /var
hd3 jfs2 14 28 2 open/syncd /tmp
hd1 jfs2 1 2 2 open/syncd /home
hd10opt jfs2 9 18 2 open/syncd /opt
hd7 sysdump 6 6 1 closed/syncd N/A

Para ver el tama帽o estimado necesario para el dump de la maquina hacemos;

root:/root > sysdumpdev -e0453-041 Estimated dump size in bytes: 262353715

Si lo queremos aumentar hacemos;

(como root)

smitty聽 lvm
聽聽聽 Logical Volume
聽聽聽聽聽聽聽聽 Set Characteristic of a Logical Volume
聽聽聽聽聽聽聽聽聽聽聽 Increase the Size of a Logical Volume
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Logical Volume Name聽 = lg_dumplv
聽Nota! Si pulsamos F4 nos mostrara un listado de los LV que tenemos
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Number of additional LOGICAL PARTITION = 1

INTRO

Si vemos de nuevo los VG vemos que hemos ampliado en 1 PP el VG de DumpDevice

root:/root > /usr/sbin/lsvg -o|/usr/sbin/lsvg -i -l

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 17 34 2 open/syncd N/A
hd8 jfs2log 1 2 2 open/syncd N/A
hd4 jfs2 5 10 2 open/syncd /
hd2 jfs2 80 160 2 open/syncd /usr
hd9var jfs2 7 14 2 open/syncd /var
hd3 jfs2 14 28 2 open/syncd /tmp
hd1 jfs2 1 2 2 open/syncd /home
hd10opt jfs2 9 18 2 open/syncd /opt
hd7 sysdump 7 7 1 closed/syncd N/A

Logicamente el proceso de ampliaci贸n de este VG es extrapolable a todos los VG

TXT_DB error number en OpenVPN

Estoy preparando mi VPN y me he encontrado con un error al firmar el certificado especifico para la VPN;

TXT_DB error number

La soluci贸n es simple. Yo ya tenia otro certificado firmado, para mi postfix y en este caso, el apartado commonName tenia que ser distino, sino salia este error.

Certificado postfix;

Subject:
countryName = SP
stateOrProvinceName = Barcelona
organizationName = osties.com
organizationalUnitName = osties.com
commonName = Enric Solsona
emailAddress = enric.solsona@gmail.com

Certificado openVPN;

Subject:
countryName = SP
stateOrProvinceName = Barcelona
organizationName = osties.com
organizationalUnitName = osties.com
commonName = Enric Solsona Sola
emailAddress = enric.solsona@gmail.com

Vol煤menes l贸gicos (LVM) Crear, modificar VG y LV

 

LVM es mucho m谩s flexible, permitiendo a帽adir espacio adicional a vol煤menes ya creados de manera transparente y simple.

Pasamos a ver los conceptos para entender la base del sistema.

Estructura LVM

Para que todo funcione es necesario instalar el paquete lvm10 o lvm2, recomiendo la versi贸n 2 aunque la mayor铆a de distribuciones todav铆a mantengan la versi贸n 1. Hay que asegurarse de que haya un script en el arranque para poner el marcha LVM.

Lo primero de todo es hacer las particiones, puede hacerse con cfdisk. Si se usa una versi贸n anterior a la 2 de LVM, es obligatorio definir el tipo como Linux LVM.

Hay que destacar que la partici贸n que contenga /boot no podr谩 formar parte de un volumen l贸gico, los cargadores de arranque no suelen soportarlo. En nuestro caso se trata de hda1.

Buscamos el nuevo disco

Si hemos agregado un disco hace poco podemos ver el device que ha sido generado con un fdisk -l. En mi caso he agregado un disco de 43Gb de mi VMWare a la maquina;

root@http:~# fdisk -l
Disc /dev/sdb: 42.9 GB, 42949672960 octets
255 heads, 63 sectors/track, 5221 cylinders
Units = cilindres of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Damos soporte para LVM a las otras dos particiones, este paso borrar谩 TODOS los datos existentes.

root@http:~# pvcreate /dev/sdb
Physical volume “/dev/sdb” successfully created

Ahora creamos el VolumGroup que contendra tantos VolumGroup como queramos.

root@http:~# vgcreate VolumGroup2 /dev/sdb
Volume group “VolumGroup2” successfully created

Vamos a ver el resultado con vgdisplay:

root@http:~# vgdisplay
— Volume group —
VG Name VolumGroup2
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 40,00 GiB
PE Size 4,00 MiB
Total PE 10239
Alloc PE / Size 0 / 0
Free PE / Size 10239 / 40,00 GiB
VG UUID 0er3jx-M6p7-qsDC-WiHM-Qem3-n3R6-0xqhsK

Vamos a crear los vol煤menes l贸gicos. Crearemos 2. Uno de 5, otro de 30 y dejaremos 5 libres para poder ampliar

root@http:~# lvcreate -L5,00G -n LV5GB VolumGroup2
Logical volume “LV5GB” created
root@http:~# lvcreate -L30,00G -n LV30GB VolumGroup2
Logical volume “LV30GB” created

El par谩metro -L es lo “large” que es el disco. Vamos, el tama帽o que queremos de LV. El parametro -n define el nombre del LV

Vamos a ver el resultado con LVDISPLAY

root@http:~# lvdisplay VolumGroup2
— Logical volume —
LV Name /dev/VolumGroup2/LV5GB
VG Name VolumGroup2
LV UUID YAKkwE-tYrp-O233-3r1B-YzNi-cOn2-dE6FQT
LV Write Access read/write
LV Status available
# open 0
LV Size 5,00 GiB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 254:6

— Logical volume —
LV Name /dev/VolumGroup2/LV30GB
VG Name VolumGroup2
LV UUID gJTafK-o0Al-pDNt-UIXJ-nUtp-YAkx-oZgNz3
LV Write Access read/write
LV Status available
# open 0
LV Size 30,00 GiB
Current LE 7680
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 254:7

Vamos a darle formato con mkfs. Podemos realizar distintos formatos, XFS, EXT3 etc..

root@http:~# mkfs.ext3 /dev/VolumGroup2/LV30GB
mke2fs 1.41.12 (17-May-2010)
Etiqueta del sistema de fitxers=
Tipus de sistema operatiu: Linux
Mida del bloc=4096 (log=2)
Mida del fragment=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1966080 nodes-i, 7864320 blocs
393216 blocs (5.00%) reservats per al superusuari
Bloc de dades inicial=0
M脙 xim de blocs del sistema de fitxers=0
240 grups de blocs
32768 blocs per grup, 32768 fragments per grup
8192 nodes-i per grup
C脙虏pies de seguretat del superbloc desades en els blocs:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Escriptura de les taules de nodes-i: 30/240
fet
Creaci脙鲁 del registre de transaccions (32768 blocs): fet
Escriptura de la informaci脙鲁 dels s脙潞perblocs i de comptabilitat del sistema de fitxers:fet


Agregar en fstab

Ahora solo queda agregar el disco en el fstab para que lo monte cada vez que arranque el sistema

/dev/VolumGroup2/LV30GB /backup ext3 defaults 0 0

El resultado final

 

root@http:~# df -h
S. fitxers Mida En 脙潞s Lliure %脙s Muntat a
/dev/mapper/pont-root 322M 107M 199M 35% /
tmpfs 125M 0 125M 0% /lib/init/rw
udev 120M 120K 120M 1% /dev
tmpfs 125M 0 125M 0% /dev/shm
/dev/sda1 228M 15M 202M 7% /boot
/dev/mapper/pont-home 2,7G 78M 2,5G 3% /home
/dev/mapper/pont-tmp 225M 6,1M 208M 3% /tmp
/dev/mapper/pont-usr 2,7G 495M 2,1G 20% /usr
/dev/mapper/pont-var 1,4G 935M 337M 74% /var
/dev/mapper/VolumGroup2-LV30GB 30G 173M 28G 1% /backup

root@http:~# vgdisplay
— Volume group —
VG Name VolumGroup2
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 40,00 GiB
PE Size 4,00 MiB
Total PE 10239
Alloc PE / Size 8960 / 35,00 GiB
Free PE / Size 1279 / 5,00 GiB
VG UUID 0er3jx-M6p7-qsDC-WiHM-Qem3-n3R6-0xqhsK

 

Ampliar LogicalVolum

Si queremos ampliar el Volumen, tendremos que poner el nuevo tama帽o, no el tama帽o ampliar

root@http:~# lvextend -L34G /dev/mapper/VolumGroup2-LV30GB
Extending logical volume LV30GB to 34,00 GiB
Logical volume LV30GB successfully resized

Indicamos al sistema el nuevo tama帽o

root@http:~# resize2fs /dev/mapper/VolumGroup2-LV30GB
resize2fs 1.41.12 (17-May-2010)
El sistema de fitxers a /dev/mapper/VolumGroup2-LV30GB est脙 muntat a /backup; cal un canvi de mida en l脙颅nia
old desc_blocks = 2, new_desc_blocks = 3
Canvi de mida en l脙颅nia de /dev/mapper/VolumGroup2-LV30GB a 8912896 (4k) blocs.
El sistema de fitxers a /dev/mapper/VolumGroup2-LV30GB t脙漏 ara una mida de 8912896 blocs.

En XFS seria: xfs_growfs /punto_montaje

Ya tenemos ampliado el LV

root@http:~# df -h
S. fitxers Mida En 脙潞s Lliure %脙s Muntat a
/dev/mapper/pont-root 322M 107M 199M 35% /
tmpfs 125M 0 125M 0% /lib/init/rw
udev 120M 120K 120M 1% /dev
tmpfs 125M 0 125M 0% /dev/shm
/dev/sda1 228M 15M 202M 7% /boot
/dev/mapper/pont-home 2,7G 78M 2,5G 3% /home
/dev/mapper/pont-tmp 225M 6,1M 208M 3% /tmp
/dev/mapper/pont-usr 2,7G 495M 2,1G 20% /usr
/dev/mapper/pont-var 1,4G 935M 337M 74% /var
/dev/mapper/VolumGroup2-LV30GB 34G 177M 32G 1% /backup

 

Agregar un disco al VolumGroup

Primero detectamos el nuevo disco y creamos el soporte a VolumGroup:

pvcreate /dev/hdb1


Luego ampliamos el VolumGroup

vgextend grupo_volumen /dev/hdb1

 


Mas informaci贸n en: http://www.tldp.org/HOWTO/LVM-HOWTO/