Archive for the ‘Uncategorized’ Category

h1

Acceder por SSH sin contraseña

15/11/2008

Hay veces que tenemos que entrar sucesivamente a una máquina por ssh, y se pierde mucho tiempo en el login. Para ello hay una utilidad de SSH que permite el logueo automático sin que ello signifique decremento de seguridad. Para ello se genera una clave pública y se exporta a la otra máquina, asumiendo el demonio de ssh a partir de entonces el acceso desde esa máquina, con ese usuario y con esa clave, como permitido:

carlos@host1:~$ ssh-keygen -t dsa
carlos@host1:~$ ssh-copy-id -i .ssh/id_dsa.pub pepito@host2

De esta manera el usuario carlos puede entrar en host2 como usuario «pepito» sin tener que teclear siempre la contraseña. Es una solución util para interacciones automática entre sistemas sin tener que almacenar la contraseña del usuario en texto plano, cron o demás.

A parte, es conveniente en sistemas compartidos modificar los permisos de acceso a los ficheros de claves generados para evitar malos usos:
carlos@WhenIGrewUp:~$ chmod 700 .ssh
carlos@WhenIGrewUp:~$ chmod 600 .ssh/authorized_keys
carlos@WhenIGrewUp:~$ chmod 600 .ssh/id_dsa
carlos@WhenIGrewUp:~$ chmod 744 .ssh/id_dsa.pub

En determinadas ocasiones no funciona esta solución. Para ello es conveniente unificar la versión de servidor ssh existente en los nodos. Se puede averiguar facilmente con la utilidad scanssh:

carlos@WhenIGrewUp:~$ sudo scanssh 172.26.9
172.26.0.9:22 SSH-2.0-OpenSSH_4.6p1 Debian-5ubuntu0.6
Effective host scan rate: 3.91 hosts/s

carlos@WhenIGrewUp:~$ sudo scanssh 172.26.5
172.26.0.5:22 SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1
Effective host scan rate: 1.52 hosts/s

carlos@shirley:~$ sudo scanssh 172.26.0.4
172.26.0.4:22 SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Effective host scan rate: 3.33 hosts/s

h1

Importar ficheros de correo (Mbox, PST, etc) en Gmail

13/11/2008

Para facilitar al Gran Hermano su labor podemos importar en nuestras cuentas de Gmail ese fichero de correo de cientos, a veces gigas, de correo que ya es inamovible de nuestro ordenador (y por tanto inaccesible desde otras localizaciones).

Para ello existe GML (GoogleMail Loader), un script en Python para procesar ficheros de correo en formato Mbox (Netscape, Mozilla Thunderbird), MailDIR (Qmail), MMDF (Mutt), NH (NHM) o Babyl (Emacs Rmail). El formato PST de Outlook se puede transformar facilmente con la herramienta «readPST» a formato Mbox.

GML se puede descargar desde aquí, donde también hay versión para Windows. Tras descomprimirlo, se ejecuta mediante el intérprete de Phyton:

carlos@WhenIGrewUp:~/gmlw$ python gmlw.py

La ejecución es muy sencilla, se muestra un GUI en el que hay que elegir la dirección de correo, el fichero almacén y el login en el SMTP correspondiente. Posteriormente el proceso comenzará incorporándose los correos en Gmail con la fecha y destinatarios originales. Lo único que cambiará será el remitente si utilizas el smtp de Gmail, que incluirá tu dirección de Gmail pero mantendrá el nombre del remitente verdadero para facilitar el seguimiento (límites de la seguridad frente al spam en los SMTP’s habituales). Es un proceso automático y lento.

En esta portabilidad de correos siempre es recomendable que antes de empezar que cambies tu contraseña de Gmail. Ésta ya es visible en la GUI y en la consola. Si utilizas como SMTP el de Gmail, viajará encriptada. Posteriormente puedes volver a establecer tu contraseña anterior.

Posibles problemas:

a) Al iniciar una importación, se produce el siguiente problema:
mBox (Netscape, Mozilla, Thunderbird) at location /home/carlos/tmp/Inbox Opened Successfully.
Done. Stats: 0 success 0 error 0 skipped.

El fichero no es un Mbox, pese a que el aviso indique que si.

b) El fichero está corrupto o no lo reconoce.
Se puede aplicar un programa de limpieza del fichero descargable aquí.

carlos@WhenIGrewUp:~/tmp$ python cleanmbox.py varios
Reading messages from 'varios'
Processing 55 messages... done.
Wrote to 'varios.cleaned'
Cleaned 1 mailbox(es).

c) Al ejecutarlo se produce el siguiente error:
carlos@WhenIGrewUp:~/gmlw$ python gmlw.py
Traceback (most recent call last):
File "gmlw.py", line 42, in
import os, sys, mailbox, smtplib, time, Pmw, webbrowser, tkFileDialog, re
ImportError: No module named Pmw

en caso de obtener ese error, se necesitará instalar la librería correspondiente:
carlos@WhenIGrewUp:~/gmlw$ apt-cache search pmw
python-pmw - Pmw -- Python MegaWidgets
python-pmw-doc - Pmw -- Python MegaWidgets
carlos@WhenIGrewUp:~/gmlw$ sudo apt-get install python-pmw

Al estar descontinuado GML, han surgido forks o modificaciones de este programa. A parte, hay otra opción como Gexodus.

h1

Monitorizar un servicio o proceso y rearrancarlo en caso de caída

02/11/2008

Frecuentemente es necesario tener servicios y procesos monitorizados y levantados las 24h. Para ello existen utilidades que monitorizan y rearracan en caso de caída o condiciones críticas del sistema, a la vez que envían alertas al administrador. Y lo hacen no sólo en base al estado del proceso si no también, si se desea, en función del entorno (RAM en uso, espacio libre en disco, etc), así como permite crear tareas de mantenimiento para evitar entrar en situaciones críticas.

En GNU/Linux uno de los más utilizados es Monit. De una manera sencilla permite controlar procesos, servicios, ficheros, memoria, CPU, puertos ó comunicaciones. En Debian ó Ubuntu se instala de manera sencilla:

$sudo apt-get install monit

Y crea el servicio que se arrancará en todos los reinicios. A contiinuación, es necesario activarlo configurando los parámetros generales de la aplicación:

$sudo nano /etc/default/monit
# You must set this variable to for monit to start
startup=1
# To change the intervals which monit should run uncomment
# and change this variable.
CHECK_INTERVALS=180

y posteriormente indicar los parámetros personalizados (condiciones a monitorizar). El fichero viene totalmente comentado por un ejemplo de cada tipología de evento monitorizable (fichero que cambia, procesos que mueren, consumo de memoria o de CPU, puerto inalcanzable…), de modo que es bastante fácil de configurar y de adaptar a situaciones persanlizadas. En mi caso pongo de ejemplo una condición para mantener demonio de aMule (amuled) arrancado si cae:

# sudo nano /etc/monit/monitrc
set daemon  60
set logfile syslog facility log_daemon
set httpd port 2812 and
use address localhost  # only accept connection from localhost
allow localhost        # allow localhost to connect to the server and
allow admin:monit      # require user 'admin' with password 'monit'
(...)
#--------------- AMULE DAEMON
check process aMule with pidfile /home/carlos/.aMule/muleLock
start program = "/etc/init.d/amule-daemon start"
stop program  = "/etc/init.d/amule-daemon stop"
if failed host localhost port 4712 then restart
(...)

Comentar que el  «set httpd port 2812» configura un interfaz web cómodo para acceder a las estadísticas de Monit vía web. A parte, las estadísticas se pueden ver en el syslog o en el fichero que se especifique en la configuración.

h1

Eventum no envía correos

23/07/2008

Eventum, el gestor de incidencias, tiene una utilidad muy cómoda para enviar un correo a los «afectados» cuando se crea o modifica una incidencia. Para hacerlo funcionar, a parte de tener que configurar sus parámetros, es necesario meter en el cron las siguientes líneas:

* * * * * cd /home/webadmin/htdocs/eventum/misc; /usr/bin/php -q process_mail_queue.php
*/10 * * * * cd /home/webadmin/htdocs/eventum/misc; /usr/bin/php -q check_reminders.php

h1

Cómo ver las opciones de superusuario de Eventum (smtp, etc)

20/07/2008

En algunos casos con el usuario que manejamos perdemos la categoría de superusuario, y por tanto no se muestran esas opciones de configuración. Basta con conectarse a la base de datos, localizar el ID correspondiente al usuario y alterar sus categoría.

Conectar a MySQL:
pilar002:/var/www/eventum/config# mysql --user=usuarioEventum --password=clavesecreta nombre_de_la_BD
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.0.32-Debian_7etch6-log Debian etch distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Obtener el ID (en este caso es «3») del usuario al que queremos promocionar:


mysql> SELECT usr_id FROM eventum_user WHERE usr_email='email@delAdministrador.com';
+--------+
| usr_id |
+--------+
| 3 |
+--------+
1 row in set (0.00 sec)

Promocionar al usuario con id=3:

mysql> UPDATE `eventum_project_user` SET `pru_role` = '7' WHERE `pru_usr_id` = '3'  ;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

En realidad todo se resume en cambiar el tipo de permiso de todas las ocurrencias del usuario a promocionar en la tabla eventum_project_user poniéndolas a 7

h1

Redireccionar todo a tráfico seguro / Invalid command ‘RewriteEngine’

20/07/2008

Si tras configurar un sitio con una redirección, por ejemplo uno que redireccione todo el tráfico http a https:

pilar002:/etc/apache2/sites-available# cat redir
NameVirtualHost *:80
RewriteEngine on
RewriteLog /var/log/apache2/https_rewrite.log
RewriteLogLevel 1
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]

Fuente: http://crysol.inf-cr.uclm.es/node/198

Se produce el siguiente error:

pilar002:/etc/apache2/sites-available# /etc/init.d/apache2 restart
Forcing reload of web server (apache2)...Syntax error on line 3 of /etc/apache2/sites-enabled/redir:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
failed!

La solución es tan sencilla como cargar el módulo de rewrite:
pilar002:/etc/apache2/mods-available# a2enmod rewrite
Module rewrite installed; run /etc/init.d/apache2 force-reload to enable.

h1

Generación de claves para SSL en Apache2 SIN «apache2-ssl-certificate»

20/07/2008

Update: Gracias a Boriel, se puede utilizar estas instrucciones más sencillas:
$ mkdir /etc/apache2/ssl
$ make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/server.pem

 

El script apache2-ssl-certificate ya no se incluye en el paquete de Apache2 de Debian, por lo que la habitual instrucción:

  • # apache2-ssl-certificate —force -days 365 -set_serial 2
    ó si ocurre:
    # apache2-ssl-certificate: command not found

    viene a ser sustituida por:

    # openssl genrsa -des3 -out server.key 1024
    # openssl rsa -in server.key -out server.pem
    # openssl req -new -key server.key -out server.csr
    # openssl x509 -req -days 360 -in server.csr -signkey server.key -out server.crt


    Opcional: para que no se pida la clave cada vez que se arranca el servidor:

    # mv key.pem key.pem.SEGURA #openssl rsa -in key.pem.SEGURA -out key.pem
h1

como instalar la impresora hp photosmart c6100 ó 6180 en Kubuntu

06/07/2008

La HP photosmart c6100 (ó c6180) no funciona por defecto en Kubuntu Hardy Heron. Es necesario instalar unas versión posterior de HPLIP. Para ello se desinstalará la versión actual, se descargará la última versión de la web de HPLIP y se ejecutará:

sudo apt-get remove --purge hpoj
chmod 777 hplip-2.8.6.run
./hplip-2.8.6.run

h1

Como matar todos los procesos de un usuario o que cumplan una condición

05/06/2008

Como matar todos los procesos de un usuario o que cumplan una condición:

kill -9 `ps auxww | grep [nombre] | egrep -v grep | awk ‘{print $2}’`

h1

Como reiniciar Apache sin pérdida de servicio

07/05/2008

En ocasiones, sobre todo en entornos de producción, es necesario reiniciar Apache sin pérdida de servicio (en caliente) para utilizar una configuración distinta (httpd.conf), de modo que siga atendiendo peticiones constantemente y los usuarios no lo noten.

Para ello se puede utilizar la opción «graceful».

$ /usr/local/apache2/bin/apachectl -f /export/home/usuario/apache/conf/httpd_NUEVA.conf -k graceful

De este modo Apache toma como configuración «httpd_NUEVA.conf» como nueva configuración para las posteriores peticiones, mientras que para los presentes forks se continuará utilizando la antigua. De este modo se puede reiniciar Apache sin pérdida de servicio. Además, la opción graceful chequea la validez del nuevo fichero httpd.conf, de modo que si no es aceptable las peticiones se seguirán atendiendo con la config antigua, aumentando la calidad y fiabilidad del servicio.

Además, previamente se puede chequear la validez del archivo mediante «apachectl configtest»