Habilitar / Deshabilitar notificaciones del nagios

Otra entrada que es un apunte.

Ya tengo varios nagios corriendo en clientes y en alguna ocasión (cuando cae todo), es mejor deshabilitar las notificaciones….. ya sabemos que está todo caído y que se queden en cola no es lo óptimo.

Para ello, en un pc con el curl instalado (apt-get install curl), copy&pasteamos los siguientes comandos:

Para deshabilitar:

curl -d “cmd_mod=2&cmd_typ=11” “http://ip.srv.nagios/cgi-bin/nagios/cmd.cgi” -u “user:password”

Para volverlas a habilitar:

curl -d “cmd_mod=2&cmd_typ=12” “http://ip.srv.nagios/cgi-bin/nagios/cmd.cgi” -u “user:password”

Enjoy 🙂

Testear aaa radius en cisco IOS

Esta entrada es otro apunte.

En el acceso de clientes por vpn, suelo usar la validación radius contra el active directory, con lo que, para conceder acceso, tan sólo hay que activar en cada usuario el permiso de “marcado”.

Suponemos que tenemos un router con IOS cisco 12.4 y que hemos configurado toda la parte de AAA como de costumbre…. ahora toca depurar…

Desde la consola del router, hacemos:

# terminal monitor
# debug radius

El comando en cuestión es:

test aaa group radius pruebas prueba new-code

Lo que hace es probar el usuario pruebas / password pruebas con la configuración que tengamos en el radius, siendo la definición en el router:

radius-server host 172.26.2.100 auth-port 1812 acct-port 1813
radius-server key clavePrecompartida

Y suponemos que el resto de AAA lo tenemos correcto, teniendo el usuario / password: pruebas/pruebas

router#test aaa group radius pruebas prueba new-code
Trying to authenticate with Servergroup radius

router#Aug 21 21:23:40.506: RADIUS/ENCODE(00000000):Orig. component type = INVALID
Aug 21 21:23:40.506: RADIUS: AAA Unsupported Attr: interface [157] 0
Aug 21 21:23:40.506: RADIUS/ENCODE: Skip encoding 0 length AAA attribute interface
Aug 21 21:23:40.506: RADIUS/ENCODE(00000000): dropping service type, “radius-server attribute 6 on-for-login-auth” is off
Aug 21 21:23:40.506: RADIUS(00000000): Config NAS IP: 0.0.0.0
Aug 21 21:23:40.506: RADIUS(00000000): sending
Aug 21 21:23:40.506: RADIUS/ENCODE: Best Local IP-Address 172.26.2.250 for Radius-Server 172.26.2.100
Aug 21 21:23:40.506: RADIUS(00000000): Send Access-Request to 172.26.2.100:1812 id 1645/230, len 59
Aug 21 21:23:40.506: RADIUS: authenticator 80 B3 48 6D 92 D0 D4 03 – 62 CB A0 57 7B 3F 2E 50
Aug 21 21:23:40.506: RADIUS: User-Password [2] 18 *
Aug 21 21:23:40.506: RADIUS: User-Name [1] 9 “pruebas”
Aug 21 21:23:40.506: RADIUS: NAS-Port [5] 6 60000
Aug 21 21:23:40.506: RADIUS: NAS-IP-Address [4] 6 172.26.2.250
Aug 21 21:23:40.510: RADIUS: Received from id 1645/230 172.26.2.100:1812, Access-Reject, len 20
Aug 21 21:23:40.510: RADIUS: authenticator C0 01 36 A9 46 B2 C0 EA – 1B 61 58 DF 87 C3 9C E4
Aug 21 21:23:40.510: RADIUS(00000000): Received from id 1645/230User rejected

En este caso, el servidor radius nos ha respondido y ha rechazado el usuario, con lo que, tenemos buenas y malas notícias :

– Buena notícia: El router es capaz de llegar al radius y atiende nuestras peticiones, con lo que la clave pre-compartida en principio es correcta.

– Mala notícia: Ha rechazado la petición de nuestro usuario, bien por user / password mal escrito o porque no tiene derecho de “marcado”.

Nos aseguramos del user / pass y lo volvemos a probar:

router#test aaa group radius pruebas pruebas new-code
Trying to authenticate with Servergroup radius
User successfully authenticated

router#
Aug 21 21:28:10.779: RADIUS/ENCODE(00000000):Orig. component type = INVALID
Aug 21 21:28:10.783: RADIUS: AAA Unsupported Attr: interface [157] 0
Aug 21 21:28:10.783: RADIUS/ENCODE: Skip encoding 0 length AAA attribute interface
Aug 21 21:28:10.783: RADIUS/ENCODE(00000000): dropping service type, “radius-server attribute 6 on-for-login-auth” is off
Aug 21 21:28:10.783: RADIUS(00000000): Config NAS IP: 0.0.0.0
Aug 21 21:28:10.783: RADIUS(00000000): sending
Aug 21 21:28:10.783: RADIUS/ENCODE: Best Local IP-Address 172.26.2.250 for Radius-Server 172.26.2.100
Aug 21 21:28:10.783: RADIUS(00000000): Send Access-Request to 172.26.2.100:1812 id 1645/231, len 59
Aug 21 21:28:10.783: RADIUS: authenticator B4 A2 AB 32 2A 2D 2D 94 – 0E 9F 01 76 D3 11 C9 9C
Aug 21 21:28:10.783: RADIUS: User-Password [2] 18 *
Aug 21 21:28:10.787: RADIUS: User-Name [1] 9 “pruebas”
Aug 21 21:28:10.787: RADIUS: NAS-Port [5] 6 60000
Aug 21 21:28:10.787: RADIUS: NAS-IP-Address [4] 6 172.26.2.250
Aug 21 21:28:10.807: RADIUS: Received from id 1645/231 172.26.2.100:1812, Access-Accept, len 64
Aug 21 21:28:10.807: RADIUS: authenticator 0F ED 4B 8C 4F DA B3 C9 – 0A 4F 3A 8B 66 E6 0D 57

Aug 21 21:28:10.807: RADIUS: Framed-Protocol [7] 6 PPP [1]
Aug 21 21:28:10.807: RADIUS: Service-Type [6] 6 Framed [2]
Aug 21 21:28:10.811: RADIUS: Class [25] 32
Aug 21 21:28:10.811: RADIUS: 52 76 05 8F 00 00 01 37 00 01 C0 A8 02 64 01 CD [Rv?????7?????d??]
Aug 21 21:28:10.811: RADIUS: 7F E0 20 13 31 ED 00 00 00 00 00 00 00 09 [?? ?1?????????]
Aug 21 21:28:10.811: RADIUS(00000000): Received from id 1645/231
Aug 21 21:28:10.811: RADIUS(00000000): Unique id not in use
Aug 21 21:28:10.811: RADIUS/DECODE(00000000): There is no RADIUS DB Some Radius attributes may not be stored
Aug 21 21:28:10.811: RADIUS: Constructed ” ppp negotiate”

Ahora sí que ha funcionado; hemos escrito correctamente el user / pass

OpenMeetings 2.0 debian Squeeze + asterisk. Parte 1

Hoy toca la integración de OpenMeetings con Asterisk…. un gran paso. Primero instalaremos OpenMeetings 2.0 en nuestro debian y luego, lo integraremos con Asterisk.

Álvaro (aka Greenes), colaborador habitual del proyecto (http://incubator.apache.org/openmeetings/) es el responsable del manual original, del que yo, símplemente he “copiado” aquí, en mi blog.

Partimos de la base de nuestro debian recién instalado, nos vamos al fichero /etc/apt/sources.list y añadimos al principio:

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb http://ftp.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.debian.org/debian/ squeeze main contrib non-free
deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib non-free
deb http://ftp2.de.debian.org/debian squeeze main non-free
deb http://deb-multimedia.org squeeze main

Hacemos un update:

#apt-get update

Y pasado un rato, estaremos en disposición de empezar a instalar dependencias, siendo :

apt-get install sun-java6-jdk
apt-get install openoffice.org-writer openoffice.org-calc openoffice.org-impress
openoffice.org-draw openoffice.org-math imagemagick gs-gpl -y
apt-get install libgif-dev xpdf libfreetype6 libfreetype6-dev libjpeg8 libjpeg62 libjpeg8-dev
apt-get install g++ libjpeg-dev libdirectfb-dev libart-2.0-2 libt1-5 zip unzip bzip2
apt-get install subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev
apt-get install libmp3lame-dev libsdl1.2-dev libx11-dev libxfixes-dev libxvidcore4-dev zlib1g-dev
apt-get install libogg-dev sox libvorbis0a libvorbis-dev libgsm1 libgsm1-dev libfaad2 flvtool2 lame

al hacer el apt-get install sun-java6-jdk, tenemos que aceptar la licencia….. Googleando un poco en la página del proyecto, en versiones anteriores a la 2.0, funcionaba con la openJDK, pero ahora no, en fin.

Instalararemos el mysql-server + mysql-client y crearemos una BBDD para openmeetings, o usaremos otro MySQL que tengamos instalado en otro server. Entramos en el MySql en cuestión y creamos la BBDD y un usuario para tal caso, siendo openmeetings / openmeetings.

CREATE DATABASE openmeetings DEFAULT CHARACTER SET ‘utf8’;
GRANT ALL PRIVILEGES ON openmeetings.* TO ‘openmeetings’@’localhost’ IDENTIFIED BY ‘openmeetings’ WITH GRANT OPTION;

Ahora descargamos y compilamos el SWF:

wget http://www.swftools.org/swftools-2012-04-08-0857.tar.gz
tar -zxvf swftools-2012-04-08-0857.tar.gz
cd swftools-2012-04-08-0857
./configure
make
make install

Ahora toca el paquete ffmpeg:

wget http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.gz
tar -zxvf ffmpeg-0.11.1.tar.gz
cd ffmpeg-0.11.1
./configure –enable-libmp3lame –enable-libxvid –enable-libvorbis –enable-libgsm –enable-libfaac –enable-gpl –enable-nonfree
make
checkinstall

Ahora seguimos con el JOD converter:

wget http://jodconverter.googlecode.com/files/jodconverter-core-3.0-beta-4-dist.zip
unzip jodconverter-core-3.0-beta-4-dist.zip

Y seguimos con ANT, pero usaremos la versión 1.8.4 para compilar openMeetings

wget http://mirror.catn.com/pub/apache//ant/binaries/apache-ant-1.8.4-bin.tar.gz
tar -zxvf apache-ant-1.8.4-bin.tar.gz

Y ahora descargamos openmeetings:

# svn checkout http://svn.apache.org/repos/asf/incubator/openmeetings/branches/2.0/

Y lo compilamos:

# cd /usr/adm/2.0
# /usr/adm/apache-ant-1.8.4/bin/ant clean.all
# /usr/adm/apache-ant-1.8.4/bin/ant -Ddb=mysql

Una vez compilado (tardará un buen rato), lo movemos a su ubicación correcta:

# cd /usr/adm/2.0/dist
# mv red5/ /usr/lib/

Movemos de sitio el JOD converter, a la carpeta de OM

cp -R /usr/adm/jodconverter-core-3.0-beta-4 /usr/lib/red5/webapps/openmeetings

Y cambiamos unos permisos:

# chown -R nobody /usr/lib/red5
# chmod +x /usr/lib/red5/red5.sh
# chmod +x /usr/lib/red5/red5-debug.sh

Y creamos el script para controlar red5:

# nano /etc/init.d/red5

Y hacemos copy & paste de lo siguiente…. (Gracias a Álvaro por modificar el script)

#! /bin/sh
### BEGIN INIT INFO
# Provides: red5
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts red5 server for Openmeetings.
# OpenMeetings 2.X Installation on Debian 64bit Squeeze
# Stephen Cottham 29/07/2012
### END INIT INFO
# For RedHat and cousins:
# chkconfig: 2345 85 85
# description: Red5 flash streaming server for OpenMeetings
# processname: red5
# Created By: Sohail Riaz (sohaileo@gmail.com)
# Modified by Alvaro Bustos
PROG=red5
RED5_HOME=/usr/lib/red5
DAEMON=$RED5_HOME/$PROG.sh
PIDFILE=/var/run/$PROG.pid
[ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5
RETVAL=0
case “$1” in
start)
cd $RED5_HOME
start-stop-daemon –start -c nobody –pidfile $PIDFILE
–chdir $RED5_HOME –background –make-pidfile
–exec $DAEMON >/dev/null 2>/dev/null &
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo $! > $PIDFILE
fi
echo
;;
stop)
start-stop-daemon –stop –quiet –pidfile $PIDFILE
–name java
rm -f $PIDFILE
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG
;;
restart|force-reload)
$0 stop
$0 start
;;
status)
# Debian and Ubuntu 10 status check
ps aux | grep -f $PIDFILE >/dev/null 2>/dev/null && RETVAL=0 || RETVAL=3
# Ubuntu 12 status check using improved “start-stop-daemon” status query
# (use the above command, or comment out above command and uncomment the two below commands.
# start-stop-daemon –status –pidfile $PIDFILE
# RETVAL=$?
[ $RETVAL -eq 0 ] && echo “$PROG is running”
[ $RETVAL -eq 1 ] && echo “$PROG is not running and the pid file exists”
[ $RETVAL -eq 3 ] && echo “$PROG is not running”
[ $RETVAL -eq 4 ] && echo “$PROG – unable to determine status”
;;
checkports)
netstat -anp | grep soffice
netstat -anp | grep java
;;
*)
echo $”Usage: $0 {start|stop|restart|force-reload|status|checkports}”
RETVAL=1
esac
exit $RETVAL

Seteamos permisos para que pueda ejecutarse:

chmod +x /etc/init.d/red5
update-rc.d red5 defaults

Hacemos backup del fichero persistence.xml, por si las moscas:

mv /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
/usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml-ori

Y ahora renombramos para habilitar el template de mysql:

# mv /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
/usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml

#mv /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
/usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml

Ahora editamos el fichero y cambiamos los datos de acceso mysql

, TestOnBorrow=true
, poolPreparedStatements=true
, Username=openmeetings
, Password=openmeetings”/>

Y iniciamos red5

# /etc/init.d/red5 start

Y si todo ha ido bien, empezaremos a configurarlo, accediendo a la web:

http://ip.del.web.server:5080/openmeetings/install

Rellenamos el user / pass:

Username: admin
Userpass: password
EMail: admin@dominio.com
User Time Zone: spain
Organisation(Domains) craem.net

Y al final de la hoja, le damos al botón de install. Esperamos un poco y ya tenemos la primera parte lista.

Instalando nagios 3 en Debian 6

Otro apunte, para instalar nagios3 en una Debian.

Primero, instalamos unas dependencias básicas:


#aptitude install build-essential gcc libgd2-xpm-dev libglib2.0-dev apache2

Creeamos usuario y grupo:


# /usr/sbin/useradd nagios
# passwd nagios
# /usr/sbin/groupadd nagcmd
#/usr/sbin/usermod -G nagcmd nagios
# /usr/sbin/usermod -G nagcmd www-data

Ahora instalamos unas dependencias básicas:


root@nagios:~# apt-get install apache2 mc libapache2-mod-php5 php5-cli php5-common php5-cgi php5-gd
root@nagios:~# aptitude install build-essential gcc libgd2-xpm-dev libglib2.0-dev apache2
root@nagios:~# apt-get install php5-cli php5-common php5-gd
root@nagios:~# apt-get install libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev
root@nagios:~# apt-get install php5-cli php5-common php5-gd php-pear
root@nagios:~# apt-get install ssh apache2 libapache2-mod-php5 php5-cli php5-common php5-cgi php5-gd -qy bison flex libncurses5-dev zlib1g-dev libssl-dev libnewt-dev libiksemel-dev -qy make linux-headers-`uname -r` gcc g++ libstdc++6 mysql-client mysql-server phpmyadmin linux-headers-`uname -r` bison openssl libssl-dev libeditline0 libeditline-dev libedit-dev gcc make g++ php5-cli mysql-common libmysqlclient15-dev libnewt-dev libmysqlclient15-dev libnewt-dev

Y reiniciamos apache2:


root@nagios:~# /etc/init.d/apache2 restart

Y seguimos añadiendo usuarios y grupos :


root@nagios:~# /usr/sbin/useradd nagios
root@nagios:~# passwd nagios
root@nagios:~# /usr/sbin/groupadd nagcmd
root@nagios:~# /usr/sbin/usermod -G nagcmd nagios
root@nagios:~# /usr/sbin/usermod -G nagcmd www-data

Ahora descargamos el nagios en /usr/src y creamos un directorio para ello y lo descomprimimos:


root@nagios:~# cd /usr/src/
root@nagios:~# mkdir nagios
root@nagios:~# cd nagios/
root@nagios:~# wget -c http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.4.1/nagios-3.4.1.tar.gz/download
root@nagios:~# tar -zxvf nagios-3.4.1.tar.gz
root@nagios:~# wget -c http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz/download
root@nagios:~# tar -zxvf nagios-plugins-1.4.15.tar.gz

Y ahora a compilar:


root@nagios:/usr/src/nagios# ./configure --with-command-group=nagcmd
root@nagios:/usr/src/nagios# make all
root@nagios:/usr/src/nagios# make install
root@nagios:/usr/src/nagios# make install-init
root@nagios:/usr/src/nagios# make install-config
root@nagios:/usr/src/nagios# make install-commandmode
root@nagios:/usr/src/nagios# make install-webconf

Creamos el usuario para el acceso web:


root@nagios:/usr/src/nagios# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Y ahora toca el nagios-plugins


root@nagios:/usr/src/nagios# cd nagios-plugins-1.4.15/
root@nagios:/usr/src/nagios/nagios-plugins-1.4.15# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
root@nagios:/usr/src/nagios# make
root@nagios:/usr/src/nagios# make install

Ahora instalamos la parte para que envíe las notificaciones:


root@nagios:/usr/local/nagios/share# apt-get remove exim4 exim4-config
root@nagios:/usr/local/nagios/share# apt-get install postfix postfix-doc

Y configuramos el main.cf de postfix, tal que:


myhostname = nagios.dominio.local
mydomain = dominio.local
myorgin = $mydomain
masquerade_domain = $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain
mynetwork_style = host
##########################################################
mynetworks = 192.168.0.0/16
relay_domains = dominio.local
transport_maps = hash:/etc/postfix/transport

bounce_notice_recipient = email@dominio.com
delay_notice_recipient = email@dominio.com
2bounce_notice_recipient = email@dominio.com
error_notice_recipient = email@dominio.com
default_destination_concurrency_limit = 10
smtpd_recipient_limit = 100
maximal_queue_lifetime = 1d
fallback_relay =
smtp_destination_recipient_limit = 200
smtp_destination_concurrency_limit = 10
message_size_limit = 5240000
append_at_myorigin = yes
append_dot_mydomain = no
swap_bangpath = no

Y reiniciamos postfix:


root@nagios:/etc/postfix# /etc/init.d/postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
root@nagios:/etc/postfix#

Y ahora toca configurar plugins y resto de cosillas.

Enjoy your nagios 🙂

Netgear CG3100D v3 sin Nat

Otro apunte para recordar.

Cuando monto las vpn’s en los clientes, necesito tener la ip pública en mi router / firewall; así tengo el control del nat, firewall, etc….

En el caso de Ono, me he encontrado varios estos días, siendo el modelo el CG-3100Dv3 y me ha tocado ponerlo en modo transparente….. googleando un poco he encontrado el modo:

1º) abrimos el navegador y nos vamos a la dirección:

http://192.168.100.1/RgNatControl.asp

Y nos debe de aparecer:

Desmarcamos la casilla “activar nat”, se reiniciará el router y voilà !!!! ya está en modo transparente. Gestionar la ip fija es otra cosa con la que os tendréis que pelear con el servicio técnico.