SigT versión 3.1415

Autor: Armonth | El viernes 06 de abril del 2012 @ 02:55.

Importante: actualizad el feed: http://sigt.net/feeds/atom.xml.

Buenas a todos, ¡cuánto tiempo! ¿Todo bien?. Por fin puedo anunciar el rediseño de este blog. Aunque realmente está activo desde el viernes pasado, os presento SigT 3.1415 (en adelante SigT 3π). Lo que viene a ser el tercer rediseño del blog y una reestructuración completa del mismo así como revisión de los contenidos.

En SigT tuvimos un diseño 1.0 bastante apagado y provisional. Unos meses después publicaba una entrada SigT 2.0. Después de muchos años ya tocaba actualizar un poco. Aunque obviamente "el buho" se queda. Veamos el por qué y cómo ha quedado. Ojo: se puede hacer algo largo de leer, en mi estilo vamos >:P.

- ¿Eso significa que vuelves a bloggear? ¡Bien, fiesta!

Er... sí pero no. Eso significa que pongo el blog al día para poder publicar cosas. Pero no necesariamente que vaya a escribir "una al día" como hacía antes. Ni mucho menos. Es más, a final de mes sale el TERA y ahí que estaré yo y mi clan a viciar (y a trollear en PVP).

Simplemente pongo el blog en orden para publicar si me da el venazo. Además escribiré cosas sobre el TERA, haré más recomendaciones de Anime y en general más variedad.

En general escribiré cuando tenga algo que escribir y si no... pues no. Si un mes da para 15 entradas pues cojonudo y si no escribo nada en 2 meses pues tampoco pasa nada. El tema es que el blog esté en condiciones para poder.

Un poco de historia: el "crakeo" de SigT

Puede que a muchos le sorprendan, pero SigT seguía funcionando con una versión altamente parcheada de WordPress 2.0.11. Tener poco tiempo y el haber visto como WordPress evolucionaba en cada rama de una forma que, particularmente a mí, no me gustaba nada no ayudaba a actualizar.

Tuve "un mini-blog" dentro de éste para un MMORPG que finalmente no me cuajo: AION. Así que rescaté las cuatro entradas (literalmente) que eran interesantes y las incorporé a SigT en una época que había decidido dejar SigT.

Otro proyecto mío, un blog con mis apuntes sobre "culturismo", que creé tiempo después estaba bastante más actualizado de software: usaba la última versión de WordPress y Really Static un plugin que me permitía:

  1. Tener blog de forma estática. Como un WP-Cache pero mejor: nada a cargar de PHP/MySQL.
  2. Tener el "back-end"1 en otro subdominio.
  3. Proteger dicho subdominio y hacer imposible el acceso a WordPress.

Si exceptuamos la parte de WordPress que incorpora los comentarios al blog, el resto del CMS estaba "blindado" a que aprovechasen alguna vulnerabilidad. Sin embargo accedieron y ambos blogs fueron crackeados. Esto pasó a mediados de noviembre del 2011.

Nada mal: casi 6 años sin problemas. Pero la dicha no dura eternamente.

Por un lado tenía un blog (SigT) con software desfasado y una necesidad urgente de actualizarse "por si acaso". Por el otro tenía otro un CMS actualizado a la última y prácticamente blindado. Era obvio que la culpa había sido mía por tenerlo desactualizado, ¿no?.

Pues no. Para mí sorpresa, el culpable fue el blog actualizado al que usaron una serie de bugs y posteriormente consiguieron entrar.

Un viejo conocido: Pharma Hack

Entraron en el blog actualizado. Introdujeron un tipo de hack que no es desconocido para nada en la red: Pharma Hack. Y de ahí, una vez puedes leer/escribir datos en varios sitios, pudieron acceder a SigT y repetir la jugada.

En resumidas cuentas, una vez se te ha colado:

  1. Esconde un fichero PHP (en mi caso dentro de /wp-content/uploads/) con un nombre aleatorio y sin extensión pero que contiene, codificado con base64 una serie de enlaces a sitios de SPAM.

  2. Este código también se mete en las entrañas de la base de datos MySQL por lo que eliminar los ficheros no soluciona el problema. Hay que exportar las entradas a una BBDD limpia o hacer una búsqueda exhaustiva a base de sentencias SQL.

  3. Modifica el htaccess para que, si el HTTP_USER_AGENT es de un buscador (GoogleBot, Yahoo Slurp, etcétera), introduzca el contenido codificado con base64 que te cambia el título de las páginas a temas relacionados a la compra / venta de medicamentos. Y obviamente con su buena ración de enlaces SPAM relacionados a esta actividad.

Podéis leer más sobre el Pharma Hack en "How to Diagnose and Remove the WordPress Pharma Hack".

The spanish hacker: ¿me tendrán manía?.

La cosa siguió durante unos días en que jugaba al gato y al ratón: ahora limpio, ahora me ensucian. Hice una copia de seguridad de todo a mi equipo local y borré todo el contenido de SigT / VF. Y tuve paz... durante 48 horas.

El "pharma hack" no podía ser, se regenera usando los scripts y la propia base de datos pero ya no había ni WordPress ni base de datos. Al final, en uno de los logs, encontré para mí sorpresa accesos a un subdominio creado aposta y ocultado en la raíz de mi $HOME.

¿Os habéis fijado en cómo me refiero a "alguien" y no a "algo"? Normalmente existen bots por la red que buscan sitios vulnerables (o intentan aprovechar directamente vulnerabilidades conocidas) de forma automática.

Si tienes un sitio web tienes garantizado al 100% que, en algun momento, habrá intentado entrar uno de estos. Aunque sea de forma totalmente estúpida como por ejemplo usando una URL para intentar aprovechar un fallo en phpBB cuando tu no usas ni phpBB ni nada parecido.

Ya digo: fue alguien. Este elimino la prohibición vía Apache de entrar al Wordpress blindado y el pharma hack simplemente vino después al encontrarse el agujero.

Con ayuda externa, lo intervenimos. Fue hasta curioso ver en directo como introducía (y mal) comandos SQL a mano como por ejemplo escribir en una query "FORM" en lugar de "FROM" y a los pocos segundos correguirla.

La historia termina en que se ha hecho denuncia del caso y se está investigando. Lo último que se me dijo, a finales de enero, es que la IP corresponde2 a un español en un piso de valencia capital. O es "un script-kiddie" aburrido o alguien no me traga. Yo me lo tomo con humor :-P. Al menos de momento.

¡Lección aprendida!

Pese a lo que pasó, el blog de culturismo ya lo tenía "abandonado" (lo actualizaba casi a diario respecto al CMS pero no escribía) e incluso ya por entonces pensaba en si "integrarlo" a SigT como ya hice con el mini-blog del AION. Cosa que de momento no haré: lo mantendré estático.

Vale, vayamos sumando "hechos":

  • "No me van" los CMS multi-blogs como WordPress MU. Simplemente algo personal.
  • Que escribo menos a menudo de lo que se actualiza WordPress.
  • Que prefiero "un blog estático".
  • Que soy "hombre" de un sólo blog.
  • Y visto lo visto, que no consiguieran3 hackearme un blog desactualizado en 6 años y lo consiguieran a la 4º o 5º vez en uno actualizado.

Queda claras dos cosas:

  1. Que hasta aquí hemos llegado con WordPress.
  2. Que llevar más de un blog no me va, usaré SigT para cualquier tema, aunque sea la cría del centollo.

Por eso, desde noviembre5 y de forma provisional hasta el viernes pasado el sitio no usaba ningún CMS. Ni WordPress + ReallyStatic, ni otro CMS ni gaitas. Era un volcado a (x)HTML usando wget ¡y arreando!.

Vale pero ¿y ahora?

En vez de usar un CMS dinámico (WordPress) con un plugin (Really Static) para ofrecer contenido estático y un "apaño" para que funcionen los comentarios4 decidí ir un paso más allá: usar un software que me generase ya de serie todo estático.

En el pasado he tenido muy buenas experiencias con este método para generar el Planet Webdev así que era cuestión de tiempo repetir la experiencia.

La entrada al respecto: Pelican: Generador de contenidos estáticos

Vaya chapa, ¿no nos ibas a contar sobre SigT 3π

¡Ah, cierto! Casi se me olvida. Me estaré volviendo senil ;-).

Lavado de cara

HTML5+CSS (con hack para que IE8 y anteriores reconozcan las nuevas etiquetas) aunque no 100% implementado. Por ejemplo uso <div id="menu"> en lugar de <menu> porque un par de navegadores no lo tragan bien.

"Menos blanco". Está un poco más compactado todo para que no haya tanto "fondo blanco" alrededor del contenido como había en el diseño anterior. El fondo/degradado verdoso lo refuerza.

Diseño "pensado" para 1280 de ancho. El diseño anterior se veía bien con un navegador que, de ancho, tuviera un máximo de 640px e iba escalando hasta verse perfecto a 1024px. Hoy en día menos del 2% de las visitas usan 640px en PC por lo que el contenido se empieza a ver bien a 800px y escala hasta los 1280px. Al igual que pasaba con el diseño anterior superada esa cantidad la página simplemente se auto-centra.

Hay "una excepción" a lo que dije anteriormente: los telefonos móviles con Android / Iphone. Buenas y malas noticias: las malas es que no tengo (ni me interesa de momento) un trasto de estos así que no puedo ir probando para hacer una plantilla.

La buena noticia es que, pese a no tener un diseño espécifico para telefonos móviles se ve razonablemente bien. Mejor que en Internet Explorer aunque eso no es muy difícil (lo de RSS feed como véis se movió después de esa imagen, así que ya no se verá mal):

SigT 3 en Iphone

Imagen cortesía de Inkilino.

Contenido estático, comentarios dinámicos con DISQUS

El sitio "se regenera" sólo. Pongo un fichero por entrada con título, fecha y contenido. Lanzo el script y el sitio se regenera entero (mete todos los HTML a SigT: las 1040 entradas, las páginas, los archivos, etcétera).

El proceso es muy rápido ya que en generar 1040 entradas y en total unos 1200 ficheros html tarda menos de 20 segundos. Eso si es la primera vez que lo lanzo durante el día, si hay cosas en memoria tarda todavía menos.

Los comentarios los he mudado a DISQUS así mantengo la funcionalidad de los comentarios en un sitio estático y, al mismo tiempo, siempre puedo echarme atrás. Aparte de sus ventajas (permite usar Akismet, comentarios anidados, ver las "reacciones" en otros sitios como twitter, etcétera).

Por si fuera poco la carga de Javascript de DISQUS es asincrona por lo que nunca ralentiza el sitio y, en caso de que estuviera offline y no pudiera mostrar los comentarios, no "estropea" nada.

Por último algo que me gusta es que cuando edito un comentario aparece un aviso de ello. Aunque muchos comentarios serán "moderados" en un futuro (para corregir faltas de ortografía) no deja de ser una forma de añadir transparencia.

¿1040 entradas? ¿No eran más?

Limpieza de contenidos. He exportado al nuevo sistema todas las entradas pero las he ido revisando una por una.

Principalmente enlaces. He ido arreglando los enlaces en la medida que me ha sido posible. Y si no ha sido posible he añadido notas. En muchas entradas se puede ver cosas como:

blablabla, blabla tocho, ladrillo, y en el blog de XX (blog desaparecido) etc etc

O cuando menciono a Boja (de La Maté por un Yogur) puede que salga el nombre del blog tachado porque antes había un enlace y ahora no (lo borró hace ya años). Por no hablar del infierno de la gente que migra la estructura de enlaces pero no hace redirecciones 301. En los periodicos (salvo 20 Minutos y poco más) ya es de traca.

Me lo pensaré dos y tres veces antes de volver a enlazarles: lo haces para comentar una noticia / darle contexto y en unos meses el enlace está caducado y te dejan con una noticia coja.

Volviendo al tema de las entradas decir que llegué a tener 2084 entradas, ahora hay la mitad. He "desechado" lo siguiente:

  • Entradas que recomiendan X (sitio / artículo / servicio / etcétera) y este ya no existe sin ningún valor añadido por mi parte. Para tener una entrada que no apunta a nada ni ofrece nada mejor quitarla.

  • SigLinks: los "SigLinks" eran entradas cada 15 días (unas 20 en total) que ofrecían enlaces interesantes. Como muchos de esos enlaces ya no existen se quitan. En un futuro se aprovechará la sección Recursos (actualmente "tachada" en la cabecera) para ello.

  • "Búsquedas raras de...": entradas que comentaban búsquedas raras que llegaban a SigT. Una por mes. Estoy pendiente de ver qué hago, si las reunifico en un único post o qué.

Y en general todas las entradas que apuntan a otros recursos y han perdido validez.

Importante: muchas de esas entradas volverán. Simplemente requieren una revisión profunda por mi parte. Muchas entradas actualmente apuntan a X sitio pero vía el Web Archive. Es decir apuntan a la versión cacheada de +/- la época en que hice el enlace ya que el sitio está totalmente muerto.

Otras muchas tienen partes o incluso todo el contenido re-escrito. Y otras tantas una vez re-escritas se republicaran "como si fueran nuevas".

Además que otras se han "unificado". Por ejemplo muchas de las entradas se han incorporado al Changelog una página dedicada a poner en orden cronológico inverso los cambios que voy haciendo al sitio y otros asuntos personales propios. El usar una entrada propia para esos cambios es sólo si quiero generar discusión o comentar cómo hice esos cambios.

Básicamente estoy intentando limpiar el sitio de enlaces muertos pero no es fácil. En fin, se hace lo que se puede pero la gente no tiene amor por su propio trabajo y esfuerzo. Ya lo he dicho muchas veces pero el "cierro y borro" no es de mi preferencia.

Por último en varias entradas se puede leer al principio la palabra clave "Miniapunte:" eso significa que esa entrada es tan corta que se puede leer sin tener que darle a "Leer más" en el índice de SigT.

Y a todo ello sí. Eso signica que las entradas en la página principal sólo muestran extractos. Reduce el scroll y permite añadir 20 entradas por página (ocupando apenas 30KB por página --menos al enviarlas comprimidas--) en lugar de sólo 10 entradas y una barra de scroll larguísima.

¿Y los comentarios? ¿¡Se perdieron!? ¡OMFG!

¡Por supuesto que no!. No se ha perdido nada. Aunque es cierto que tengo pendiente migrar algunos "hilos" de Disqus (apuntan a las URLs viejas) para que aparezcan los comentarios, eso no supone ningún problema y es sólo dedicarle un par de ratos más.

Hay 12.865 comentarios ahora mismo (no cuento los trackbacks: al trackback lo mataron) y faltan sólo 30 comentarios. Esos comentarios los borré yo mismo ya que eran cosas que se me colaron en moderación tipo comentarios repetidos.

Venga que ya queda poco: Cambio de permalinks

Que un poco más arriba me "cagase en todo" por la peña que cambia las URLs de las entradas (las URI guays no cambian) y yo al mismo tiempo haya hecho lo mismo no deja de ser irónico.

Sin embargo, por desgracia no queda otra:

  1. Se pasa a usar un sistema de categorías y las URLs son del palo /categoria/slug.html.
  2. Se pasa de XHTML 1.1 Strict a HTML5 así que obviamente no voy a nombrar las urls con ".xhtml".
  3. Cambio de dominio: de http://sigt.net a http://www.sigt.net.

El tercer punto es importante. El usar contenido estático me abre una puerta muy interesante en un futuro, por si decido hacerlo: Amazon C3. Contenido estático y Amazon C3 es simplemente un "Win-Win" si se quiere velocidad y bajo coste. Si no lo hago es porque, a día de hoy, Dreamhost me sale gratis6.

Pero para poder usar Amazon C3 necesitas fijar en las DNS del dominio un CNAME al "bucket" donde está alojado tu sitio. El problema es que las DNS no permiten usar CNAMES en dominios raíz (naked vamos el sigt.net) y tiene que ser a un subdominio. Y eso es precisamente las www en un dominio: un subdominio.

Así que, pese a que me fastidie ya que voy a tener que ponerme en contacto con todos los bloggers que alguna vez me enlazaron para ver si no les es molestia actualizar los enlaces, el dominio y los permalinks cambian.

¿Por qué no usar una redirección 301? La estoy usando. Pero eso soluciona sólo parte del problema: me he abierto una puerta (Amazon) por si quiero usarla algún día. Eso supondría no tener acceso al htaccess. Además que me gusta que los sitios no hagan redirecciones si se puede evitar.

A todo ello: contenido estático que no es HTML

Se ha movido todo lo que no es HTML a http://static.sigt.net. Y también se añadió una medida anti-hotlinking que afecta a todos los sitios menos a este blog, el Planet Webdev y Google Reader. En breve toca entrada sobre ello para ver si se puede pulir.

Categorías y el FAT ARCHIVO

El contenido lo paso a clasificar por "sacos" (er... ejem... categorías, si eso). Lo menciono así porque no son categorías para ser espécificas. Son "sacos" donde meter temas a grandes rasgos. El día que quiera "granulidad" usaré las etiquetas del CMS (de momento las uso para generar feeds espécificos para el Planet Webdev).

Las categorías desarrollo web, humor y videojuegos son auto-explicativas. La categoría anime también pero incluye temas medio-relacionados como los de fansubbing de Kazka. La categoría general es "EL SACO" que tiene temas de política, ciberderechos y todo lo que no vaya en las otras.

La categoría personal es para temas personales (¡Duh!) y noticias sobre SigT. Por último software es la categoría "polémica": en ella va de todo lo que tenga que ver con ordenadores como las historias de SAT, software (libre o no), hardware, mixtos, los tocho-posts de Kujaku sobre mainframes, etcétera.

Podría haberlo llamado "Informática" ya que es mucho más general. Pero cada uno entiende lo que quiere por "Informática". Además ya dije que quiero "sacos" y no granulidad: paso de hacer una categoría "software", otra "hardware", etcétera.

A veces las entradas no irán en la categoría más apropiada, por ejemplo una entrada de humor sobre GNU/Linux normalmente irá en Humor pero puede ir tanto en Humor como en GNU/Linux dependiendo de la misma.

Por último tengo el FAT ARCHIVO una página que tiene una lista ordenada de todas las entradas* para un acceso rápido (y con la función de buscar del navegador se puede buscar palabras claves en los títulos).

- Pero Google no lee más de 100 enlaces por lo que esa página no la leerá entera y...

¡Me la suda el posicionamiento!. Esa página es para lo que es: para el lector y para encontrar yo entradas rápidamente cuando necesite enlazar algo.

Por último un agradecimiento

Quisiera agradecer especialmente a Joe Di Castro "por soportarme" y echarme una mano. Sin el llevar a buen puerto SigT 3π hubiera sido mucho más difícil.

Vale pesao, ¿algo más?

No. ¿Todavía queda alguien en la sala?.


  1. Back-end: la parte que no interactua con el usuario, en este caso el CMS/WordPress. 

  2. Mejor dicho: esa IP le correspondía cuando se le pilló en pleno acto de acceso ilegitimo a mi sitio. 

  3. Que será por intentos. Cada semana había un par de intentos "inocentes" y una vez cada mes o cada dos un intento en serio. 

  4. El autor de Really Static recomienda ir 100% estático y usar para los comentarios software de terceros como por ejemplo Disqus. 

  5. Una vez limpiado todo, contraseñas cambiadas, bases de datos recreadas desde cero. 

  6. Que, por cierto, he actualizado el post de Dreamhost con un "disclaimer". 

Comentarios