miércoles, 31 de agosto de 2011

MSSQL: Error al importar

Hoy he tenido que importar una BBDD MSSQL 2000 en MSSQL 2008. Y me daba una pequeña crujida:

El conjunto de copia de seguridad contiene una copia de una base de datos distinta de la existente
(The Backup set holds a backup of a database other than existing database)

y luego un montón de códigos raros a los MS es tan aficionado del tipo:

Microsoft.SqlServer.SmoExtended
System.Data.SqlClient.SqlError

El caso es que googleando he visto que lo único que tenía que hacer mientras importaba la BBDD era activar la opción WITH_REPLACE en las Opciones. Y ya está, la BBDD se ha importado correctamente ;)


Puedes consultar la fuente directamente aquí.

lunes, 22 de agosto de 2011

Quitar un servidor MySQL de la replicación

No sé si os ha llegado a pasar alguna vez: para poner dos BBDD MySQL en replicación hay información para parar un tren, pero para quitarlas, yo no he localizado tanta...

Aquí dejo mi pequeña receta.

Hasta hace nada tenía tres servidores MySQL, uno de maestro y dos esclavos que se replicaban automáticamente contra el maestro. Pero llegó el momento que necesité sacarlos y esto es lo que hice:

  1. Editar el /etc/mysql/my.conf (cambiará según distribución, pero en esencia es el archivo de configuración del MySQL) y comentamos las siguientes líneas:
    #server-id = 6
    #log_bin = /var/log/mysql/mysql-bin.log
  2. Movemos (por si hay que recuperarlo) el archivo master.info que se ubica donde se guardan los binarios del MySQL (por defecto en muchos casos es /var/lib/mysql/) y lo guardamos con otro nombre
  3. Reiniciamos la BBDD

La comprobación de que todo ha ido bien y que ya no está vinculado a ningún maestro la podéis hacer consultando el estado del slave: show slave status. Ya veréis como no dice nada!

martes, 16 de agosto de 2011

Revelación de información sensible en Apache Tomcat

Apache Software Foundation ha hecho pública la resolución de una nueva vulnerabilidad en Apache Tomcat. Esta vulnerabilidad con el CVE-2011-2729 (afecta a las versiones 5, 6 y 7), y queda definida con un nivel de severidad de "Importante" al permitir la revelación de información sensible.

Apache Tomcat es un servidor web que funciona como contenedor de servlets, desarrollado en código abierto por la Apache Software Foundation. Tomcat implementa las especificaciones de las tecnologías servlets Java y de páginas JSP.

Debido a un error en las políticas de seguridad del servicio jsvc se permitiría a las aplicaciones web tener acceso a ficheros y directorios pertenecientes al superusuario.

Esta situación sólo se daría si la instalación de Tomcat está bajo un sistema operativo Linux, el servicio jsvc fue compilado con libcap y se utilizó el parámetro -user.

Se recomienda actualizar Tomcat y aplicar las contramedidas necesarias:

Versiones afectadas
* Tomcat 7.0.0 a 7.0.19
Actualizar a la versión ya disponible 7.0.20:
http://tomcat.apache.org/download-70.cgi

* Tomcat 6.0.30 a 6.0.32 y Tomcat 5.5.32 a 5.5.33
Utilizar las contramedidas disponibles hasta que se hagan públicas las
nuevas versiones (6.0.33 y 5.5.34 respectivamente):
* Actualizar el servicio jsvc a la versión 1.0.7 o posterior.
* No utilizar el parámetro -user para cambiar de usuario
* Recompilar el servicio jsvc sin libcap.

Más información:

Fixed in Apache Tomcat 7.0.20
Important: Information disclosure CVE-2011-2729
http://tomcat.apache.org/security-7.html#Fixed_in_Apache_Tomcat_7.0.20

Apache Tomcat - Security Updates
http://tomcat.apache.org/security.html


FUENTE: HispaSec

miércoles, 10 de agosto de 2011

Roundcube: crear carpetas por defecto

Hace unos días me encontré que las cuentas nuevas de correo no creaban las carpetas típicas en el servidor (Enviados, Borradores y Papelera). Estas carpetas las tiene que crear el webmail (o el cliente IMAP que se utilice), pero en este caso mi roundcube no las estaba creando.

Buscando por internet he visto que hay una opción para ello.

Editamos el archivo de configuración main.inc.php y buscamos la línea donde esté el parámetro
create_default_folders
y de false lo cambio a true.

Las nuevas cuentas empiezan a crear sus carpetas correctamente.

En este caso, hay un pero del que no me he visto advertida en internet. Hay que tener cuidado, no es una opción que no tenga "efectos" secundarios. Yo lo testeé antes de pasarlo a producción, y días después me he encontrado con un usuario que ha "perdido" sus carpetas de Enviados, Borradores y Papelera. Se trata de un usuario antiguo, que tenía ya correo en la plataforma antes del cambio.
Para solucionarlo, he tenido que "resetear" los parámetros por defecto del usuario en roundcube. Para ello, me he ido a la BBDD de RC y he buscado en la tabla users a este usuario, y en el campo preferences le he dejado unas básicas.


mysql> select * from users where username like 'xxx@yyyy.tld';
+---------+-----------------------------+-----------+-------+---------------------+---------------------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user_id | username | mail_host | alias | created | last_login | language | preferences |
+---------+-----------------------------+-----------+-------+---------------------+---------------------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 5 | xxx@yyyy.tld | localhost | | 2011-07-27 03:52:18 | 2011-08-10 15:31:50 | es_ES | a:7:{s:17:"message_threading";a:0:{}s:9:"junk_mbox";s:0:"";s:20:"default_imap_folders";a:4:{i:0;s:5:"INBOX";i:1;s:12:"INBOX.Drafts";i:2;s:10:"INBOX.Sent";i:3;s:11:"INBOX.Trash";}s:16:"message_sort_col";s:4:"date";s:18:"message_sort_order";s:4:"DESC";s:11:"search_mods";a:7:{s:1:"*";a:2:{s:7:"subject";i:1;s:4:"from";i:1;}s:10:"INBOX.Sent";a:2:{s:7:"subject";i:1;s:2:"to";i:1;}s:12:"INBOX.Drafts";a:2:{s:7:"subject";i:1;s:2:"to";i:1;}s:11:"INBOX.Trash";a:3:{s:7:"subject";i:1;s:4:"from";i:1;s:2:"to";i:1;}s:8:"Enviados";a:2:{s:7:"subject";i:1;s:4:"from";i:1;}s:5:"INBOX";a:2:{s:7:"subject";i:1;s:4:"from";i:1;}s:8:"Papelera";a:2:{s:7:"subject";i:1;s:4:"from";i:1;}}s:17:"collapsed_folders";s:11:"null&INBOX&";} |
+---------+-----------------------------+-----------+-------+---------------------+---------------------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> update users set preferences='a:2:{s:16:"message_sort_col";s:4:"date";s:18:"message_sort_order";s:4:"DESC";}' where username like 'xxx@yyyy.tld';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from users where username like 'xxx@yyyy.tld';
+---------+-----------------------------+-----------+-------+---------------------+---------------------+----------+--------------------------------------------------------------------------------+
| user_id | username | mail_host | alias | created | last_login | language | preferences |
+---------+-----------------------------+-----------+-------+---------------------+---------------------+----------+--------------------------------------------------------------------------------+
| 5 | sheriff@chocolatfactory.com | localhost | | 2011-07-27 03:52:18 | 2011-08-10 15:31:50 | es_ES | a:2:{s:16:"message_sort_col";s:4:"date";s:18:"message_sort_order";s:4:"DESC";} |
+---------+-----------------------------+-----------+-------+---------------------+---------------------+----------+--------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>


Una vez hecho este cambio, el usuario tiene sus preferencias modificadas, pero al menos ya ve sus carpetas. Seguro que hay alguna manera más "fina" de hacerlo, pero el usuario se impacientaba y ya me estaba gritando al teléfono... así que ajo y agua ;)

Cuidadín con lo que tocáis!



jueves, 4 de agosto de 2011

Roundcube: aumentar el tamaño máximo de archivos adjuntos

Hemos renovado nuestra interfaz de webmail, y ahora utilizamos RoundCube en el trabajo. La verdad es que el cambio de SquirrelMail a RC es abismal, y estamos encantados.

Pero hoy me encontrado con un usuario con un problema: no podía adjuntar archivos mayores de 2Mb, y en el anterior webmail se podía. Así que revisando la documentación he visto que RC coge directamente el valor máximo de los archivos adjuntos de la configuración PHP, así que ha sido tan fácil como buscar el php.ini y modificar el campo
upload_max_filesize = 8M
Y ya está. He hecho un reload del apache "por si las flies" y RC ha cogido el cambio automáticamente. Qué gusto!!!!

miércoles, 3 de agosto de 2011

Liberar la RAM cacheada en Linux

¿No os ha pasado nunca que se os ha quedado un servidor sin RAM, y que no os ha quedado otra que reinciarlo? MIra que da rabia... y más si la RAM la estás viendo cacheada y no puedes/sabes liberarla.

Pues esto se va a acabar... más o menos. Buscando por la red, localizé un blog (Redes Privadas Virtuales) que daba una solución a este problemilla, y que la verdad es que funciona muy bien. La entrada original la podéis encontrar aquí, donde se explica un poco el porqué, y yo os dejo aquí mi pequeño script que automatiza el vaciado. Lo estoy implementando en los últimos servidores en los que estoy trabajando, y de momento da bastante buen resultado.

#! /bin/sh
sync
echo 3 > /proc/sys/vm/drop_caches
echo 0 > /proc/sys/vm/drop_caches

Yo pongo la entrada correspondiente en el cron y lo ejecuto una vez al día, a ser posible por la noche, y la verdad es que se nota.

Ya me diréis qué tal os funciona!

lunes, 1 de agosto de 2011

Hablitar SNMP en un Vmware ESX 3.5

Sé que a estas alturas, pocos serán los que utilicen vmware ESX 3.5, pero ahí va una cosilla que acabo de encontrar: cómo habilitar el SNMP.

En un principio podéis pensar que es una trivialidad, muy sencillo... pero bueno, no es tan trivial.

La "primera" parte consta en configurar y habilitar el servicio; de hecho ya viene configurado con la comunity public, y podéis mirar de arrancarlo y comprobar si funciona.
En esta primera parte, hay que comprobar que en el archivo de configuración

/etc/snmp/snmpd.conf

estén las entradas

rocommunity xxxx
dlmod SNMPESX /usr/lib/vmware/snmp/libSNMPESX.so

donde xxxx es la contraseña snmp para las consultas de sólo lectura.
Lo dicho, después arrancáis o reinciáis el SNMP

service snmpd start



La gracia de esta entrada es que, si esto no funciona, es porque el firewall del ESX está haciendo su trabajo, y no podemos obtener una respuesta. Hay que abrir el firewall para las peticiones SNMP, y eso lo hacemos de esta manera:

esxcfg-firewall -e snmpd
chkconfig snmpd on
service snmpd start

... y funciona!!! Ale, ahora a monitorizar ;)