Cambiando el puerto de rsync

Y porque este blog me sirve para recopilar esas pequeñas cosas útiles que podrían desaparecer de la red, esta entrada es para un pequeño tip sobre rsync.

Previamente platiqué sobre esta herramienta como un reemplazo para las utilidades de copia con mayores funcionalidades.

Hoy me encontré con un problema: ¿Cómo ocupar rsync para acceder a un servidor SSH en otro puerto?

Pues bien, esta es la solución:

Recordando el viejo comando del otro artículo

rsync -avzP midirectorio usuario@servidor:~/directoriodestino

Suponiendo que el puerto SSH en esta ocasión es el 1500 por dar un ejemplo, el comando nos queda así

rsync -avzP --rsh='ssh -p1500' midirectorio usuario@servidor:~/directoriodestino

Como un plus, también podemos usar SCP con otro puerto otro puerto para casos menos complejos:

scp -P1500 archivo usuario@servidor:~/archivodestino
Posted in Linux | Tagged , | Leave a comment

Keepalive en SSH

Durante mucho tiempo, he tenido algunos problemas con ciertos ISP en aplicaciones que requieren conexiones permanentes para funcionar, pues después de un tiempo de inactividad simplemente las cierra. Esto puede pasar también con ciertos firewalls.

Mi problema particular es el siguiente: para mí es necesario tener más de una sesión SSH para poder administrar servidores rápidamente. El problema viene cuando después de algunos minutos de inactividad, la conexión SSH muere por la razón anterior.

Esto tiene varias soluciones:

En clientes Linux, es posible añadir una opción al archivo /etc/ssh/ssh_config:

ServerAliveInterval 1000

En ocasiones no tenemos acceso a ese archivo, porque la cuenta con que operamos no tiene permisos administrativos. Entonces, podemos añadir lo siguiente al archivo /home/user/.ssh/config

Host *
ServerAliveInterval 1000

Y esa sería una buena solución para cualquier caso. Lamentablemente, yo no siempre uso Linux :D

Así que en Windows, entre los clientes SSH que existen, mi favorito es PuTTY. Dicho programa permite activar una opción similar. La desventaja es que hay que hacerlo para cada vez que se haga una conexión.

Bueno, pues en mi caso, tengo una máquina Linux que me sirve como intermediario para rutear conexiones a una red local. Y este es el caso común que va desde un pequeño ciber café hasta grandes redes en empresas. Entonces, ¿por qué no buscar una solución para toda la red local?

La solución es la siguiente:

echo 1000 > /proc/sys/net/ipv4/tcp_keepalive_time

Esto nos permite mandar un keep-alive para cualquier conexión TCP. Con esto, solucionamos el problema de SSH y de cualquier otro protocolo que utilice el stack TCP, así como lo soluciona para toda la red local.

Un valor que funciona para mí es 200, es decir, poco más de 3 minutos.

Posted in Linux | Tagged , | Leave a comment

Cómo activar la escritura NTFS en Mac

Pues un amigo me sugirió que escribiera este pequeño tip, sobre sistemas de archivos NTFS en Mac.

Ya sea porque en la Mac tenemos también Windows instalado via Bootcamp, o algún disco externo formateado con el sistema NTFS, es necesario acceder a este sistema de archivos, y en ocasiones, realizar algunas modificaciones.

No hace mucho tiempo, hasta MacOS 10.5 Leopard, no era posible escribir en sistemas de archivos NTFS (usados por Windows) de forma nativa, y sólo se podían utilizar en modo sólo lectura. Para poder escribir se tenía que recurrir a opciones de terceros para poder hacerlo, y que además tienen un costo importante para nuestro bolsillo, la más común Paragon NTFS for MacOS.

Con MacOS Snow Leopard, es posible ahorrarse algo de dinero, ya que con un par de pasos podemos activar la escritura en estos sistemas de archivos:

En una terminal, tecleamos

diskutil info /Volumes/discontfs

Donde discontfs es el nombre o etiqueta de la partición NTFS que deseamos accesar.

En la salida de este comando, copiamos el valor que indica “Volume UUID”, que es el identificador para esta partición.

Nuevamente en la terminal, tecleamos:

sudo nano -w /etc/fstab

Esto nos permitirá abrir un editor simple de texto para editar el archivo fstab que es utilizado en sistemas UNIX para especificar los sistemas de archivos y sus respectivos puntos de montaje.

Ahora, en ese archivo, hay que añadir una línea de este estilo:

UUID=123-456-789 none ntfs rw

Sólamente hay que reemplazar 123-456-789 por el valor del UUID que copiamos previamente

Presionamos Ctrl-O, Enter y Ctrl-X para salvar y salir del editor respectívamente.

Reiniciamos el sistema, y el soporte de escritura debe haber quedado activado.

Fuente: http://hints.macworld.com

Posted in Uncategorized | Leave a comment

Miedo?

Me da miedo seguir…
Me da miedo no seguir…

Mejor sigo xD

Posted in Varios | Tagged | 5 Comments

Migración de usuarios y passwords de un servidor MySQL

Ciertamente, debe haber muchos posts respecto a este asunto en otros blogs, foros o el foro oficial de MySQL, sin embargo en mi búsqueda no encontré una solución inmediata al problema.

Bien, pues como dice el título era necesario realizar una migración de las bases de datos de un servidor a otro. Bien, ciertamente había hecho volcados (dumps) de bases de datos para reinsertarlas en otro servidor. Hasta ahí todo bien. La pregunta es… ¿Y cómo copio los usuarios? Y es que una vez que lograra copiar todas las bases de datos, tendría que recrear a mano cada uno de los usuarios, lo cual no parece ser una buena solución.

Bueno, la herramienta típicamente utilizada para efectuar estas tareas es mysqldump

Y para copiar una base de datos a un archivo de texto, tenemos esto

mysqldump -u usuariodb -p basededatosacopiar > volcado.sql

Leyendo un poco la documentación, sabemos dos cosas para solucionar el problema con los usuarios:

  • Los privilegios y usuarios/passwords se guardan en la base de datos de nombre mysql.
  • El comando mysqldump provee una opción para dumpear todas las bases de datos llamada –all-databases

Así que me animé a hacer mis pruebas:

mysqldump -u root -p --all-databases > dump.sql

SCP al otro servidor, y ahi dentro…

mysql -u root -p < dump.sql

Termina la copia, salgo, entro en un shell MySQL, todo bien… Ok, reiniciemos el servidor MySQL:

service mysql restart

Stopping MySQL database server: mysqld failed!
Starting MySQL database server: mysqld already running.
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

Wow! ¿Y eso qué onda!?!? En debian, existe un usuario denominado debian-sys-maint, que se encarga de realizar algunas tareas de mantenimiento al iniciar y detener el servidor MySQL, y algunas tareas con los logs del servicio.
Así que buscando un poco, hay un archivo /etc/mysql/debian.cnf similar al .my.cnf que se puede crear en nuestro home para acceder automáticamente a un servidor determinado, sin preguntar usuario, host, o incluso el password.
Comparando ambos archivos, en el servidor anterior y el nuevo, tenían passwords diferentes. El archivo tiene una estructura así:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = passdedebiansysmaint
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user     = debian-sys-maint
password =  passdedebiansysmaint
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Y como dice do not touch, mejor le hacemos caso :P
Así que hay que decidí seguir el procedimiento para cambiar el password de un usuario en MySQL:
update user set password=PASSWORD("passdedebiansysmaint") where User='debian-sys-maint';
Y finalmente hacemos un:
flush privileges;
Y listo! El servidor reinicia normalmente:
service mysql restart

Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..

Espero les sirva =)

Posted in Hosting, Linux | Tagged , , , | Leave a comment

Hardening WordPress – WordPress Security Scan (wp-security-scan)

Una de las cosas que me preocupan, es la seguridad (no me refiero a la seguridad en México…).

Y es que cuando entras al mundillo de los sitios web, empiezas a darte cuenta que todo puede pasar de ser miel sobre hojuelas, a un sitio crackeado por algún script kiddie con ganas de molestar.

Así que investigando un poco, dí con éste plugin

http://wordpress.org/extend/plugins/wp-security-scan/

Que nos permite hacer ciertos cambios en nuestro blog de wordpress para evitar los puntos de ataque más típicos:

  • Bruteforcing de usuarios
  • SQL injection
  • Permisos

Pues bien, este post es para dos cosas, recomendar el plugin, y recomendar la solución a uno de los problemas que ocasiona utilizarlo…

Resulta ser que uno de los “fixes” que aplica, es el de renombrar las tablas con el prefijo por default de wordpress “wp_” por algún otro menos típico, que nos permita evitar ciertos tipos de ataques. Pues bueno, una vez que lo aplicas, te encuentras con un problemita al entrar al admin del sitio:

“No tienes suficientes permisos para acceder a esta página”

Genial… pues el plugin tiene un pequeño defecto, ya que renombra incorrectamente algunas cosas. Para esto, encontré la siguiente solución en

http://www.neoegm.com/es/tech/wordpress/how-to-fix-the-you-do-not-have-sufficient-permissions-to-access-this-page-message-in-wordpress/

que se debe ejecutar directamente como una consulta en nuestra base de datos (donde newprefix_ es el nuevo prefijo de nuestras tablas):


UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE(`meta_key`, 'wp_', 'newprefix_');
UPDATE `newprefix_options` SET `option_name` = 'newprefix_user_roles' WHERE `option_name` = 'wp_user_roles' AND `blog_id` = 0;

Y el problema se debe a que en el contenido de las tablas se mencionan referencias al prefijo de las tablas, donde faltó renombrar.

Así que si alguien quiere utilizar el plugin, y tienen este problema, prueben esta solución:

PD: SIEMPRE hay que hacer copias de seguridad antes de hacer los cambios.

Posted in Uncategorized | Tagged , , | 5 Comments

SCP: sobre archivos incompletos, pausar y resumir (rsync)

Cuando queremos transferir archivos entre computadoras, utilizamos algún tipo de protocolo como puede ser HTTP (al descargar un archivo de la web) o FTP.
Cuando queremos transferir archivos de forma SEGURA, utilizamos el protocolo SCP, que está basado en SSH y permite utilizar criptografía de llave pública para mantener seguras las conexiones.

Uno de los problemas típicos, es cuando la conexión entre las dos computadoras se corta, y las transferencias quedan interrumpidas. La cuestión es, ¿qué tal que era un archivo enorme de 10GB y se quedo a la mitad del camino, o peor aún, estaba por terminar? Pues con scp no hay modo de reanudar la transferencia y se tiene que reiniciar

El problema empeora cuando intentamos hacer una copia de un directorio con múltiples archivos (y posiblemente más directorios) y entonces la conexión se interrumpe.

#Caso 1: copiando un directorio con todo su contenido
scp -r midirectorio usuario@servidor:~/
#Caso 2: copiando sólo los archivos de un directorio dado
scp midirectorio/* usuario@servidor:~/destino/

En ambos casos, si la conexión se interrumpe, e intentamos repetir el comando, la copia comienza desde cero otra vez. Algunos pensaremos… “pues verifico que cosas se copiaron y que cosas no, y entonces repito el comando sólo para lo que no se copió”. Bueno, ¿y si el directorio tenía 10000 fotografías y otros 100 subdirectorios con más contenido? ¿Voy a seleccionar uno por uno? Creo que no es la mejor opción.

Una derivación de este último caso, es cuando tenemos un directorio que deseamos copiar digamos cada semana. Por ejemplo, hacer una copia de seguridad de un sitio web cada semana en otra computadora. Si lo hacemos con scp, cada semana hay que copiar el directorio COMPLETO. ¿Por qué desperdiciar todo ese ancho de banda?

Un caso similar, es cuando hacemos una copia de un archivo muy grande y por algún motivo DEBEMOS interrumpir la copia. Tenemos que empezar nuevamente si usamos scp. Esto no es conveniente.

Bueno, la solución está en el comando rsync que nos permite realizar copias incrementales y reanudar transferencias. No hasta hace mucho lo conocí en persona, a pesar de que ya había escuchado de él y muchas veces me encontré con los problemas mencionados.

El comando que utilizo es el siguiente:

rsync -avzP midirectorio usuario@servidor:~/directoriodestino

A grandes rasgos, cada flag significa los siguiente:

  • -a : Básicamente hará una copia recursiva del directorio preservando lso atributos de cada archivo.
  • -v : El famoso flag “verbose” para ver con mayor detalle lo que está ocurriendo durante la ejecución.
  • -z : Usar compresión. Muy útil para cuando el ancho de banda es escaso y se transmiten archivos de texto.
  • -P : Es la combinación de dos flags –progress y –partial. La primera, es para mostrar el progreso de la transferencia, y la segunda, y más importante, permite reanudar la transferencia desde un archivo “parcial” o incompleto si es que existe. Esto lo hace verificando el tamaño y la fecha de modificación de ambos archivos.

Hagan sus pruebas, y espero les sirva de algo este pequeño artículo. Cualquier error, háganmelo saber.

Posted in Linux | Tagged , | 1 Comment

Gource – Software Version Control Visualization Tool

Y siguiendo con otro video muy relacionado, pero esta vez tiene que ver con los sistemas de control de versiones.

Imagen de previsualización de YouTube

Otra bella pieza de software para el administrador de sistemas que gusta de tomarse 5 minutos de relajación.

Para los que no conozcan del tema, un sistema de control de versiones se utiliza para tener un repositorio en el cual se registren todos los cambios que se van haciendo de un proyecto de desarrollo de software, cuya función principal en mi opinión es que se puedan identificar rápidamente los momentos en que algún cambio ocasionó un error y poder revertirlos.

Entre los sistemas de control de versiones más populares tenemos a CVS, SVN, Mercurial y Git, por mencionar algunos.

Posted in Linux | Tagged , | Leave a comment

Logstalgia – Viendo logs más divertidos

Bueno, comenzando con las cosas simpáticas que hay por aquí y por allá, tenemos este video, sobre una pieza de software sin mayor utilizad que la de mostrar los logs de tu servidor web Apache de una manera bastante diferente.

Imagen de previsualización de YouTube

Una interesante manera de entretenerse para los administradores y webmasters creo yo. Si eres amante de las cosas con “fancy colors” y que llaman la atención en la primer mirada, esta herramienta ha de ser de tu gusto.

Posted in Linux | Tagged , | Leave a comment

¿Y como es que existe este blog?

En el sentido de la infraestructura, claro.

Estos últimos meses, he estado muy metido en el mundo de los VPS, y es que son la opción más rentable para obtener una máquina con acceso total de administrador como si fuera un servidor dedicado, a diferencia del precio.

Para los que no estén enterados: dicho de forma sencilla, un VPS o Virtual Private Server (o máquina virtual, más genéricamente)  es una instancia de un sistema operativo que corre sobre una máquina física (o nodo)  como la que tenemos en nuestros hogares y que se le asignan recursos independientes, como disco, red y memoria de modo que es posible acomodar múltiples de estas instancias en una sola computadora. Para ello se utiliza un software de virtualización que es el encargado de particionar dichos recursos.

Los más populares para la creación de máquinas virtuales de uso casero: VirtualBox, VMware, Parallels.

Los utilizados por empresas que ofrecen el servicio de VPS son:  OpenVZ, Xen PV, Xen HVM, Linux-VServer y en algunos casos VMWare.

Ahora sobre las ventajas:

  • Como decía, el precio. Puedes obtener un pequeño VPS por un costo similar o ligeramente superior al que se paga por hosting compartido.
  • Acceso de administrador.
  • Poder utilizar aplicaciones no necesariamente web que un hosting compartido no te permite.

Y también sus desventajas:

  • Tu servidor está en una computadora compartida con otros VPS, así que el rendimiento puede no ser el esperado, tanto de CPU, como acceso a disco y velocidad de la red.
  • En la compañía inadecuada, el soporte puede ser pésimo, o en ocasiones nulo.
  • Algunas compañías son muy jóvenes y tienden a desaparecer rápidamente sin decir “agua va”…
  • No se tienen los paneles de control que se acostumbran en los paquetes de hosting tradicionales, como Plesk o Cpanel.

Y entonces, este pequeño blog, está hosteado en una de estos pequeños VPS. Por cuanto? Quizá por lo que vale una caja de cigarrillos al mes…

PD: No fumo.

Posted in Hosting, Linux | Tagged , , | 4 Comments