tag:blogger.com,1999:blog-59405405096495957832024-03-05T14:25:36.748+01:00amperis, un blog de un informáticoamperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.comBlogger274125tag:blogger.com,1999:blog-5940540509649595783.post-12872054635613683912013-02-17T20:35:00.000+01:002013-02-17T20:35:00.046+01:00Herramienta para testear la instalación del firewallLlevo una semana instalando tres firewalls Fortigate todos en cluster y aunque nos hemos tropezado con algún problema por ser los primeros de esta clase la cosa promete.<br />
He tenido que echar mano más de una vez una aplicación fantástica llamada <a href="http://code.google.com/p/ostinato/" target="_blank">Ostinato</a> que me permite generar todo tipo de paquetes Ethernet como yo quiera. Esto es fantático si quieres montar un laboratorio con tus firewalls y lanzar paquetes que provienen de Internet y no tienes ninguna conexión WAN para hacer las pruebas.<br />
El programa te permite lanzar paquetes cambiado las MAC, las IPs, paquetes TCP o UDP, paquetes con flags de SYS, RST, etc.<br />
<br />
Aqui tenéis un video muy bueno de cómo funciona la cosa:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/On64lQYEFlY?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Existen otros programa similares como <a href="http://packeth.sourceforge.net/packeth/Home.html" target="_blank">packeth</a>, pero este es el que ha funcionado mejor ya que incluso de permite generar cadenas de paquetes IP simulado por ejemplo el <span class="st">3-way handshaking</span> de una conexión TCP.<br />
<br />
Finalmente no olvidar el resto de herramientas: ping, tracert, nmap, wireshark...amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com2tag:blogger.com,1999:blog-5940540509649595783.post-18844256101358040672013-02-10T19:14:00.001+01:002013-02-10T19:17:57.379+01:00Reiniciado todos los trabajos de mi CUPSMisteriosamente alguna vez se me acumulan trabajos en la cola de CUPS que no terminan saliendo si no voy manualmente a la impresora y reintento cada uno de los trabajos uno por uno.<br />
<br />
Solución, se programa un Cron para que vuelva a reintentar todos los trabajos que están parados:<br />
<br />
<pre class="brush: text">[root@server cups]# crontab -l
0 15 * * * lpq -a | awk '{print "lp -i " $3 " -H restart"}' | sh </pre><br><br />
<br><br />
amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-78036446582617100022012-11-25T21:18:00.001+01:002012-11-25T21:18:11.226+01:00Equipo SAP<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJm5v97nzjrc1ppoWbpuTbxpoUjDZh8TEq7I1oyQbvN4xce9WEZGPp59jhPe2X2YmnaffC4kdKFXnQsPp4dyL8FMnxjIxyKYHYVDzbvoIyOnqxx5a_aEDFSBKaIoeA9LrDksRl8PV7nss/s1600/_DSC9460.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJm5v97nzjrc1ppoWbpuTbxpoUjDZh8TEq7I1oyQbvN4xce9WEZGPp59jhPe2X2YmnaffC4kdKFXnQsPp4dyL8FMnxjIxyKYHYVDzbvoIyOnqxx5a_aEDFSBKaIoeA9LrDksRl8PV7nss/s400/_DSC9460.JPG" width="400" /></a></div>
<br />amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-72018913941515101612011-12-19T17:28:00.000+01:002011-12-19T17:28:00.064+01:00etiquetando cintas lto<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdBHXtp_QET_Zp_ru1cEPiSL39IpPynVHll75H2zUGe2ENvB-qwlLKuJXgopxiIgjNyHONZ967AFO6jFrY1tgSE_jlTZqrJHAs9cAy94hxJQ9Hx5PokPwkNNOiBkM6DR-EFRK1GvG6MK4/s1600/tapelabels.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="45" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdBHXtp_QET_Zp_ru1cEPiSL39IpPynVHll75H2zUGe2ENvB-qwlLKuJXgopxiIgjNyHONZ967AFO6jFrY1tgSE_jlTZqrJHAs9cAy94hxJQ9Hx5PokPwkNNOiBkM6DR-EFRK1GvG6MK4/s200/tapelabels.png" width="200" /></a>Como siempre al comprar nuevas cintas LTO para nuestro robot IBM nos dejamos por pedir las pegatinas de códigos de barra. Pues bien, hemos encontrado esta utilidad para hacerse uno mismo las pegatinas según la numeración que queramos e imprimir directamente en tú impresora en cualquier tipo de papel.<br />
<br />
<a href="http://tapelabels.librelogiciel.com/">http://tapelabels.librelogiciel.com/</a><br />
<br />
Más informacion:<br />
+ <a href="http://www-01.ibm.com/support/docview.wss?rs=543&context=STCVQ6R&q1=ssg1*&uid=ssg1S7000429&loc=en_US&cs=utf-8&lang=en+en">Especificaciones IBM LTO Labels</a> <br />amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-29886134269337429462011-12-12T18:06:00.000+01:002011-12-13T18:45:18.114+01:00scp entre maquina unix y windows<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcHgOstBB0AF6etUbfKyqdiiIaP7dfRTH8b50UaFhIq9yawB90sew4olKQogoRGGHIYka_IaKI7CLCSIIdhnoiO1SHxbtIV_S25_lkLosshO7D9NTg7_lyJoXpxHpjLc9eK4XnZ2Vg96c/s1600/winscp-logo.png" imageanchor="1" style="clear:right; float:right; margin-left:1em; margin-bottom:1em"><img border="0" height="70" width="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcHgOstBB0AF6etUbfKyqdiiIaP7dfRTH8b50UaFhIq9yawB90sew4olKQogoRGGHIYka_IaKI7CLCSIIdhnoiO1SHxbtIV_S25_lkLosshO7D9NTg7_lyJoXpxHpjLc9eK4XnZ2Vg96c/s320/winscp-logo.png" /></a></div><br />
Utilizo mucho los comandos de rsync y/o <a href="http://es.wikipedia.org/wiki/Secure_Copy">scp</a> para hacer backups del contenido de servidores Linux/Unix a mi servidor de backup.<br />
Para el caso de maquinas con Windows utilizado la implementación de <a href="http://winscp.net/eng/docs/lang:es">Winscp</a> y programo los comandos necesarios para hacer esta tarea de forma automática. Por ejemplo, tengo un servidor Windows que cada día genera un Dump de una base de datos. Cada noche tengo copiar este Dump por scp desde la maquina Windows a una maquina Unix.<br />
<br />
Para ello creo el siguiente archivo de comandos donde 192.168.34.5 es el servidor Unix de destino y bbdd-backup-full-diaria.bkf es el archivo que quiero transferir:<br />
<br />
<pre class="brush: text"># contenido de comandos-backup.txt
option batch on
open root:microntraseña1234@192.168.34.5
cd /rsync/backups/servidorbbdd
option transfer binary
put c:\backups\bbdd-backup-full-diaria.bkf
close
exit
</pre><br />
Ahora solo queda llamar al Winscp pasándole por linea de comandos las instrucciones que debe ejecutar. Si esto funciona bien podemos poner este comando dentrode una tarea programada de Windows.:<br />
<br />
<pre class="brush: text">C:\ARCHIV~1\WinSCP\WinSCP.exe /console /script=c:\backups\comandos-backup.txt
</pre><br />amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com2tag:blogger.com,1999:blog-5940540509649595783.post-68855082647195583682011-12-07T20:47:00.001+01:002011-12-08T18:27:18.623+01:00calculando la velocidad de mi cabina de discoTengo varias cabinas de disco IBM en diferentes entornos de virtualización vmWare. Una cabina en Fibre Channel y otra en iSCSI. El problema es que aparentemente la iSCSI no está dando la velocidad que tendría que dar. Una manera rápida de verificar la velocidad es detener todas las maquinas virtuales que tengamos (para no tener accesos a discos) y desde cada uno de los nodos ESX hacer una prueba de velocidad sobre los datastores de la cabina (/vmfs/volums). Para ser puristas hay que hacer la prueba por cada nodo y por cada LUN de la cabina.<br />
<br />
Para ello utilizamos el comando "dd" y lanzamos una escritura de 1Gb y calculamos el tiempo de escritura:<br />
<br />
<pre class="brush: bash">[root@esx01 ~]# dd if=/dev/zero of=/vmfs/volums/VMS01/test.dump bs=8k count=128k
131072+0 records in
131072+0 records out
1073741824 bytes (1.1 GB) copied, 3.59712 seconds, 299 MB/s
</pre><br />
En este caso el resultado es de 299Mb/s en una cabina Fibre Channel con unas 40 maquinas virtuales funcionando en ese momento.<br />
<br />
Otro comando que podemos utilizar es un <a href="http://linux.die.net/man/8/hdparm">hdparm</a>.amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com1tag:blogger.com,1999:blog-5940540509649595783.post-40599976197181800972011-11-17T16:12:00.007+01:002011-11-17T20:12:47.219+01:00la ferrata de IT<img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyLYkUyAuSygC4jOsnEsIGqyEyyyz5XbxvBDL3Uf9LfsaL0w8IfCSAnn-kWfp4UUJeoH7Shmr9oekL76L3nisQSXQl104ACi7VtofQ_BpT2ItfMyJA-T9mWmkwVYsTZA-LVqmKof3wHtU/s320/6347812651_0d354d5eaf.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5675985781743776210" />
<img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvPX14ATu2vMc6C_EvNRXx_wRqmhr1pC9ka_uVjutUesnKJiI6jlS5KlRAAZeORN8q0x_LrSiDYUGeZ2P3ubAi0uYajQ9j8hrgtt_ESKFEK4u1PYY_-O7cAvkQKe7YXp4NFUNkH5E6620/s320/6348559240_4bc5ee7a52.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5675985850002790402" />
<img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK2WE0-tA77ECjj-NznvhyphenhyphenqP3iozYlHRfz2GyPd4jQU6GngrEsqx_WiebN8zdK4kMYAum7YRFlj1V4R67DroeobEhyphenhyphen86y9NayAQ5tubwOwYKK7E1Kxpn9vc8HoWQ643sYQshhhwAtW_xY/s320/6347803003_f6b3d41dc4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5675985931578312818" />
<img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYdfr0hzKY0OXkeX9FsJVRbNs3NIwZ4yZwh4QrGeZpWgbiWxuC-rBKujfNKghZEvxaylVLXPXTd43VtC0HdZw_9ENmDG3mndYf1hSR7XbOiQodUteOzHSmHyNjTT4FkIhOJWICqlj_UtE/s320/6347805929_f1a8af966a.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5675985994195228050" />amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com1tag:blogger.com,1999:blog-5940540509649595783.post-73454165998799938602011-07-20T21:25:00.002+02:002011-07-20T21:33:06.052+02:00que hacer para que nadie entre en el dominioAntes de migrar un Samba 3.3 a una versión 3.4/3.5 hay que tener bien claro que parámetros cambian de una versión a otra. Parámetros que creíamos por default al cambiar de versión ya no lo son.<bR><br>
Esto me ha pasado al migrar de la 3.3 a la 3.4 con el efecto que nadie podía logearse en el sistema. En la versión 3.3 el parámetros “passdb backend = smbpasswd” pasa a ser por defecto “passdb backend = tdbsam”. Dado que son valores por defecto es muy complicado encontrar cual es problema ya que no se produce ningún error en el Samba (salvo un Access denied).<br><br>
Para obtener todos los parámetros ya sean escritos en tú smb.conf como por defecto es dicha versión podemos hacer un: testpam –v –s > smb33.conf.bak
Luego podemos comparar la versión de nuestra smb.conf cuando estaba en versión 3.3 con el smb.conf al migrar a la 3.4.<br><br>
Más información:<br>
+ <a href="http://lists.samba.org/archive/samba/2010-May/156135.html">http://lists.samba.org/archive/samba/2010-May/156135.html</a><br>
+ <a href="http://samba.2283325.n4.nabble.com/problems-after-upgrade-from-3-3-2-to-3-4-0-td2440950.html">http://samba.2283325.n4.nabble.com/problems-after-upgrade-from-3-3-2-to-3-4-0-td2440950.html</a>
<br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com3tag:blogger.com,1999:blog-5940540509649595783.post-19644499151830057952011-07-16T17:04:00.012+02:002011-07-20T22:05:55.312+02:00validar usuario y contraseña en una lineaEstoy creando un script PHP para cambiar la contraseña de un usuario creado en un sistema Linux. Previamente a cambiarla debe poner su anterior contraseña y para ello necesito validar un usuario y su contraseña. Es decir, necesito saber si un nombre de usuario y contraseña son válidos. Para ello básicamente cifro la contraseña del usuario y la comparo con el /etc/shadow de mi sistema Linux.<br>
<pre class="brush: c">
#!/bin/bash
# por Alejandro Moreno (Kernpharma) - julio 2011
# Utilizar en "--method=" el metodo de cifrado deseado (SHA-512, MD5, etc)
# Instalar la utilidad mkpasswd (http://pkgs.org/ubuntu-10.04/ubuntu-universe-i386/mkpasswd_5.0.0ubuntu3_i386.deb.html)
if test $# -lt 2 ;
then
echo "Error de parametros."
echo
echo "Sintaxis:"
echo " # ./validatepwd.sh <username> <password>"
exit 3
fi
username=$1
password=$2
contrl=`cat /etc/passwd | grep $username`
if [ "$contrl" != "" ]
then
encrypt=`cat /etc/shadow | grep $username | cut -d: -f2 | cut -d$ -f 2`
salt=`cat /etc/shadow | grep $username | cut -d: -f2 | cut -d$ -f 3`
contrl=`mkpasswd --method=SHA-512 $password --salt=$salt`
if [ "$contrl" = "`cat /etc/shadow | grep $username | cut -d: -f2`" ]
then
echo "Validacion OK."
RETVAL=0
else
echo "ERROR de validacion."
RETVAL=1
fi
else
RETVAL=2
fi
exit $RETVAL
</pre>
<br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-38548928540046167482011-06-12T20:20:00.000+02:002011-06-12T20:21:18.760+02:00cuando se cae todo, buena cara<img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGMArc_dzfZxzpib-ujL9JK0mzYYxHHuqFds2NepMBOwppxAxE6lGWoDHYK5mxapyWcZzwUHcYp7PDpDfgQJaLosCNL1ZbeCw5lwlP72U8oqKSaHUgkeSqoWppIHhW_LwnWx6jwblf4Pk/s320/Captura.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5617399969113463794" />amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com1tag:blogger.com,1999:blog-5940540509649595783.post-79712251723864049732011-05-13T22:57:00.013+02:002011-05-13T23:13:05.011+02:00nagios gadget para windows 7El siguiente gadget para Windows permite monitorizar tus servidores y avisarte de las caidas. Ataca directamente a la URL de tú Nagios: http://servidor/nagios/cgi-bin/nagxmlstatus.cgi.<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUQlT4JA5-WYfhTNZF_moPrCEcncVNYh01uVGoCscflnNLFOxez7TvLgMloM41p9f_X_AS7htkYoVdHqs3nTaCOfmsadQKyHJ8fKbnxBdl1cNMftiywNFFY08UG3Efdz5II_ANSbuEESw/s1600/gadget.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUQlT4JA5-WYfhTNZF_moPrCEcncVNYh01uVGoCscflnNLFOxez7TvLgMloM41p9f_X_AS7htkYoVdHqs3nTaCOfmsadQKyHJ8fKbnxBdl1cNMftiywNFFY08UG3Efdz5II_ANSbuEESw/s320/gadget.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5606311279046322818" /></a>
<br>
Para ello deberás copiar el siguiente script nagxmlstatus.cgi en tú carpeta de /opt/local/nagios/sbin (o donde apunte tú cgi-bin). Hay que darle permisos de ejecución e instalar los requisitos y librerias necesarias para ejecutar este script en Pearl:
<pre class="brush: shell">
# apt-get install libxml2 libxml2-dev
# perl -MCPAN -e "install XML::LibXML"
# perl -MCPAN -e "install CGI"
</pre>
Finalmete podrás instalarte el gadget en todas las maquinas Windows que quieras.<br><br>
Más información:<br>
+ <a href="http://nagstatus.com/wp-content/uploads/Nagstatus1.5.3.gadget">Nagstatus gadget 1.5.3</a><br>
+ <a href="https://www.monitoringexchange.org/attachment/download/Utilities/Misc/Nagstatus-Vista-Sidebar-Gadget/nagxmlstatus.cgi">nagxmlstatus.cgi</a><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-14027863484026653212011-04-29T21:41:00.007+02:002011-04-30T00:37:04.234+02:00agente nagios para linuxSi tenemos Nagios, podemos monitorizar maquinas remotas utilizando el agente de Nagios para Linux o para Windows.<br>
Si la maquina remota es un Windows, podemos instalar el <a href="http://nsclient.org/nscp/">NSClient++</a>. Si la maquina es un Linux, podemos instalar el <a href="http://exchange.nagios.org/directory/Addons/Monitoring-Agents/NRPE-%252D-Nagios-Remote-Plugin-Executor/details">NRPE</a>.
Explicaré cómo se instala el NRPE y cómo se configura Nagios para hacer consultas a esta maquina remota.<br><br>
Tenemos que tener presente dos tipos de maquinas: la maquina con Nagios Server (por ejemplo 192.168.1.2) y la maquina remota (por ejemplo 192.168.1.3).
El funcionamiento es el siguiente: en los dos extremos hay que instalar un NRPE de forma que el daemon de la maquina remota ejecutará los comandos que nosotros definamos, por ejemplo check_disck, check_swap, check_users, check_oracle, etc.<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGqyDuGwielYnBWfk9NMz6kbVYrEwcWSqECzqZ7Ot8GKG1wCkpTbVXRz3RjoFhSl8vQnaMZZ6ns445inf0Wg1StFr8jjhJLEa1hyphenhyphen4Zs78WoYow7OPLNPW6Qk-fZY_LLFznzFDvaJ_WJcM/s1600/93.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 79px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGqyDuGwielYnBWfk9NMz6kbVYrEwcWSqECzqZ7Ot8GKG1wCkpTbVXRz3RjoFhSl8vQnaMZZ6ns445inf0Wg1StFr8jjhJLEa1hyphenhyphen4Zs78WoYow7OPLNPW6Qk-fZY_LLFznzFDvaJ_WJcM/s320/93.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5601094306640929874" /></a>
En la maquina remota hacemos:
<pre class="brush: shell">
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
# useradd nagios
# passwd nagios
</pre>
Nota: recomiendo editar el /etc/passwd y ponerle un Shell /bin/false a este usuario para que no pueda hacer Login en el sistema.
<pre class="brush: shell">
# tar -xzvf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# export LDFLAGS=-ldl
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec/
# apt-get install xinetd libssl-dev
# tar xvfz nrpe-2.12.tar.gz
# cd nrpe-2.12
# ./configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config
# make install-xinetd
</pre>
Editar /etc/xinetd.d/nrpe para aceptar peticiones solo de nuestro Nagios Server:
<pre class="brush: shell">
only_from = 127.0.0.1 192.168.1.2
</pre>
La IP 192.168.1.2 es la de nuestra maquina Nagios Server.
<pre class="brush: shell">
# /etc/init.d/xinetd restart
</pre>
Pruebas de funcionamiento:
<pre class="brush: shell">
# netstat -ant | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE V2.12
</pre>
Modificar los comandos disponibles para nuestra maquina remota. Editar el /usr/local/nagios/etc/nrpe.cfg y modificar los comandos a nuestro gusto. Yo he creado una consulta llamada check_disk que me dirá el estado de disco /dev/sda1:
<pre class="brush: shell">
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
</pre>
En la maquina Nagios Server hacemos:
<pre class="brush: shell">
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
# apt-get install libssl-dev
# cd nrpe-2.1.2
# ./configure
# make all
# make install-plugin
</pre>
Prueba de funcionamiento:
<pre class="brush: shell">
# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.3
NRPE V2.12
# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.3 -c check_disk
DISK OK - free space: / 33010 MB (96% inode=97%);| /=1126MB;28771;32367;0;35964
</pre>
Ahora solo queda configurar nuestro Nagios Server para que utilice el comando check_nrpe:
<pre class="brush: shell">
define service{
use generic-service
host_name remotehost
service_description Current Users
check_command check_nrpe!check_disk
}
</pre>
Más informacion:<br>
+ <a href="http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf">http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf</a><br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-38484499223271762562011-04-13T14:41:00.007+02:002011-04-13T15:17:39.113+02:00caida ldapHoy se ha ido la luz y nos ha echado abajo el servidor de Samba. Como consecuencia al reiniciar el servidor se ha quedado corrupto el LDAP con el siguiente error:
<pre class="brush: shell">
[root@fileserver]# /etc/init.d/ldap start
Checking configuration files for slapd: bdb_db_open: unclean shutdown detected; attempting recovery.
bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered.
bdb_db_open: Database cannot be opened, err 13. Restore from backup!
bdb(dc=XXXXXX,dc=com): DB_ENV->lock_id_free interface requires an environment configured for the locking subsystem
backend_startup_one: bi_db_open failed! (13)
slap_startup failed (test would succeed using the -u switch)
[FAILED]
stale lock files may be present in /var/lib/ldap [WARNING]
</pre>
Antes de restaurar el backup hemos probado un:
http://www.blogger.com/img/blank.gif
<pre class="brush: shell">
[root@fileserver]# /usr/sbin/slapd_db_recover -v -h /var/lib/ldap
Finding last valid log LSN: file: 1 offset 5315883
Recovery starting from [1][5315755]
Recovery complete at Sun Jul 30 11:31:56 2006
Maximum transaction ID 8000040d Recovery checkpoint [1][5315883]
</pre><br>
Para restauraciones más críticas podemos hacer un backup en texto de tú arbol LDAP, corregir los errores y volver a recrear el arbol de LDAP. En este post hay un buen ejemplo: <a href="http://blog.mydream.com.hk/howto/linux/openldap-recovery-howto">http://blog.mydream.com.hk/howto/linux/openldap-recovery-howto</a>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-91379724320003919452011-04-04T22:38:00.011+02:002011-04-04T23:25:33.096+02:00envolviendo el vsftpAl intentar poner un servicio público en Internet, te das cuenta de la cantidad de intentos de acceso que hay al cabo de un día. Al final, te queda la duda de si pueden o no llevar buen puerto.<br>
Si eres de esos de que leen los Logs cada día o de lo que reciben su Logwatch oportuno, te darás cuenta de estos intentos:<br>
<pre class="brush: shell">
--------------------- pam_unix Begin ------------------------
vsftpd:
Unknown Entries:
check pass; user unknown: 168 Time(s)
authentication failure; logname= uid=0 euid=0 tty=ftp ruser=administrator rhost=thirdeyemedia.net : 82 Time(s)
authentication failure; logname= uid=0 euid=0 tty=ftp ruser=administrador rhost=thirdeyemedia.net : 59 Time(s)
authentication failure; logname= uid=0 euid=0 tty=ftp ruser=anonymous rhost=host217-40-235-141.in-addr.btopenworld.com : 17 Time(s)
authentication failure; logname= uid=0 euid=0 tty=ftp ruser=Administrator rhost=113.107.101.249 : 168 Time(s)
check pass; user unknown: 168 Time(s)
</pre>
Para bannear estas IPs, lo puedes realizar de dos formas diferentes: o las cierras directamente en tú firewall perimetral, o lo cierras en el firewall del propio servidor o lo cierras con <a href="http://en.wikipedia.org/wiki/TCP_Wrapper">tcpwrappers</a>.<br><br>
El concepto de tcpwrappers consiste en envolver tú daemon TCP/UDP en un envoltorio el cual analiza el paquete de red antes de enviárselo a tú daemon. Tcpwrapper permite controlar los accesos a los servicios ofrecidos por el sistema ya sea por máquina, por servicio o por combinaciones de ambos. Para ello el daemon de tcpwrapper llamado “tcpd” lee los archivos de configuración /etc/hosts.allow y /etc/hosts.deny. El primer archivo contie las reglas que especifican las máquinas y servicios que están autorizados y el segundo las maquinas y servicios que no están autorizados.<br>
Personalmente me gusta este sistema porque es posible denegar estas conexiones por un administrador que no tiene acceso a su Firewall porque este está administrador por otro conjunto de personas y además no es necesario rebotar nigún servicio.<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5Xa2Dc8myY8spa0ppn4tqThHgBQ84whgOfqheJnSfiI71USA1yxmLc-yIu_IPXtEzaN8aqR2g0tmr7BOBa_yNsdiKzGNkXjauKA5GFEmDpdFvoeMDng7j3MLdFCc15ouRDK_KO7rcjDI/s1600/wrappers.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5Xa2Dc8myY8spa0ppn4tqThHgBQ84whgOfqheJnSfiI71USA1yxmLc-yIu_IPXtEzaN8aqR2g0tmr7BOBa_yNsdiKzGNkXjauKA5GFEmDpdFvoeMDng7j3MLdFCc15ouRDK_KO7rcjDI/s320/wrappers.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5591839624621493778" /></a><br>
En este ejemplo real vamos a denegar los accesos de 113.107.101.249, 217.40.235.141 y 64.40.107.210, que corresponden a diferentes ataque al servicio FTP.
Primero de todo verificaremos que el servicio de FTP está compilidado para poder utilizar TCPWrappers:
<pre class="brush: shell">
# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
# ldd /usr/sbin/vsftpd | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0x0046c000)
</pre>
Una vez vemos que la librería está cargada, podemos editar el /etc/hosts.deny y meter todas las IP necesarias:
<pre class="brush: shell">
vsftpd: 113.107.101.249, 217.40.235.141, 64.40.107.210
</pre>
Podemos bloquear también por rangos o por subredes:
<pre class="brush: shell">
vsftpd: 113.107.101.0/255.255.255.0
</pre>
Podemos denegar todos los accessos a cualquier servicio:
<pre class="brush: shell">
ALL: 113.107.101.0/255.255.255.0
</pre>
O incluso podemos dejar un mensajito:
<pre class="brush: shell">
vsftpd : .elhacker.net \
: twist /bin/echo "421 %h has been banned from this server!"
</pre>
Si queremos ver todos los servicios TCP que están compilados para utilizar TCPWrappers, podemos hacer:
<pre class="brush: shell">
# strings -f /usr/sbin/* | grep hosts_access
/usr/sbin/rpc.mountd: hosts_access
/usr/sbin/sshd: hosts_access
/usr/sbin/stunnel: hosts_access
/usr/sbin/stunnel: See hosts_access(5) manual for details
/usr/sbin/tcpd: hosts_access_verbose
/usr/sbin/vsftpd: hosts_access
</pre>
Más información:<br>
+ <a href="http://linux.web.cern.ch/linux/scientific4/docs/rhel-rg-en-4/s1-tcpwrappers-access.html">http://linux.web.cern.ch/linux/scientific4/docs/rhel-rg-en-4/s1-tcpwrappers-access.html</a><br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com1tag:blogger.com,1999:blog-5940540509649595783.post-35007283707108760632010-12-07T18:25:00.002+01:002010-12-07T18:27:08.017+01:00migrando a mpls<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1-DsFxid1Dw6ShyBxrWiWgDaPWaJVYRC_lQwrhkXO-8VKs8brAjFh8QlyYRmNpBijjuT59vGMKWmR0tksYf4tqf032Tf5i8nph4O51YXYOv7HFmatEwjR5XWy3i6Nj5hAnUMapkYAsnE/s1600/IMG_1610.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1-DsFxid1Dw6ShyBxrWiWgDaPWaJVYRC_lQwrhkXO-8VKs8brAjFh8QlyYRmNpBijjuT59vGMKWmR0tksYf4tqf032Tf5i8nph4O51YXYOv7HFmatEwjR5XWy3i6Nj5hAnUMapkYAsnE/s320/IMG_1610.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5547993069199881090" /></a>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-28291229117889854232010-11-27T20:11:00.010+01:002010-11-27T20:56:10.581+01:00cuantas visitas tendreAcabo de leer un artículo muy interesante sobre las tendencias de las personas al hacer click sobre los resultados aparecidos en Google al realizar una búsqueda.<br><br>
La Universidad de Cornell ha realizado un estudio llamado "<a href="http://www.cs.cornell.edu/People/tj/publications/granka_etal_04a.pdf">Eye-Tracking Analysis of User Behavior in WWW Search</a>" en el cual se concluye que si tú pagina aparece en la primera posición del buscador tendrás un 56% de posibilidades que finalmente esa persona clique sobre tú Web.
Para cualquier SEO este estudio puede ser muy interesante porque le puede ayudar a que un cliente comprenda cuantas visitas puede llegar a recibir si se encuentra bien situado en las búsquedas de Google.<br><br>
En la siguiente imagen se muestra cómo mira el ojo humano la pagina de Google tras realizar un búsqueda:<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6HYXwlocNbCcxf-jUd_ejRmN9ZOm10emW5RpGDFBv_Uxui9gAL-rA3i3XEmw2Qe1GxFfzZZOknzWKOKw9P4koVZP5zDfNWgljjQuGlHKsrZALsSJuigyMrvoRe4cbJflxi4W9m9r2n9g/s1600/eye-tracking-google-2.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 286px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6HYXwlocNbCcxf-jUd_ejRmN9ZOm10emW5RpGDFBv_Uxui9gAL-rA3i3XEmw2Qe1GxFfzZZOknzWKOKw9P4koVZP5zDfNWgljjQuGlHKsrZALsSJuigyMrvoRe4cbJflxi4W9m9r2n9g/s320/eye-tracking-google-2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5544316888908415826" /></a>
La siguiente muestra el % de clicks que se llevaría una pagina si el usuario escogiera esa opción.<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4MMThW53r6SSRVoAkcNBes3QOJijR8ewb7SNO-xeOEIYCgOxHuOKukvW34UqZDAPlr_trAevW48Jhsa0J23JEIbH20giNCZoYNUplvjAz1qHft15N9Huw-iW2VenRl5EWb57MmY4DQh8/s1600/click-distribution-serps.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 288px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4MMThW53r6SSRVoAkcNBes3QOJijR8ewb7SNO-xeOEIYCgOxHuOKukvW34UqZDAPlr_trAevW48Jhsa0J23JEIbH20giNCZoYNUplvjAz1qHft15N9Huw-iW2VenRl5EWb57MmY4DQh8/s320/click-distribution-serps.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5544317296159847618" /></a>
Pongamos un ejemplo. Supongamos que mi pagina Web es <a href="http://amperis.blogspot.com/">www.amperisblog.com</a> y que he escrito un articulo que explica cómo bloquear el programa <a href="http://amperis.blogspot.com/2008/11/bloquear-ultrasurf.html">Ultrasurf</a>. Supongamos también que con mi estudio de SEO y con varios meses de trabajo he conseguido posicionar mi página para que aparezca en las primeras posiciones cuando la gente realiza la busqueda “bloquear ultrasurf”.
Cómo veis mí pagina aparece en tercera opción (aun me queda un duro trabajo de SEO para posicionarme más arriba).<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiljSWDow4gSYMTlDVAty9kEWpqBB1KXP41u76xw2NWjlGYTO5183L8G9B7bugmVvTokATBzSCKsmbRuW8rONpYwZd3kmZNFWn4bFAwV0VdPI8V2xjHiBXD_NOhZ82olrh0E6kOwJFN0jQ/s1600/1.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 161px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiljSWDow4gSYMTlDVAty9kEWpqBB1KXP41u76xw2NWjlGYTO5183L8G9B7bugmVvTokATBzSCKsmbRuW8rONpYwZd3kmZNFWn4bFAwV0VdPI8V2xjHiBXD_NOhZ82olrh0E6kOwJFN0jQ/s320/1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5544317949797772658" /></a><br>
Ahora veamos desde la utilidad <a href="https://adwords.google.com/select/KeywordToolExternal">Google Adwords (Herramientas para palabras clave)</a> que la busqueda “bloquear ultrasurf” se realiza 2.400 veces al mes en todo el mundo.<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3K_Frd7PJ1PskMJL2BsdvrdS9JMHzKPVU5Si23xV6XeekCOOEwlrsvJF8LjnoJAsIx5EVuBBMwhuheJkuT5FG2QYhwUXcOf-WuxAsSqAxbyJmDpOGw_C72zYBgb3xbCKFHpFER5u6rZs/s1600/2.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 140px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3K_Frd7PJ1PskMJL2BsdvrdS9JMHzKPVU5Si23xV6XeekCOOEwlrsvJF8LjnoJAsIx5EVuBBMwhuheJkuT5FG2QYhwUXcOf-WuxAsSqAxbyJmDpOGw_C72zYBgb3xbCKFHpFER5u6rZs/s320/2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5544318289637273074" /></a><br>
Por tanto: (2400 * 9,82) / 100 = 235 visitas.<br><br>
Es decir, que cada mes mí página recibirá (aproximadamente) 235 visitas por aparecer en la tercera opción. <br><br>
Ahora supongamos que soy el dueño de la Web www.softonic.com (creo nadie la cononoce ¿no?). Supongamos que con mi estudio de SEO me he podido posicionar en primera opción cuando alguien busca <a href="http://www.google.es/search?q=descargar+sofwstre+gratis&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a">“descargar software gratis”</a>. <br>
Si miramos en Google Adword, vemos que esta búsqueda se hace un millón de veces al mes.<br><br>
Por tanto: (1000000 * 56,36) / 100 = 563600 visitas.<br><br>
Cada mes, Softonic recibe una media de 560.000 visitas cuando la gente busca el termino “descargar software gratis”.<br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com2tag:blogger.com,1999:blog-5940540509649595783.post-10511239952104135312010-10-31T19:44:00.010+01:002010-10-31T20:15:54.911+01:00atenuación y ruido<img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 100px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVld5vW0w9CCZt0DSpSzZWwwvgYTZeK1Kg1_I2eREtgdxtdtP-g4a4rdiqFuZ0CrprFLxl3zKjA-qh1g3Dc42ScorbWgk3LCtnI2B1HCJn913LZBI4jCno0Dv1-Drq5XSzIzK9tO-Up28/s320/80572.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5534290890529233970" />
Cuando nos instalan una ADSL, SDSL o una ADSL2+ los valores de atenuación y ruido son los que nos marcan la velocidad final de esta.<br>
La mayoría de routers tienen acceso a la consulta de estos dos valores. Cuando un técnico nos coloca una xDSL lo primero que mira son estos valores y nos dice: "uff estás un poco lejos de la central y no te daremos la velocidad que has contratado". Naturalmente el router
muestra valores aproximados de la atenuación y ruido ya que no son dispositivos pensados para este fin. Existen dispositivos específicos de telecomunicaciones que inyectan señales sinusoidales a diferentes frecuencias y potencias para medir la atenuación final del cable.<br><br>
La <span style="font-weight:bold;">atenuación</span> es la pérdida de señal sufrida al trasmitirse esta por el cable. Características como la distancia del cable (por ejemplo el bucle del abonado), resistencia del cable, tipo de cable, empalmes, vejez del cable, etc, hacen que tengamos una mayor o menor atenuación. La atenuación la encontraremos medida en decibelios (dB). Contra más grande es esta medida peor será nuestra velocidad final.<br><br>
Tenemos que tener presente también que al pasar de ADSL a ADSL2+ sufriremos mayor atenuación debido a que ADSL funciona a 0,5Mhz y ADSL2+ a 4,4Mhz. <br>
Este aumento de la frecuencia de la señal provoca un aumento de la impedancia del cable y por tanto una mayor resistencia de este.<br><br>
Los <span style="font-weight:bold;">valores óptimos de atenuación</span> según la velocidad que hayamos contratado con el proveedor son:<br><br>
+ Para 256kbps: 64dB<br>
+ Para 512kbps: 55dB<br>
+ Para 1Mbps (ADSL): 41dB<br>
+ Para 6Mbps (ADSL): 30dB<br>
+ Para 20Mbps (ADSL2+): 20dB<br><br>
El caso del <span style="font-weight:bold;">ruido</span> serán todas las señales externas que perturben nuestra señal útil de la xDSL. Por la propia naturaleza del ruido, este será imposible eliminarlo, pero si podemos reducirlo haciendo una buena instalación. Lo que miden los routers no es exactamente el ruido sino la relación/margen entre la señal y el ruido. El SNR o Signal to noise ratio es el margen que hay entre la potencia de la señal que se quiere transmitir y la potencia del ruido
que corrompe nuestra señal. Este margen también se mide en dB y contra más grande mejor para nuestra xDSL.<br><br>
Los <span style="font-weight:bold;">valores óptimos de SNR</span> según la velocidad que hayamos contratado con el proveedor son:<br><br>
+ 6dB o menos: conexión inexistente<br>
+ Entre 7db y 10 dB: conexión y desconexiones u otros problemas<br>
+ Entre 11 y 20 dB: Señal optima<br>
+ 21 o más dB: Señal excelente<br><br>
En el caso de un router Cisco, podemos utiliza el comando "<a href="http://www.cisco.com/en/US/docs/ios/12_3/wan/command/reference/wan_s1g.html#wp1037825">show dsl interface atm</a>"
para consultar estos valores.<br><br>
A continuación un ejemplo real de una ADSL2+ de 20Mbps (que no llega, se quedaría en unos 15Mbps).<br><bR>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVXn9aqp9WRa2_qiL6iJYNe-J0pRDV9DBiGwUrTyxUfIp5McPcle3J-WTPiU2tJZQ0J4mBmteYit5Ny-5zlXvKIA1HKCAT9DWLo0n7Ei8EPjwN8bgEns2V65QfCZmEEt9I0PMDqJaFtAI/s1600/jv5e7t.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 222px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVXn9aqp9WRa2_qiL6iJYNe-J0pRDV9DBiGwUrTyxUfIp5McPcle3J-WTPiU2tJZQ0J4mBmteYit5Ny-5zlXvKIA1HKCAT9DWLo0n7Ei8EPjwN8bgEns2V65QfCZmEEt9I0PMDqJaFtAI/s320/jv5e7t.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5534287422594462034" /></a>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-64600364428039778192010-08-01T17:47:00.008+02:002010-08-01T19:29:50.415+02:00monitorizando tu besLa "Blackberry Enterprise Sever Resource Kit" son unas utilidades que nos pueden permitir <span style="font-weight:bold;">leer de forma más clara los ficheros de Logs</span> que genera el BES. Explicaré algunas utilidades que estoy utilizando últimamente y que pueden hacer la vida más fácil a quien no esté familiarizado con la administración de un BES.<br><br>
Para instalar el Resource Kit basta con descargarlo de <a href="http://na.blackberry.com/eng/support/downloads/">Downloads</a> y descomprimirlo en la propia carpeta de instalación de BES. Como veréis es un fichero comprimido y en cada carpeta hay una tool diferente. También hay que tener claro donde se están almacenando los Logs del BES. Para este post supondremos que están guardados en "c:\bes\logs\20100801" y que estoy utilizando un BES 4 para Lotus Domino.<br><br>
+ <span style="font-weight:bold;">Controlar el estado de activación de un smartphone</span>: Lo que más hago con el BES es dar de alta smartphones. Para ello lo mando por mensajero y es el propio usuario que la activa. Para controlar el proceso de activación tenemos la utilidad eastatus. Para controlar el estado de activación del usuario "Alejandro Moreno" haremos lo siguiente:<br>
<pre class="brush: shell">
> EASTatus -l "C:\bes\logs\20100801" -p D -u "Alejandro Moreno/It/miempresa"
</pre>
Como resultado obtendremos un fichero de texto .csv con el siguiente contenido:<br>
<pre class="brush: shell">
Server,User,Step,Step Info,Time
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step01,AGENT- Enterprise Activation message has been picked up by the BlackBerry Enterprise Server,22:24:12
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step02,AGENT- Encryption Key is being generated,22:24:12
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step03,AGENT- Sending Service Book request to the Policy Server,22:24:14
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step04,POLICY- Policy Server sent the IT Policy to the BlackBerry device,22:24:16
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step05,POLICY- IT Policy was successfully delivered to the BlackBerry device,22:24:28
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step06,POLICY- Policy Server sent the Service Books to the BlackBerry device,22:24:28
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step08,AGENT- The BlackBerry device should be active and able to send and receive messages,22:24:30
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step08,AGENT- The BlackBerry device should be active and able to send and receive messages,22:24:30
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step10,SYNC- The Slow-Sync Process has been initiated by the BlackBerry device,22:25:00
CN=midomino/O=miempresa,"Alejandro Moreno /It/miempresa",Step11,SYNC- The Slow-Sync Process has completed and the enterprise activation should be complete,22:35:38
</pre>
+ <span style="font-weight:bold;">Ver los mensajes que han pasado por el BES</span>: esta tools es útil si detectamos que el BES parece que no está enviado o recibiendo mensajes.<br>
<pre class="brush: shell">
> messageflow -l "C:\bes\logs\20100801" -p D -u all
</pre>
Observar las columnas "Posted" que indica la fecha en que el mensaje fue depositado en el buzón del usuario y la "Satus time" que indica la fecha en la que ese mensaje se fue mandado al smartphone del usuario.<br><br>
+ <span style="font-weight:bold;">Ver los mensajes pendientes de enviar</span>: esta es otra manera de ver que algo no está funcionando bien. Si tenemos muchos mensajes en la cola de pendientes de enviar es o porque nos hemos quedado sin conectividad con los servidores de RIM o porque tenemos muchos usuarios que no tienen cobertura en sus smartphones (o las tienen apagadas).<br>
<pre class="brush: shell">
> pending -l "C:\bes\logs\20100801" -p D -u all
</pre>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com2tag:blogger.com,1999:blog-5940540509649595783.post-52860001817005582512010-06-27T14:04:00.003+02:002010-06-27T17:44:45.033+02:00certificados caducados en openvpn<img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzVryJnxzYx5AIpaV34p5emExYbnjHQTGCV0ZVLnthNGpwKqfA2AmBcmSwBARMAM_1GgPG5pkSs0ijkvy3WOLxcxbPqz7sHiyTVMbqIJP8_WfByRUos2LNJavdyU7dAUM2ToiVyf9HJfs/s320/caducado.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5486742871625029650" />
Cuando tienes más de 100 usuarios que pueden entrar por VPN a tú empresa es difícil controlar cuando les caducan sus certificados. El siguiente script muestra todos los certificados que caducan este año. Ahora ya puedes decidir si quieres renovarle o no el certificado al usuario.<br>
<pre class="brush: shell">
#/bin/bash
list=`ls /etc/openvpn/keys/*.crt`
actual=`date '+%Y'`
list () {
for i in $list ; do
fecha=`cat $i | grep After`
fecha="${fecha/Not After :/}"
fecha="${fecha/GMT/}"
if [ "$1" != full ]; then
if [ "$fecha" != "${fecha/$actual/}" ]; then
echo $i : $fecha
fi
else
echo $i : $fecha
fi
done
}
ayuda () {
echo "listcert v0.1b, por amperis"
echo
echo "Uso: listcert [opcion]"
echo
echo "-f, --full Lista la fecha de todos los certificados"
echo "-e, --expire Lista los certificados que caducan este año"
echo "--help Muestra esta misma ayuda"
echo
}
case $1 in
-f | --full)
list full
;;
-e | --expire)
list expire
;;
*)
ayuda
;;
esac
</pre><br>
Ahora puede programar un cron para que te envie un report cada mes:<br>
<pre class="brush: bash">
root@vpn:~# crontab -l
@monthly /etc/openvpn/keys/listcerts.sh -e | mail -s "Usuarios VPN que caducan proximamente" sysadmin@miempresa.com
</pre>
<br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-67074557652850637082010-06-25T11:35:00.002+02:002010-06-25T11:46:51.784+02:00test de velocidad entre dos puntos de red (for linux)Hace ya un tiempo escribí como calcular la <a href="http://amperis.blogspot.com/2009/10/test-de-velocidad-entre-dos-puntos-de.html">velocidad de red entre dos puntos con una aplicación para Windows</a>. Ahora le toca el turno al mismo concepto, pero con una aplicación para Linux. Esta aplicación es: el neterf.<br><br>
Funciona exactamente igual que el anterior. Tenemos arrancado esta tool en modo server desde el punto A y desde otro punto B lo lanzamos como cliente.<br><br>
Veamos como lo lanzamos en modo servidor desde A:</br>
<pre class="brush: text">
[root@A]# apt-get install iperf
...
[root@A]# iperf -s -f K
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.26.2 port 5001 connected with 192.168.1.191 port 60697
[ 4] 0.0-180.4 sec 35400 KBytes 196 KBytes/sec
</pre><br>
Observar que quiero el formado de salida en KBytes/sec.<br><br>
Ahora lanzamos el cliente desde un punto B remoto:<br>
<pre class="brush: text">
[root@B]# apt-get install iperf
...
[root@B]# iperf -c 192.168.26.2 -f K -t 180
------------------------------------------------------------
Client connecting to 192.168.26.2, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.191 port 60697 connected with 192.168.26.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-180.4 sec 35400 KBytes 196 KBytes/sec
</pre></br>
Ver como le indicamos la dirección IP donde se encuentra nuestro servidor, el formato del resultado en KBytes/sec y por ultimo queremos una prueba que dure 180 segundos. Es importante controlar correctamente el tiempo de la prueba, ya que una prueba más larga obtendrá un valor más real.<br><br>
Este comando lo estoy utilizando para realizar un cambio de operador. Tomo las medidas con el operador antiguo y luego con el nuevo operador. Una vez migrado al nuevo operador veremos cuanto hemos mejorado en las comunicaciones.<br><br>
Más información:<br>
+ <a href="http://www.netperf.org/netperf/">Welcome to the Neterf homepage</a><br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com1tag:blogger.com,1999:blog-5940540509649595783.post-11462131575969041902010-06-23T23:58:00.008+02:002010-06-24T00:52:40.537+02:00tomando temperatura al cpd<img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4s1Xhty1nnvH-L3SYfM0EprzxhpROWeClZbtgUdoWcZVccPzkCU6gT_kErUQHhEhmoL7EDnTEj30BLDNNmtL7dg3KneEmcovhCsvirES_yXY3hbKtVoRwuq6k1cOAiHEu7sMQq9wjTS8/s320/termometro-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486103882760096754" />
IPMI (Intelligent Platform Management Interface) es una especificación de Intel para el <span style="font-weight:bold;">monitoreo a nivel físico de un hardware</span>. Fue impulsado por Dell, HP, Intel y NEC. Sus especificaciones y funcionamiento son independientes del sistema operativo y hardware de la maquina. Nos permite controlar valores como la temperatura de diferentes componentes del servidor, velocidad de los ventiladores, apertura del chasis, voltajes, etc.<br><br>
El firmware del IPMI se encuentra en la propia placa madre y es totalmente <span style="font-weight:bold;">independiente del SO</span>, por tanto es posible monitorizar la maquina aún cuando su sistema operativo está colgado. Dado que se trata de una interfaz para monitorizar podemos utilizar herramientas como clientes SNMP, Nagios o OpenView.<br><br>
Vamos a describir cómo utilizar un servidor DELL para controlar la temperatura del CPD y enviar un mail en caso de que la temperatura salga de lo habitual.<br><br>
Primero de todo instalaremos las tools de IPMI. En mi servidor con RedHat es el paquete:<br>
<pre class="brush: text">
# rpm -q -a | grep IPMI
OpenIPMI-tools-1.4.14-1.4E.13
</pre></br>
Una vez rebotado el sistema deberíamos tener arrancados los siguientes módulos en el Kernel. Si no los tenemos arrancados no podremos acceder a la interfaz de IPMI.<br>
<pre class="brush: text">
# lsmod | grep ipmi
ipmi_devintf 13064 2
ipmi_si 36648 1
ipmi_msghandler 31720 2 ipmi_devintf,ipmi_si
</pre></br>
También deberíamos tener un dispositivo llamado ipmidev:<br>
<pre class="brush: text">
# cat /proc/devices | grep ipmi
252 ipmidev
</pre></br>
Consultemos ahora todos los valores que podemos leer con IPDMI:<br>
<pre class="brush: text">
# ipmitool -I open sensor list
Temp | 31.000 | degrees C | ok | na | na | na | 85.000 | 90.000 | na
Temp | 50.000 | degrees C | ok | na | na | na | 85.000 | 90.000 | na
Temp | 40.000 | degrees C | ok | 64.000 | na | -128.000 | -128.000 | na | na
Temp | 40.000 | degrees C | ok | 64.000 | na | -128.000 | -128.000 | na | na
Ambient Temp | 20.000 | degrees C | nc | na | 3.000 | 8.000 | 20.000 | 47.000 | na
CMOS Battery | 0x0 | discrete | 0x0080| na | na | na | na | na | na
ROMB Battery | 0x0 | discrete | 0x0080| na | na | na | na | na | na
VCORE | 0x0 | discrete | 0x0180| na | na | na | na | na | na
VCORE | 0x0 | discrete | 0x0180| na | na | na | na | na | na
CPU VTT | 0x0 | discrete | 0x0180| na | na | na | na | na | na
1.5V PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
1.8V PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
3.3V PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
5V PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
Backplane PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
Flexbay PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
Linear PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
0.9V PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
1.5V ESB2 PG | 0x0 | discrete | 0x0180| na | na | na | na | na | na
0.9V Over Volt | 0x0 | discrete | 0x0180| na | na | na | na | na | na
CPU Power Fault | 0x0 | discrete | 0x0180| na | na | na | na | na | na
FAN 1 RPM | 2475.000 | RPM | ok | na | 1275.000 | na | na | na | na
FAN 2 RPM | 2550.000 | RPM | ok | na | 1275.000 | na | na | na | na
FAN 3 RPM | 2550.000 | RPM | ok | na | 1275.000 | na | na | na | na
FAN 4 RPM | 2550.000 | RPM | ok | na | 1275.000 | na | na | na | na
FAN 5 RPM | 2550.000 | RPM | ok | na | 1275.000 | na | na | na | na
FAN 6 RPM | 2550.000 | RPM | ok | na | 1275.000 | na | na | na | na
FAN 7 RPM | 4500.000 | RPM | ok | 14400.000 | na | 0.000 | 0.000 | na | na
FAN 8 RPM | 4500.000 | RPM | ok | 14400.000 | na | 0.000 | 0.000 | na | na
Presence | 0x0 | discrete | 0x0180| na | na | na | na | na | na
...
Memory Mirrored | na | discrete | na | na | na | na | na | na | na
Memory RAID | na | discrete | na | na | na | na | na | na | na
Memory Added | na | discrete | na | na | na | na | na | na | na
Memory Removed | na | discrete | na | na | na | na | na | na | na
Memory Cfg Err | na | discrete | na | na | na | na | na | na | na
Mem Redun Gain | na | discrete | na | na | na | na | na | na | na
PCIE Fatal Err | na | discrete | na | na | na | na | na | na | na
Chipset Err | na | discrete | na | na | na | na | na | na | na
Err Reg Pointer | na | discrete | na | na | na | na | na | na | na
Mem ECC Warning | na | discrete | na | na | na | na | na | na | na
Mem CRC Err | na | discrete | na | na | na | na | na | na | na
USB Over-current | na | discrete | na | na | na | na | na | na | na
POST Err | na | discrete | na | na | na | na | na | na | na
Hdwr version err | na | discrete | na | na | na | na | na | na | na
Mem Overtemp | na | discrete | na | na | na | na | na | na | na
Mem Fatal SB CRC | na | discrete | na | na | na | na | na | na | na
Mem Fatal NB CRC | na | discrete | na | na | na | na | na | na | na
CPU Temp Interf | na | discrete | na | na | na | na | na | na | na
</pre></br>
Miremos ahora el log de problemas:<br>
<pre class="brush: text">
# ipmitool -I open sel list
1 | 10/16/2006 | 21:02:21 | Event Logging Disabled #0x72 | Log area reset/cleared | Asserted
2 | Pre-Init Time-stamp | Power Supply #0x74 | Redundancy Lost
3 | Pre-Init Time-stamp | Power Supply #0x64 | Failure detected | Asserted
4 | Pre-Init Time-stamp | Power Supply #0x64 | Power Supply AC lost | Asserted
5 | 06/09/2009 | 17:35:09 | Drive Slot #0x81 | Drive Present | Deasserted
6 | 06/09/2009 | 17:37:54 | Drive Slot #0x81 | Drive Present | Asserted
7 | 06/21/2010 | 15:16:47 | Temperature #0x08 | Upper Non-critical going high
</pre></br>
Miremos ahora las alarmas:<br>
<pre class="brush: text">
# ipmitool -I open sdr list
Temp | 32 degrees C | ok
Temp | 50 degrees C | ok
Temp | 40 degrees C | ok
Temp | 40 degrees C | ok
Ambient Temp | 20 degrees C | nc
CMOS Battery | 0x00 | ok
ROMB Battery | 0x00 | ok
VCORE | 0x01 | ok
VCORE | Not Readable | ns
CPU VTT | 0x01 | ok
1.5V PG | 0x01 | ok
1.8V PG | 0x01 | ok
3.3V PG | 0x01 | ok
5V PG | 0x01 | ok
Backplane PG | 0x01 | ok
Flexbay PG | 0x01 | ok
Linear PG | 0x01 | ok
0.9V PG | 0x01 | ok
1.5V ESB2 PG | 0x01 | ok
0.9V Over Volt | 0x01 | ok
CPU Power Fault | 0x01 | ok
FAN 1 RPM | 2475 RPM | ok
FAN 2 RPM | 2475 RPM | ok
FAN 3 RPM | 2550 RPM | ok
FAN 4 RPM | 2550 RPM | ok
FAN 5 RPM | 2550 RPM | ok
FAN 6 RPM | 2550 RPM | ok
FAN 7 RPM | 4500 RPM | ok
FAN 8 RPM | 4500 RPM | ok
Presence | 0x01 | ok
Presence | 0x02 | ok
Presence | 0x01 | ok
Presence | 0x01 | ok
Presence | 0x01 | ok
PFault Fail Safe | Not Readable | ns
Status | 0x80 | ok
Status | 0x00 | ok
Status | 0x01 | ok
Status | 0x01 | ok
RAC Status | 0x00 | ok
OS Watchdog | 0x00 | ok
SEL | Not Readable | ns
Intrusion | 0x00 | ok
PS Redundancy | 0x01 | ok
Fan Redundancy | 0x01 | ok
Drive | 0x01 | ok
Cable SAS A | 0x01 | ok
Cable SAS B | 0x01 | ok
Cable SAS FB | Not Readable | ns
Cable Power FB | Not Readable | ns
...
Mem ECC Warning | Not Readable | ns
Mem CRC Err | Not Readable | ns
USB Over-current | 0x01 | ok
POST Err | Not Readable | ns
Hdwr version err | 0x01 | ok
Mem Overtemp | 0x01 | ok
Mem Fatal SB CRC | 0x01 | ok
Mem Fatal NB CRC | 0x01 | ok
CPU Temp Interf | Not Readable | ns
</pre></br>
Una vez que sabemos de que van estos comandos podemos ver que el valor que nos interesa es el marcado por el sensor de temperatura llamado “Ambient Temp”. Este valor marca el valor de la temperatura fuera del servidor con un error de +-2Cº.<br><br>
Si lanzamos el siguiente comando de shell obtendremos la temperatura ambiente:<br>
<pre class="brush: text">
# ipmitool sdr type Temperature | grep "Ambient Temp" |awk '{ print $10 }' | grep -v "na" | sed 's/\..*//g' | head -n1
</pre></br>
Ahora nos hacemos un script que lea la temperatura y la compare con un máximo. Si se supera ese máximo enviará un mail:<br>
<pre class="brush: text">
# cat /usr/share/ipmitool/control_temp.sh
#!/bin/bash
TEMPWARNING="31"
TEMPCRITICAL="35"
MAIL="sysadmin@miempresa.com"
LOG=/var/log/control_temp.log
TEMPERATURA=$(/usr/bin/ipmitool sdr type Temperature | grep "Ambient Temp" |awk '{ print $10 }' | grep -v "na" | sed 's/\..*//g' | head -n1)
if [ -z "$TEMPERATURA" ];
then
echo UNKNOWN
exit 3
fi
if [ $TEMPERATURA -ge $TEMPCRITICAL ];
then
echo `date` CRITICAL temperatura ${TEMPERATURA}C >> $LOG
echo "CRITICAL temperatura ${TEMPERATURA}C" | mail -s "Temperatura CPD CRIT" ${MAIL}
exit 2
elif [ $TEMPERATURA -ge $TEMPWARNING ];
then
echo `date` WARNING temperatura ${TEMPERATURA}C >> $LOG
echo "WARNING temperatura ${TEMPERATURA}C" | mail -s "Temperatura CPD WARN" ${MAIL}
exit 1
fi
echo `date` OK temperatura ${TEMPERATURA}C >> $LOG
exit 0
</pre></br>
Finalmente programamos este script para que se ejecute cada 15 minutos y compruebe la temperatura:<br>
<pre class="brush: text">
# crontab -l
0,15,30,45 * * * * /usr/share/ipmitool/control_temp.sh > /dev/null 2>&1
</pre></br>
Más información:<br>
+ <a href="http://www.intel.com/design/servers/ipmi/">http://www.intel.com/design/servers/ipmi/</a><br>
+ <a href="http://en.wikipedia.org/wiki/Power_usage_effectiveness">http://en.wikipedia.org/wiki/Power_usage_effectiveness</a>
<br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com1tag:blogger.com,1999:blog-5940540509649595783.post-62978993075280857412010-06-22T17:44:00.002+02:002010-06-22T20:36:19.125+02:00una vez conocí a richard stallmanLibertad 0: Es “libertad” para ejecutar el programa con cualquier propósito.<br>
Libertad 1: Es “libertad” para estudiar y modificar el programa.<br>
Libertad 2: Es “libertad” de copiar el programa y ayudar con él a tu vecino.<br>
Libertad 3: Es “libertad” de mejorar el programa, y hacer públicas tus mejoras, de forma que se beneficie toda la comunidad.<br><br>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv2BC7PQej7dS0h0zGXdcmOf_azsBp445Haj_uWyUrW4VDKWnb1mgTUTJZ4up8OBiTq-3auG3fqv06eor5gKcdYnrbEXBre03lsMez8Yw_y59ZzRdrYGRAdGAXmi6wjic3d2aqrlxR64M/s1600/_6180838.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv2BC7PQej7dS0h0zGXdcmOf_azsBp445Haj_uWyUrW4VDKWnb1mgTUTJZ4up8OBiTq-3auG3fqv06eor5gKcdYnrbEXBre03lsMez8Yw_y59ZzRdrYGRAdGAXmi6wjic3d2aqrlxR64M/s320/_6180838.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5485624687968805186" /></a>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-56900177653963126212010-06-07T21:15:00.012+02:002010-06-20T12:03:43.535+02:00navegación autenticada con SquidEl siguiente post muestra un ejemplo de cómo permitir que alguien pueda navegar por Internet solo si se ha autenticado. Es un ejemplo real donde todos los usuarios reciben una IP por DHCP (192.168.1.0/24) y los usuarios "invitados" reciben por DHCP una IP de un rango concreto (192.168.10.0/24).<br><br>
Dado que todos los usuarios <strong>acceden a Internet vía Squid</strong> utilizaremos las <strong>opciones de autentificación (auth_parm)</strong> para logear a los usuarios. Primero de todo creamos un archivo con los <strong>usuarios y passwords</strong> de los invitados:<br>
<pre class="brush: text">
# touch /etc/squid/squid.users
# htpasswd /etc/squid/squid.users invitado1
# htpasswd /etc/squid/squid.users invitado2
...
</pre><br>
Ahora editamos el archivo de configuración de Squid y configuramos los parámetros auth_parm:<br>
<pre class="brush: text">
auth_param basic children 3
auth_param basic realm Acceso a Internet restringido. Introduzca su usaurio y
contraseña...
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid.users
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
</pre><br>
Esta es la descripción de los parámetros anteriores:<br><br>
+ <em>auth_parm basic children</em>: numero de procesos/daemons que realizaran la
autentificación. Dependerá un poco del número total de usuarios que puedan acceder a Internet en un momento dado.<br>
+ <em>auth_parm basic real</em>: es el mensaje que saldrá en la ventana de login de tú navegado.<br>
+ <em>auth_parm basic program</em>: definimos el sistema de autentificación y dónde debe buscar los usuarios.
+ <em>auth_parm basic credentialsttl</em>: especifica el tiempo que estará validado el usuario antes de volverle a pedirle el login.<br>
+ <em>auth_parm basic casesensitive</em>: define si el nombre de usuario es case-sensitive.<br><br>
Creamos ahora la ACL para decirle sobre que rango debe Squid pedir un login:<br>
<pre class="brush: text">
acl <strong>ip_invitados</strong> src 192.168.10.0/24
acl ip_lan src 192.168.1.0/24
acl <strong>auth_invitados proxy_auth REQUIRED</strong>
...
http_access allow ip_invitados auth_invitados
http_access allow ip_lan
http_access deny all
</pre><br>
Básicamente lo que se necesita son dos listas de accesos. Una para definir las IPs que queremos logear (ip_invitados) y otra para definir el requisito de una autentificación (auth_invitados).<br><br>
Existen varios métodos de autentificación cómo Basic, Digest, NTLM, Negotiate, cada uno de ellos pudiendo atacar contra un backend diferente: LDAP, MySQL, Radius, Active Direcotory, etc. <a href="http://wiki.squid-cache.org/Features/Authentication">Aquí</a> hay algunos ejemplo con diferentes configuraciones.<br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com0tag:blogger.com,1999:blog-5940540509649595783.post-1751023215213169812010-05-23T17:14:00.005+02:002010-05-23T17:23:11.663+02:00wavecom wmod2a (parte ii de ii)<img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 145px; height: 130px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOVW6nN5nLjS6caXNsL9AGdDAy40Ivt6vEBHCt9uo3t5vWmFLoyJT2bIrLpRJOwL2DflTVDbouiwsQl6QTEo2UwzCy-qUCv5EW5nERrcWkW0yZdLUXS8Pu2I4Kfi3JkzM9bkPBBpOHOrA/s320/i_love_sms_button-p145805104532337262t5sj_400.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5474486330163810786" />
Una vez tenemos las tools de Gammu funcionando es hora de montar nuestro gateway. El gateway tendrá un daemon que escuchará el módem y meterá los SMS en una BBDD. Para enviar utilizaremos el comando gammu tal como hemos visto <a href="http://amperis.blogspot.com/2010/05/wavecom-wmod2a-parte-i-de-ii.html">en la primera parte del post</a>.<br><br>
Para facilitar las cosas utiizaremos una pagina Web escrita en PHP.<br><br>
Instalamos Apache+MySQL+PHP:<br>
<pre class="codeview">
# apt-get install apache2 php5 libapache2-mod-php5
# apt-get install libapache2-mod-auth-mysql php5-mysql mysql-server mysql-client
# apt-get install libmysqlclient15-dev
</pre><br>
Los mensajes SMS recibidos al módem SMS irán almacenados en una BBDD MySQL, para ello tendremos que crear un schema con las tablas necesarias para añadir esta info. Dentro de <span style="font-style:italic;">/usr/share/doc/gammu/examples/sql/mysql.sql.gz</span> econtraremos un schema de tablas que podemos utilizar:<br>
<pre class="codeview">
# cp /usr/share/doc/gammu/examples/sql/mysql.sql.gz /tmp
# gunzip /tmp/mysql.sql.gz
# mysqladmin -u root -p create sms
# mysql -u root -p sms < /tmp/mysql.sql
</pre><br>
Ahora le decimos al Gammu que los mensajes recibidos los guarde en las tablas de MySQL. Para ello editamos la configuración y añadimos estos parámetros a los ya existentes:<br>
<pre class="codeview">
# cat /etc/gammurc
...
[smsd]
#service = files
<span style="font-weight:bold;">service = MYSQL</span>
logfile = syslog
CheckSecurity = 0
debuglevel = 1
<span style="font-weight:bold;">user = root
password = 12345</span>
pc = localhost
database = sms
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/
</pre><br>
Nota: Podemos utilizar diferentes tipos de backends. En la configuración anterior se puede utilizar MySQL o directamente ficheros planos alojados en <span style="font-style:italic;">/var/spool/gammu</span>.<br><br>
Para facilitar la lectura de estas tablas MySQL, hay creada una interfaz PHP que nos ayuda a leer los mensajes recibidos:<br>
<pre class="codeview">
# cd /var/www
# wget http://www.syednetworks.com/gammu-sms-gateway.zip
# unzip gammu-sms-gateway.zip
</pre><br>
Ahora podemos acceder a esta interfaz desde <span style="font-style:italic;">http://127.0.0.1/gammu-sms-gateway/sms.php</span>. Para que el script <span style="font-style:italic;">sms.php</span> acceda a vuestro MySQL deberéis cambiar la password de acceso a la base de datos por la que tengáis puesta:<br><br>
Para ello editar el <span style="font-style:italic;">sms.php</span> y cambiamos esta linea:<br>
<pre class="codeview">
mysql_connect("localhost", "root", "<password del root_mysql>") or die(mysql_error());
</pre><br>
Instalamos y arrancamos el daemon que esperará la llegada de los SMSs:<br>
<pre class="codeview">
# apt-get install gammu-smsd
# gammu-smsd -c /etc/gammurc &
</pre><br>
Si enviamos un SMS a nuestro módem GSM y vamos mirando el log podremos ir viendo como van entrando los mensajes y cómo se van actualizado las tablas:<br>
<pre class="codeview">
# tail -f /var/log/syslog
gammu-smsd[5813]: gammu: 3 "OK"
gammu-smsd[5813]: gammu: RECEIVED frametype 0x00/length 0x1B/27
gammu-smsd[5813]: gammu: 41A|54T|2B+|43C|53S|51Q|0D |0D |0A |2B+|43C|53S|51Q|
3A:|20 |311 AT+CSQ...+CSQ: 1
gammu-smsd[5813]: gammu: 377|2C,|300|0D |0A |0D |0A |4FO|4BK|0D |0A
7,0....OK..
gammu-smsd[5813]: gammu: Signal quality info received
gammu-smsd[5813]: gammu: Parsing +CSQ: 17,0 with +CSQ: @i, @i
gammu-smsd[5813]: gammu: Parsed int 17
gammu-smsd[5813]: gammu: Parsed int 0
gammu-smsd[5813]: gammu: Leaving GSM_GetSignalQuality
gammu-smsd[5813]: Execute SQL: UPDATE `phones` SET `TimeOut`= (NOW() +
INTERVAL 10 SECOND)+0, `Battery`= 0, `Signal`= 51 WHERE `IMEI` =
'330122330387360'
</pre><br>
Por ultimo queda la parte del envío de SMS. Para ello, desde la pagina <span style="font-style:italic;">sms.php</span> encontraremos un link llamado "Send SMS message" que nos permitirá <span style="font-weight:bold;">enviar un SMS desde un formulario Web</span>. Este link llama al archivo send-sms.php. Si lo editamos podremos ver como lo único que realiza es una llamada al binario de gammu:<br>
<pre class="codeview">
system( 'sudo /usr/bin/gammu --sendsms EMS ' . escapeshellarg( $destination ) .
' -text ' . escapeshellarg( $message ) );
</pre><br>
Es posible que el path de nuestro binario gammu no corresponda con el de la pagina. Tendremos que cambiar /usr/logal/bin/gammu por /usr/bin/gammu.<br>
Notar que también he añadido la ejecución del comando bajo sudo. Esto es debido a que el usuario que hace la llamada a la función system() es www-data y este usuario <span style="font-weight:bold;">no tiene permisos</span> para ejecutar comandos como gammu.<br><br>
Para que el sudo no pregunte password tenemos que editar el /etc/sudoers y añadir esto:<br>
<pre class="codeview">
# cat /etc/sudoers
...
%sudo ALL=NOPASSWD: ALL
</pre><br>
Es posible que no tengáis permisos para escribir sobre el fichero de sudoers. Hay que poner permisos de escritura y luego <span style="font-weight:bold;">dejarlos como estaba</span>.<br><br>
Finalmente tenemos que decirle quienes son los usuarios que están dentro de sudoers. Para ello editamos el /etc/groups y modificamos el grupo sudo:<br>
<pre class="codeview">
# cat /etc/group | grep sudo
sudo:x:27:usuario1,www-data
</pre><br>
<br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com3tag:blogger.com,1999:blog-5940540509649595783.post-33417148995534933252010-05-22T15:20:00.011+02:002010-05-22T16:07:35.679+02:00wavecom wmod2a (parte i de ii)<img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 207px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxudcZ_o1CyG89ztBZ3j_POsp2ZnPI4KSiq6dUhCx8GEnZyNxvhe7BEGmPTiUhJXG-zYGy4LJNRxMGdc_TwyvgcIH9ufAbSxgTuBgjPE1KYudhQ08C8Ve1BCO2onN7rdWbUvki5biM6Ss/s320/FastrackM1306.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5474093094988864402" />
Vamos a montar un gateway para enviar y recibir mensajes SMS. La idea es montar este servicio para poder utilizarlo en <a href="http://www.nagios.org/">Nagios</a> y así poder enviar alertas vía SMS.<br><br>
En verdad se puede realizar <a href="http://amperis.blogspot.com/2009/06/envio-de-sms-en-linux.html">con cualquier teléfono móvil</a>, pero esta vez utilizaré <span style="font-weight:bold;">un hardware dedicado</span> y especifico para ello un módem GSM Wavecom modelo wmod2a-g900.<br><br>
El módem se comunicará con el servidor vía interfaz serie, pero como ya no quedan servidores con puerto de serie utilizaré un conversor USB-to-serial. Por tanto lo primero es ver que se detecta correctamente el conversor:<br>
<pre class="codeview">
# dmesg | grep USB
[ 77.187320] USB Serial support registered for generic
[ 77.187348] usbserial: USB Serial Driver core
[ 77.196733] USB Serial support registered for pl2303
[ 77.208730] usb 6-2: pl2303 converter now <span style="font-weight:bold;">attached to ttyUSB0</span>
[ 77.208746] pl2303: Prolific PL2303 USB to serial adaptor driver
</pre><br>
Ahora instalaremos el soft básico para acceder al módem. Como todo modem, podríamos acceder a el vía <span style="font-weight:bold;">comandos AT</span>, pero tendríamos que leernos la documentación del dispositivo. Utilizaremos las herramientas gratuitas de <a href="http://www.gammu.org">Gammu</a>:<br>
<pre class="codeview">
# apt-get install gammu
</pre><br>
Encontraremos un archivo de configuración de ejemplo en /usr/share/doc/gammu/examples/config/gammurc.gz. Nosotros crearemos uno con estos parámetros:<br>
<pre class="codeview">
# cat /etc/gammurc
[gammu]
port = <span style="font-weight:bold;">/dev/ttyUSB0</span>
connection = <span style="font-weight:bold;">at19200</span>
name = wavecom
logformat = textall
logfile = gammu.log
startinfo = yes
use_locking = yes
gammuloc = locfile
</pre><br>
Cómo puede verse el dispositivo /dev/ttyUSB0 indica la <span style="font-weight:bold;">interfaz donde está conectada</span> el módem GSM.<br><br>
Una vez encendido el módem veamos si las tools de Gammu son capaces de reconocer el modem. Yo recomiendo quitarle el PIN a la tarjeta SIM para evitar problemas. De esta forma cada ver que reiniciemos el módem este estará listo para enviar SMS:<br>
<pre class="codeview">
# gammu -c /etc/gammurc identify
Manufacturer : Wavecom
Model : unknown (<span style="font-weight:bold;">900P</span>)
Firmware : 320_G250.53 833584 092499 18:13
IMEI : 330142330387360
SIM IMSI : 214071617085412
</pre><br>
Enviemos ahora nuestro primer SMS a otro teléfono y veamos que efectivamente está funcionando:<br>
<pre class="codeview">
# echo hola | gammu -c /etc/gammurc sendsms TEXT 6938888888
If you want break, press Ctrl+C...
Sending SMS 1/1....waiting for network <span style="font-weight:bold;">answer..OK</span>, message reference=115
</pre><br>
Más información:<br>
+ <a href="http://www.coster.info/costerit/teleges/doc/gsm822w.pdf">Wavecom AT Commands Guide</a>
<br><br>amperishttp://www.blogger.com/profile/12133227077049838390noreply@blogger.com4