Archive for January, 2008

Respaldo de nuestro blog

Monday, January 7th, 2008

Por muchos motivos es muy recomendable respaldar nuestros archivos, especialmente si contamos con un sitio web, ya que cualquier problema que tengamos con el sistema de archivos, tendremos una copia de respaldo y podremos recuperar el servicio.

Otra ventaja de hacer respaldos es que si contamos con un blog propio, por ejemplo con Wordpress, estos contienen varias vulnerabilidades de seguridad muy conocidas que pueden ser aprovechados por crackers.

Si tenemos el blog sobre una plataforma GNU/Linux, podemos utilizar las herramientas que nos provee para hacer los respaldos y automatizarlos. Utilizaremos

  • Pdumpfs, para respaldar
  • Crontab, para automatizar

Crontab, viene ya en todas las plataformas GNU/Linux y Unix, por lo que sólo deberemos instalar pdumpfs. Antes que nada la explicación tiene en cuenta cualquier distribución basada en Debian, pero esto no implica que no se pueda ejecutar en otras, sólo hay que hacer cambios menores. Primero verificaremos que si lo tenemos instalado


# aptitude search pdumpfs
p   pdumpfs                         - a daily backup system similar to Plan9’s d
p   pdumpfs-rsync                   - pdumpfs extension using rsync

El comando busca todos los paquetes que concuerden con la cadena que le pasamos como parámetro, en este caso pdumpfs. Los paquete que concuerden se muestran en una lista, como se puede ver cada línea comienza con la letra p, que significa que el paquete no está en el sistema; si lo hubiésemos tenido instalado tendría el estado i, que se encuentra instalado.

Como el paquete lo tenemos en el estado p, vamos a instalarlo


#aptitude install pdumpfs

Pdumpfs es un programa muy sencillo, pero potente, al igual que el lenguaje en que fue desarrollado Ruby, escrito por Satoru Takabayashi. La sintaxis sería


pdumps [directorio-fuente] [directorio-destino]

Dentro del directorio destino se crea un directorio llamado YYYY/MM/DD, que indica el año, el mes y el día respectivamente en que ejecutamos el comando.

Por ejemplo para realizar el respaldo cree una carpeta backup en un disco que monté, para respaldos que se encuentra en /mnt/sdb1


#pdumpfs /var/www/blog /mnt/sdb1/backup

Ahora debemos automatizar el proceso, para eso bastará con editar nuestra tabla cron, que se encuentra /etc/crontab. Voy a indicar en la tabla que este proceso se ejecute todos los días a las 5:00 AM. Para esto hacemos


#echo "0 5 * * * root pdumpfs /var/www/blog /mnt/sdb1/backup >> /etc/crontab

Para mayor información sobre la sintaxis de la tabla cron consultar aquí.

Resultó muy sencillo, ahora vamos a hacer al proceso un poco más robusto. Es importante que mantegamos log sobre el proceso de respaldo y también log de los errores que podrían surgir. Esto se puede hacer agregando un par de parámetros más al ejecutar pdumpfs. Tendríamos que ejecutar este comando en vez del anterior o editar la tabla cron


#echo "0 5 * * * root pdumpfs /var/www/blog /mnt/sdb1/backup >/mnt/sdb1/backup/log/pdumpfs.log 2>/mnt/sdb1/backup/log/error.log" >> /etc/crontab

Aquí cree una nueva carpeta log dentro de la carpeta backup y indico que el archivo de log se llame pdumpfs.log. Luego indico que la salida de error estándar (indicada por el 2) se redirija a /mnt/sdb1/backup/log/error.log. Por lo tanto si hay error se escribirá en el archivo error.log.

Listo con esto tenemos un sistema de respaldo automatizado, algo que vale la pena comentar es que todos los archivos son copiados la primera vez que respaldamos, pero luego pdumpfs sólo copia los archivos nuevos o actualizados y los que no fueron cambiados los mantiene como links en duro de los archivos del respaldo anterior, esto produce una gran eficiencia en el uso de la memoria.

Crear una presentacion S5

Monday, January 7th, 2008

En un anterior post había comentado sobre las presentaciones S5, ahora voy a explicar como hacer una. Para que nos sirva de ayuda podemos bajar una plantilla básica desde el blog del autor. Al descomprimirlo tenemos un archivo s5-blank.html y una carpeta ui, el archivo tiene la estructura básica de S5 y dentro de la carpeta se encuentra las CSS y el script javaScript, el cual se encarga de mostrar las diapositivas. Es importante mantener todo dentro del directorio que lo descomprimamos, ya que si cambiamos de lugar tanto s5-blank.html o ui se invalidarán las referencias. Si hacemos un cambio, habrá que cambiar la sección de link dentro del encabezado.

La estructura básica está formada por así decirlo por el encabezado y el cuerpo. El encabezado tiene el siguiente aspecto

[html]
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



….

….


[/html]

Y el cuerpo tiene este aspecto:
[html]



[/html]

El encabezado se encuentra entre las etiquetas <head></head> y dentro de él tenemos:

  1. Título de la presentación
  2. Metadatos
  3. Parámetros de configuración
  4. Links a las CSS
  5. Link al script JavaScripts

El título de la presentación debemos colocarlo entre las etiquetas <title></title>, luego en las etiquetas de metadatos <meta … />, van datos relacionados con la presentación, por ejemplo el autor, la fecha, la compañia, etc. Por ejemplo cambiemos el título de la presentación:

[html][/html]
Y cambiemos el autor y compañia
[html]


[/html]

Eso es suficiente modificar en el encabezado, vayamos al cuerpo. El cuerpo se podría dividir en dos partes:

  1. Diseño
  2. Presentación

El diseño se encuentra entre las etiquetas <div class=”layout”></div>, en él encontramos unas etiquetas que no hay que editar, sólo tenemos que cambiar dos etiquetas, las cuales son el título de la presentación y la fecha de la misma. Estas se mostrarán en la parte inferior izquierda de la presentación (teniendo en cuenta el estilo con que viene la presentación)

[html]

[/html]

La presentación se encuentra entre <div class=”presentation”></div>, dentro de él encontramos varías etiquetas <div class=”slide></div>, éstas son las diapositivas. Coloquemos una diapositiva a la presentación.

[html]

¡Esto es muy fácil!

No es necesario conocer mucho de HTML

Ni tampoco de CSS

Y menos de javaScript

[/html]

Con esto sería suficiente para tener una una diapositiva. Si ahora abren la diapositiva con su browser, notarán que contiene signos extraños en los lugares donde hay acentos, esto se soluciona fácilmente. Deben colocar la siguiente línea en el encabezado al principio de la sección de metadatos

[html]

[/html]

Con esto sabe el browser con cuál codificación mostrar los caracteres. Aquí hay una muestra de cómo se vería

Imagen que muestra una presentación S5

Al final de las etiquetas de presentación encontramos

[html]

[any material that should appear in print but not on the slide]

[/html]

El contenido que agreguemos dentro de éstas etiquetas, no se mostrará en una diapositiva, pero sí saldrá cuando imprimamos la presentación. Por ejemplo aquí se podría colocar información relacionada con la muestra de diapositivas.

Para finalizar, vamos agregar una diapositiva con efecto de muestra incremental, esto es que cada vez que hagamos click en la pantalla aparecerá un nuevo elemento. La diapositiva la agregaremos a continuación de la anterior, siempre dentro de las etiquetas <div class=”presentation”></div>; tendrá una lista de elementos, los cuales aparecerán con cada click

[html]

Efecto de muestra incremental

  • Esto
  • es
  • muy
  • fácil

[/html]

Bueno, se puede hacer mucha cosas más, ya que es una página HTML, por ejemplo, agregar imágenes, link, efectos, animaciones, etc.

Presentación en S5

Sunday, January 6th, 2008

S5 es una forma de realizar presentaciones de diapositivas (slide) basandose en 3 tecnologías:

  • XHTML
  • CSS
  • JavaScript

Gracias a estas sólo necesitamos de un browser para poder exponer la presentación, aumentando enormemente la portabilidad, pudiendo lograr que la presentación se pueda reproducir en casi cualquier parte.

JavaScript es el encargado de efectuar el efecto de pasar las diapositivas. No va a ser de sorprenderse que dentro de poco salgan script que hagan incontable efectos en nuestras presentaciones, dejando atrás a cualquier efecto que nos pueda brindar un paquete ofimático de presentaciones.

Algo de mucha utilidad es que al trabajar con CSS, se pueden diseñar distintos CSS según el medio para tener una visualización acorde, por ejemplo una CSS diseñada para un medio como la impresora facilitaría su visualización porque no se imprime como se muestra en la pantalla del monitor, o sea en forma de diapositivas; esto abre un gran abanico de posibilidades, por citar algunas es posible portar nuestras presentaciones a medios como dispositivos táctiles para braille o impresoras braille.

Una contra que se le puede encontrar (pero no por mucho, supongo) es que para poder elaborar las presentaciones debemos contar con conocimientos en HTML, para el contenido y en CSS para poder diseñar el estilo de nuestra presentación. Es sólo cuestión de tiempo para que salgan interfaces que faciliten el proceso de desarrollo, además ya se encuentrar varios temas para aplicar estilos a las presentaciones.

En el blog del autor de S5 hay basta documentación del mismo.

Ocultando PHP

Friday, January 4th, 2008

En un anterior post expliqué cómo ocultar los detalles de versión que suministraba Apache en las cabeceras de solicitud HTTP. Ahora si tenemos PHP instalado, hay información de éste dentro de la cabecera, que puede resultar de ayuda a un cracker.

Una cabecera sin la firma del servidor web pero con información de PHP luce así


HTTP/1.0 200 OK
Date: Fri, 04 Jan 2008 14:25:36 GMT
Server: Apache
X-Powered-By: PHP/5.2.1
X-Pingback: http://localhost
Connection: close
Content-Type: text/html; charset=UTF-8

Para deshabilitar esa información hay que ir a /etc/php5/apache2 y editamos el archivo php.ini


#nano php.ini

Ahora debemos cambiar el valor de la opción expose_php de On a Off


; Misc
;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = Off

Guardamos la nueva configuración y reiniciamos el servidor


#etc/init.d/apache2 restart

Y listo, ahora podríamos hacer una prueba para ver si no es suministrada la información de PHP.


#telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HTTP/1.0 200 OK
Date: Fri, 04 Jan 2008 14:29:24 GMT
Server: Apache
X-Pingback: http://localhost
Connection: close
Content-Type: text/html; charset=UTF-8

A desaparecido el campo X-Powered-By, el cuál informaba sobre PHP.