martes, 11 de diciembre de 2012

Comandos en linux para conocer el espacio usado y disponible en el disco duro

Para los que habitualmente trabajamos con servidores linux nos es muy interesante el conocer cuanto espacio tenemos usado y cuanto nos queda disponible en nuestros discos duros.

Paso a mencionar algunos comandos para realizar estás tareas:

  • df: Muestra el espacio usado del disco duro.

  • du -u fichero1, fichero2...: Muestra el tamaño total de los ficheros especificados.

  • du -s directorio: Muestra el espacio que ocupa el directorio especificado.

Como se pude apreciar en las imágenes 2 y 3 podemos añadir el parámetro -h para que nos muestre el espacio en una unidad de medida conocida. Saludos curiosos.

Cómo conocer la fecha de modificación del registro de Windows con RegistryDate

Es interesante notar que Windows no incluye ningún tipo de herramienta para ver la fecha de modificación de una clave del registro.

Pero eso ya no es un problema, porque los compañeros de hispasec han creado una herramienta sencilla para mostrar este dato, denominada RegistryDate.

Esta herramienta no solo muestra la fecha de modificación de una clave sino que también permite buscar ramas modificadas entre dos fechas; lo cual resulta sumamente útil para análisis forenses.

Funciona desde línea de comando y existen dos versiones, una para sistemas de 64 bits y otra común para todos los sistemas. La diferencia entre ambas es que la versión para 64 bits muestra ramas específicas de sistemas de 64 bits que no muestra la otra versión.

Con esta herramienta es fácil averiguar cuando se ha incluido una nueva clave al registro como por ejemplo en la rama:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

que es muy usada por numerosos malwares.

La noticia completa y las características en detalle del programa lo tenéis aquí.

Para poder descargarlo podéis hacerlo desde el siguiente enlace.

Saludos curiosos.

miércoles, 5 de diciembre de 2012

Libro Hacking Ético by Carlos Tori

Para todos los que estéis interesados entrar en el mundo de hacking y la seguridad informática, Carlos Tori nos brinda esta obra, presentando los conceptos básicos de hacking ético de forma clara y eficiente; así como ayudarnos a profundizar en conocimientos.

La obra es un excelente punto de partida para adentraros en los entresijos de la seguridad informática.
  • Hacking Ético es un libro de seguridad informática que cuenta con 328 páginas redactados con un lenguaje simple y ordenado.
  • Actualmente se encuentra agotado en Argentina, por ese motivo y otros, el autor decidió liberarlo para que los lectores pudieran apreciar la obra de modo libre sin pagar y a su vez, pudiéndola distribuir sin restricciones. 
  • Su ISBN es 978-987-05-4364-0 y todos sus derechos están registrados, como también su material.
Tenéis el link de descarga en el siguiente enlace. Saludos curiosos.

lunes, 3 de diciembre de 2012

Ataque "Man in The Middle" con Cain II/II

Tras explicar la teórica sobre cómo hacer un ataque MitM vamos a explicar cada uno de los pasos a realizar para hacerlo mediante el uso del programa Caín que podéis descargar de su web oficial.
Caín es un programa para auditorías de seguridad bajo windows orientado a las redes TCP/IP. Es muy usado en el mundo del pentesting por la gran cantidad de utilidades que tiene.
Empecemos con el "how to":

  • Una vez que esté instalado el programa, accedemos a él y nos encontraremos la siguiente pantalla:


Este es el menú principal de Caín.
  • Seleccionamos los botones del sniffer de red en modo promiscuo y del sniffer para el protocolo ARP. Recordemos que nuestro ataque funcionará si conseguimos hacer un envenenamiento ARP correcto, por lo que tendremos que capturar los paquetes que viajen en la red con este protocolo:

Con esto empezará a capturar paquetes.
  • Ahora debemos de entrar en la pestaña "Sniffer" y dentro de ella seleccionar la pestaña "Hosts". Aquí es donde guardará la caché de ARP que vaya capturando en la red. Pero para forzar a todos los equipos a que nos den su MAC podemos lanzar un scan pulsando sobre el botón derecho del ratón y seleccionando la opción de "Scan MAC Addresses":
  • Hacemos lanzamos el scan para todas las tarjetas de la red.
  • Una vez terminado nos mostrará la dirección ip correspondiente a cada MAC.
  • Cuando tenemos las ips y las MACs procederemos a hacer el ataque. Haremos pensar a los equipos de la red que somos el router para que estos nos envíen toda la información, la cual luego reenviaremos al router. Para realizar esto debemos de colocarnos en la pestaña APR y pulsar sobre el botón "+":
  • En la columna de la izquierda seleccionamos la ip que vamos a suplantar (192.168.1.1):

  • En la columna de la derecha seleccionamos el resto de las ips:

  • Ahora veremos el proceso de envenenamiento. Cuando la tabla de abajo nos indique "Full-routing" es que la ip en cuestión ha sido suplantada.

  • Ahora solo tenemos que acceder a la pestaña "Passwords" para ver qué usuarios y contraseñas ha capturado sobre distintos protocolos:

Tras este procedimiento estaremos capturando todo el tráfico que se genere en la red y sacando provecho de ello.

Como protegerse o detectar este tipo de ataques:

Para protegernos de este tipo de ataques tenemos varias técnicas y herramientas que podemos usar.
Para esto podéis ver el documento de David Galisteo y Raúl Moya sobre MitM que habla en detalle de qué hacer frente a este ataque.
Saludos curiosos.

viernes, 30 de noviembre de 2012

Ataque "Man in The Middle" con Cain I/II

Muchas veces hemos oído hablar sobre el ataque denominado "Man in The Middle" (MitM). Pero, ¿qué es este ataque? ¿Cómo se lleva a cabo? ¿Y podemos protegernos de él? Veamos.

¿Qué es el ataque Man in The Middle?

En criptografía, un MitM es un ataque en el que el enemigo adquiere la capacidad de leer, insertar y modificar a voluntad, los mensajes entre dos partes sin que ninguna de ellas conozca que el enlace entre ellos ha sido violado. El atacante debe ser capaz de observar e interceptar mensajes ante las dos víctimas.

Pongamos una ilustración práctica para entenderlo: Ana quiere enviar un mensaje a Pablo pero Javier pretende interceptarlo.

Javier hace creer a Ana que es Pablo para que ella le envíe el mensaje a él y no a Pablo. Luego Javier hace creer a Pablo que es Ana y le envía el mensaje de ella. Así se ha colocado en medio de los dos y ha interceptado el mensaje.


Traducido a un sentido criptográfico de clave pública lo primero que debería hacer Ana es pedirle la clave pública a Pablo. Pero si Javier es capaz de interceptar esa clave, podría enviar a Ana su propia clave pública haciéndole creer a ella que es la de Pablo. Ana cifraría el mensaje con la clave pública de Javier y la enviaría a Pablo. Javier interceptaría el mensaje de nuevo y lo descifraría con su clave privada (obteniendo así el mensaje en claro). Luego lo cifraría con la clave pública de Pablo y se lo enviaría a este. Pablo lo recibiría creyendo que es de Ana y así ninguno de los dos notó que Javier había interceptado la conversación.

Protocolo ARP

En las redes actuales que hacen uso de los niveles del protocolo TCP/IP, como Internet y la mayoría de las redes locales, el encargado de establecer la correspondencia entre las direcciones del nivel de enlace y del nivel de red es el protocolo ARP.Este es un protocolo sencillo que permite averiguar la dirección hardware de nivel de enlace, conocida como dirección MAC, partiendo de una dirección IP de nivel de red.

El funcionamiento del protocolo es sencillo: se envía una petición ARP a la dirección de broadcast de la red preguntando que MAC tiene una determinada dirección IP. Al llegar a la dirección de broadcast todos los nodos de la red recibirán el paquete pero si no tienen dicha IP lo descartarán. Solo responderá aquel nodo que sí tiene dicha IP. Cuando el nodo emisor recibe el paquete lo almacena en la caché de ARP.

Relación entre el MitM y el protocolo ARP (ARP Spoofing)

Usando la técnica de MitM podemos cambiar cambiar la caché de ARP de los nodos a los que vamos a atacar para que la MAC de estos sea la MAC del atacante. Cada vez que alguno de los nodos quiera enviar información al otro, resolverá la dirección MAC del mismo mediante su caché de ARP previamente envenenada, enviando así el tráfico al atacante en vez de al destinatario real. El switch enviará las tramas por la boca del destinatario, que en este caso es el atacante. Éste las recibirá y las pasará a la aplicación adecuada, que puede ser un sniffer que capture el tráfico.

El atacante reenviará el contenido de las tramas al destinatario real. La única diferencia entre la trama original y la modificada es, la dirección ethernet del destinatario, que varía de la del atacante a la de una de las víctimas. El nodo correspondiente recibirá el tráfico como si nada hubiese ocurrido. El ataque se ha establecido.

En el siguiente post explicaremos como realizar esto con Cain&Abel 2.0 y si podríamos defendernos de él de alguna manera.

Saludos curiosos.

martes, 27 de noviembre de 2012

Configurar tipo de letra en CSS en nuestra Web.

CSS
Al realizar programación Web, una parte importante de un diseño atractivo suele ser los tipos de letras que establecemos en ella.

Siempre que estos tipos de letras sean standard no tendremos problemas de incompatibilidad. Pero, ¿qué hay de aquellos tipos de letras menos conocidos e igualmente usados?
Lo más normal es usar el atributo de CSS llamado font-family que establece el tipo de letra que vamos a usar para un determinado elemento. ¿Cómo funciona este atributo?

Para explicar su funcionamiento usaremos el siguiente código:

#titulo{
        font-family: Kunstler Script, Comic Sans, Arial, Times New Roman;
}

Este código CSS cargará en el elemento denominado título el tipo de letra Kunstler Script en primer lugar. El navegador del cliente buscará en el equipo el tipo de letra cargado. Si lo tiene instalado lo cargará pero si no lo tiene cargará el siguiente especificado (en nuestro caso Comic Sans) y repetiría el proceso de comprobar si está instalado en el equipo del cliente.

Entonces, ¿qué podemos hacer para establecer un tipo de letra no standard que independientemente de si está instalado en el equipo del cliente o no lo cargue en la web?

Para hacer esto podemos crear una familia de fuente propia especificando donde se encuentra el archivo de fuente.


@font-face {
font-family:"fuente_web";
src: url("http://www.miweb.com/KUNSTLER.TTF");
}

#titulo{
        font-family: "fuente_web";
}

Con este código hemos establecido un nuevo tipo de font-family denominado "fuente_web", indicándole cual es el archivo de fuente que va a usar y donde se encuentra (en el fichero raíz de la web y el archivo KUNSTLER.TTF).

Así, en caso de que el equipo no tenga instalado el tipo de letra que queremos usar lo cargará desde la web y no desde el equipo; por lo que lo mostrará sin problemas.

Saludos curiosos.

martes, 23 de octubre de 2012

Instalación y configuración de Cobian Backup

Si estáis trabajando para una pequeña o mediana empresa y como me pasa a mí, vuestros jefes no creen que gastar dinero en informática sea "realmente necesario". Tendréis como yo el problema con las copias de seguridad de los equipos.

Y digo problema porque instalando un servidor de copia ya no lo tendríamos. Pero claro, esto supone un gasto económico que ciertas empresas no pueden o no quieren asumir.

Pero tranquilos porque hay maneras en las que se pueden seguir realizando las copias de seguridad de los sistemas a coste 0. ¿Cómo? Con herramientas de copias de seguridad como Cobian Backup.

Cobian Backup es un programa multitarea capaz de crear copias de seguridad en un equipo, en una red local o servidor FTP. También soporta SSL. Corre sobre Windows y tiene grandes ventajas de uso como que consume pocos recursos, que puede funcionar como servicio en segundo plano y que por supuesto es gratis.

Veamos como se instala y configura esta útil herramienta, que podéis descargar desde aquí:
La instalación es bastante sencilla, no pide grandes cosas; idioma y poco más. Es muy interesante que seleccionemos la opción de que nos cree un script de instalación, con ella podremos instalar el programa de forma desatendida en cuantos equipos queramos.

Este es el aspecto que tiene la pantalla principal del programa:

Para crear las copias debemos de pulsar en nueva tarea y configurarla:

Como se puede observar en la imagen podemos seleccionar distintos tipos de respaldos:
  • Copia completa: Consiste en copiar directamente todos los archivos seleccionados cada vez que se lanza el proceso. Si es mucho tamaño lo que se va a copiar, el backup puede tardar mucho tiempo. Por ello esta copia se suele hacer solo una vez a la semana o una vez al mes.
  • Copia diferencial: Solo copia los ficheros que han sido modificados desde la última copia completa.
  • Copia incremental: Solo copia los ficheros que han sido modificados desde el último backup, independientemente del tipo de este. Es más avanzada que la anterior.
  • Tarea vacía: Se usa como planificador para ejecutar eventos. No es una copia en sí, pero puede contener copias de los anteriores tipos con una programación específica.
Ahora pasamos a seleccionar que archivos queremos copiar, pulsando en el botón de ficheros:

Si observamos, en mi caso he asignado que la copia a parte de guardarse en local también lo haga en un FTP remoto. Así tendremos el respaldo en otro lugar como bien manda la ley.

Posteriormente, tenemos que seleccionar cuando se va a realizar la copia. Tenemos varias opciones: Una vez, diaria, semanal, mensual, anual, cronómetro (programa una copia que dure el tiempo establecido y si termina el backup se corta), manual y al iniciar. Así como la hora:

También podemos ajustar la prioridad, en caso de que tengamos varios copias que se ejecuten en el mismo momento, ya que se ejecutan una detrás de otra:

En el botón de archivo nos permite escoger si queremos comprimir el archivo y si queremos cifrarlo con una clave. (Muy útil en caso de que en la copia tengamos archivos de carácter muy personal como documentos de bancos, email, documentos personales, etc...):

En el filtro podemos escoger qué archivos específicos del directorio antes indicado queremos que se haga el respaldo:

En los eventos podemos indicar si queremos que se haga algo antes o después de la copia:

También podemos escoger algunas opciones avanzadas más:

Una vez hemos configurado todos los datos ya tenemos la copia programada para que se ejecute:

Posteriormente pasaré a explicar más detalles de la aplicación. Saludos curiosos.

jueves, 27 de septiembre de 2012

Script backup SQL en bash

Como todo buen Administrador de Sistemas que se tercie, nuestro trabajo consiste en "trabajar lo menos posible". Esto es, conseguir que las tareas que tenemos que realizar se puedan hacer más automatizadas.

Una de dichas tareas que tenemos que realizar en nuestro trabajo la de hacer copias de respaldo de la base de datos. Nuestro servidor posee un MySQL y como es normal hay que realizarle copias de seguridad periódicas.

Para realizar esta tarea hemos creado un script en bash (nuestro servidor es un linux), para que se copie toda la base de datos y toda la información que esta contiene a un directorio destino.

Podéis descargar el script de aquí:

Ahora paso a describir como usar CRON para automatizar la tarea del script.

CRON es un administrador regular de procesos que actúa en segundo plano como demonio, es el equivalente en Unix a Tareas Programadas de windows.

Podemos configurar este demonio para que ejecute una tarea específica cada minuto, hora, día o mes.

En nuestro caso vamos a hacer que se ejecute el script todos los días a las 3:00 am

Esta es la sintaxis que debéis de poner en el fichero /etc/cron.d/backup_bd el cual tenéis que crear:

  • 0 3 * * * root  /root/acens/backup_mysql.sh
Con esto la copia se hará la copia de forma automática todos los días. Espero que os sea útil.
Saludos curiosos.





miércoles, 26 de septiembre de 2012

Exportar e importar bases de datos en MySQL

Algunas veces, nos es necesario el importar una base de datos que tengamos en un servidor para incorporarlo a otro.

Para ello podemos hacerlo desde la misma consola de MySQL.
Lo primero que tenemos que hacer es exportar la base de datos antigua a un archivo .sql. Como nuestro servidor es un Linux con un servidor MySQL en él, contamos con cierta herramientas para gestionar el servidor.

Una de estas herramientas es mysqldump; que se encarga de hacer exportaciones de la base de datos a archivos, pudiendo incluso enviarlos a un servidor remoto.

Veamos como hacerlo:

  1. Entramos en la consola del servidor con privilegios de root y escribimos el siguiente comando para importar la base de datos a un archivo sql.
    • #mysqldump -h ip_servidor -u usuario_bd -p basededatos>mibase.sql
Como veis podemos indicarle a que servidor va a ir. Si no se especifica la opción -h ip_servidor, lo alojará en el directorio en el que estemos actualmente (en nuestro caso en /root).

Ahora tendremos que importarlo desde el servidor que lo vaya a alojar:
  1. Nos conectamos al servidor:
    • #mysql -h ip_servidor -u usuario_bd -p
  2. Si no hemos creado la base de datos anteriormente lo hacemos ahora:
    • mysql>create database mi_base_nueva;
  3. Usamos la base de datos creada anteriormente:
    • mysql>use mi_base_nueva;
  4. Le damos la ubicación del archivo para que lo importe con el comando source:
    • source /root/mibase.sql
Con esto ya tendremos nuestra base de datos migrada al nuevo servidor. Aunque como todo el mundo sabe hay ciertas herramientas como phpmyadmin que nos facilitarían la labor, aunque personalmente me gusta saber que es lo que estoy haciendo. Saludos curiosos.

viernes, 27 de julio de 2012

Mejorar la velocidad de carga de una Web

Uno de los problemas que se le presenta a un Webmaster sobre una web es cómo mejorar la velocidad de carga.
Debido a que en toda web hay una gran cantidad de scripts e imágenes la velocidad de carga en ocasiones deja mucho que desear. Y claro a la vista del público la página no es demasiado formal; y si además de eso es una web dedicada a la venta de un producto o servicio puede llegar a provocar un cierto descenso de las ventas o miedo a comprar.
Este es uno de los problemas que se nos presentó en nuestra web corporativa dedicada al sector turístico (Hoteles).
Tras hacer multitud de cambios en el diseño y en la programación del portal, observamos un descenso sorprendente en la velocidad de carga. Necesitábamos buscar una solución para ello y lo encontramos.

Una forma muy utilizada y que a nosotros nos sirvió fue el comprimir los archivos que forman parte de la web. Esta compresión llegaba a un 75%-90% del espacio original y provocando el mismo descenso en retardo en la velocidad de carga.

¿Cómo comprimir los archivos?
Como en nuestro caso poseemos un servidor con sistema Debian podemos usar la herramienta Gzip.
Para hacerlo existen 3 formas:
  1. En el archivo .htaccess. Añadimos la siguiente línea:  php_flag zlib.output_compression On
  2. En el archivo php.ini. Ponemos a On la siguiente línea:  zlib.output_compression = On
  3. Añadir en cada script php antes de cualquier output:  ini_set(‘zlib_output_compression’,’On’);
Otra forma que también podemos utilizar es aprovechar la cache de los navegadores ya que estos guardan casi todo (imágenes, archivos CSS, js, etc...). Lo que ocurre es que si no le indicamos nada no lo guarda en cache por lo que cuando el usuario navegue en la web tendrá que descargarla de nuevo cada vez.

¿Cómo indicar que se guarde la web en cache?
Podemos hacerlo  modificando el .htacces para que añada un expire header a los archivos solicitados, provocando así que si este expire no ha caducado, guarde los archivos en la cache del navegador.
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"><br />
Header set Expires "Thu, 26 Jul 2040 20:00:00 GMT"<br />
FilesMatch>
Si realizamos estos sencillos pasos podemos aumentar la velocidad de carga del navegador en casi un 95% más. Yo creo que merece la pena.

jueves, 12 de julio de 2012

Solución Parse Error: syntax error, unexpected $end

A la hora de cambiar el diseño de una Web, si no tenemos mucho cuidado, podemos provocar errores en caso de que dicha Web se encuentre en producción (ya funcionando en Internet).
Este caso es el que se nos presentó a nosotros y para poder solucionarlo decidimos el montar un servidor Web con Apache, PHP y MySQL para poder cambiar el diseño y luego subirlo todo sin en un momento concreto ya cambiado.
Para poder hacer esto hay una herramienta llamada WAMP (Windows Apache MySQL PHP).  
O LAMP (Linux Apache MySQL PHP) en su versión para Linux; nos permitirá instalar dicho servidor de forma rápida limpia e intuitiva.
Tras migrar la base de datos y los archivos desde nuestro servidor al equipo con el cual íbamos a hacer los cambios de diseño nos arrojó el siguiente error la Web:

Investigando un poco, hemos descubierto a que se debe. Hay dos posibilidades:
  1. Que alguna llave dentro de la programación no esté cerrada correctamente. (En nuestro caso no era probable ya que la web ya funcionaba en el server anterior).
  2. El PHP instalado no admite en su configuración el uso de etiquetas PHP en formato abreviado (“” en lugar de “php” ).
Como en nuestro caso el problema era el segundo podíamos solucionarlo o bien tocando todo el código, (tarea bastante ardua debido a la cantidad enorme de archivos); o bien tocando el php.ini al cual teníamos acceso y cambiando la siguiente clave:
  • short_open_tag = On
En el server recién instalado permanece en off por lo que solo hay que ponerlo a on:

Con esto ya podremos acceder a la web de forma correcta. Saludos curiosos.

viernes, 29 de junio de 2012

Problema con Shockwave Flash en Mozilla Firefox 13

Hace aproximadamente una semana actualicé mi Firefox a la versión 13. La verdad es que de momento todo genial hasta que me di cuenta de un problema: el flash no funcionaba.
Mi primera impresión fue que fuera posible que el flash no estuviera actualizado, pero no era así.
Tras mucho indagar encontré este articulo de Adobe que explicaba la forma de solucionarlo, que paso a indicar.
El problema en sí viene provocado por el plugin de flash y no por el Mozilla. Parece ser que Flash Player no trata bien el modo protegido, por lo que la solución radica en desactivarlo de la siguiente manera:
  • Busca el archivo mms.cfg, estará localizado en:
    • Windows 32 bits: C:\windows\system32\macromed\flash\
    • Windows 64 bits: C:\windows\syswow64\macromed\flash\
  • Ahora abre dicho archivo con un editor de texto cualquiera, como el bloc de notas y añade la siguiente línea al archivo:
    • ProtectedMode=0
Es posible que según que tipo de sistema uses, no te deje guardar el archivo en su ubicación original. Lo único que tendrías que hacer es guardarlo en otro lado como el escritorio, por ejemplo, y luego copiarlo a C:\windows\system32\macromed\flash\C:\windows\syswow64\macromed\flash\ reemplazando el original.

Suponemos que en las nuevas actualizaciones de Flash o de Firefox ya se solucionará el problema por lo que si queremos podemos activar de nuevo el modo protegido borrando la línea añadida anteriormente.
Saludos curiosos.

martes, 29 de mayo de 2012

Mirroring entre hosts y discos. Parte 1: Claves públicas y privadas en ssh

Debido a las necesidades de la web de la empresa, contratamos una solución de servidor dedicado con dos máquinas en tamden. La idea principal es que estas máquinas realicen un balanceo de carga entre ellas para que la web de la empresa, el cual es el principal servicio que soporta, agilice su rendimiento de forma considerable.
Para realizar esto vamos a configurar el mirroring cruzado, y lo primero que haremos es conseguir comunicación vía ssh.

Ssh permite una forma de comunicación mediante claves públicas y privadas. El funcionamiento es sencillo: se generan 2 claves, una pública y una privada en el server1. Luego se le pasa la clave pública al server2 haciendo que server1 este autorizado a acceder vía ssh sin necesidad de poner la clave.

Veamos como podemos realizar este proceso:
Lo primero que hay que hacer es generar las claves en el server1 con el siguiente comando:
# ssh-keygen -t rsa

En el directorio .ssh de nuestro home (en este caso /root) se creará la clave privada (id_rsa) y la pública (id_rsa.pub).
Ssh-keygen nos pedirá una frase de paso. La dejaremos en blanco para que no nos la pida al conectarnos al equipo remoto. 
Tras esto podemos hacer un ls del direcorio /root/.ssh/ y tendremos algo parecido a esto:
Salida ls





Ahora pasamos a poner el contenido del fichero id_rsa.pub en el fichero authorized_keys del server2.
Para realizar este proceso hay dos forma: copia vía scp el fichero id_rsa.pub del server1 y luego añadir su contenido al fichero authorized_keys del server2; o bien usar el siguiente comando que realiza el proceso de pasar la clave pública de forma automática:
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@server2
Tras esto podemos hacer un cat del fichero /root/.ssh/authorized_keys del server2 y tendremos la siguiente salida:
Salida cat

Ahora solo hay que realizar el proceso inverso en el server2 y ya podremos acceder a ambos servidores con root sin que nos pida contraseña. Saludos curiosos.

jueves, 24 de mayo de 2012

Técnicas de SEO parte 1: Black Hat

Tras la remodelación que estamos realizando de nuestra página web de hostales. Nos ha surgido el problema del posicionamiento.
Al ser una web que se dedica a la venta hotelera nos conviene el tener una cantidad elevada de vistas, para así tener el máximo número de reservas.
Y aquí llegamos a la parte de SEO (Search Engine Optimization), que no es más que las técnicas necesarias para la optimización de búsqueda para el posicionamiento en buscadores. Para entendernos: realizar los cambios necesarios para que nuestra web aparezca en las primeras posiciones en los buscadores.

Para poder realizar esto hay dos técnicas: las legales y las ilegales.
En esta primera parte vamos a ver las ilegales llamadas técnicas black hat.
Antes de mostrar estas técnicas decir que son completamente ilegales y que uso puede provocar que los principales buscadores os etiqueten en sus listas negras y seáis penalizados.

Veamos cuáles son:
  • Cloaking: está técnica de black hat implica mostrar al bot del buscador una página web distinta a la que ven los visitantes. Se realiza insertando un texto optimizado con palabras clave específicas para los buscadores. Hace algún tiempo se mencionaba en ciertos foros de Internet como algunos lo había conseguido mediante una web en texto plano que redirigía a una web en flash; ya que el flash no lo pueden leer los bots, la web que redireccionaba provocaba  una alto índice de pagerank y por tanto se encontraba en las primeras posiciones de los buscadores de forma inmediata.
  • Texto invisible: Se realiza colocando texto en la web del mismo color que el fondo de la página. Esto tiene como fin que el bot del buscador lea el texto pero este no pueda ser leído por el usuario que visita la web.
  • SPAM en foros: Se trata de visitar distintos foros, comentando en ellos y añadiendo al final de cada comentario la url de nuestra web. Aunque esta técnica es la menos ilegal de todas, es cierto que en algunos foros en los que los admin detecten que estías haciendo spam para dejar links podrían informar de ello a cierto sitios de Webmaster (generalment el de google) y os podrían llegar a penalizar, aunque yo aun no he escuchado nada parecido.
  • SPAM de keywords: a Google le gusta que las palabras clave se encuentren, de manera natural, en el texto escrito. Si ponemos en un texto: “Mi Hotel es el mejor Hotel que podemos encontrar en los sitios de Hoteles y es un Hotel ideal para pasar unas vacaciones en un Hotel”… no sólo es redundante, sino que estás rompiendo la regla del 3 por cierto (3 palabras clave cada 100 palabras).
Estas técnicas provocaran un aumento en el posicionamiento de la web pero solo hasta que os pillen, que con la tecnología de los bots de los bucadores actuales será en un muy corto espacio de tiempo.
Pero claro, como nosotros somo buenos, hemos optimizado nuestra web con técnicas SEO White Black, pero eso para otra entrada. Saludos curiosos.

jueves, 10 de mayo de 2012

Error con acentos y ñ en la Web

No se si os habrá pasado, pero no hay nada más poco etético que cuando estás visitando una web, no aparezcan los acentos ni las ñ sino que en su lugar tenemos el odioso símbolo de �.

Bueno pues para daros una alegría a los webmasters y los administradores de sistemas: se puede arreglar (como casi todo en la vida).

Es algo sencillo, lo único que tenemos que hacer es descomentar la línea siguiente en el apache.conf del servidor web:

AddDefaultCharset ISO-8859-1

Con esto le decimos al servidor que identifique los caracteres antes mencionados. Saludos curiosos.

miércoles, 9 de mayo de 2012

Cómo migrar una web de forma correcta

Hoy tras superar numerosos obstáculos para completar la migración del servidor web... a vuelto a estar operativo de nuevo.

Paso a mencionar cuáles son los pasos a realizar en caso de que se quiera hacer una migración de un servidor a otro en 4 partes:
  1. Copiamos todo el contenido del servidor antiguo al nuevo.
  2. Cambiamos los registros DNS para nuestro dominio y los apuntamos al nuevo server. Esto tarde de 36-48 en realizarse, puesto que los DNS de Internet han de actualizarse y propagar la nueva dirección del domino.
  3. Configuramos un servidor MySQL duplicado para que la base de datos del servidor antiguo y el nuevo se mantuvieran actualizadas.
  4. Cuando ya está movido todo y los DNS apuntando al nuevo server, tenemos que dar de baja los virtual host de apache para la web antigua. Con ello ya nadie accederá por equivocación a la antigua web.
  5. Quitamos el servidor mysql duplicado.
  6. Resolvemos errores si los hay.

En primer lugar cabe mencionar que nosotros migramos la web corporativa haciendo una copia con rsync del servidor completo. Esto tiene algunas ventajas y algunos inconvenientes.
  • Las ventajas son que al copiar todo, no tenemos que preocuparnos por volver a instalar todos los servidores que teníamos anteriormente y no hace falta migrar los usuarios ni los ficheros de configuración.
  • Los inconvenientes es que hay que cambiar de forma manual multitud de ficheros que tienen parámetros que hacen referencia al servidor antiguo. Como ejemplos tenemos el /etc/hosts, /etc/hostname, archivos .php de la web, configuración de los servidores, etc...
 La diferencia radica que montando todo desde 0 sabes que es lo que estás configurando aunque tardas más tiempo en volver a tener toda la infraestructura y al copiarlo tardas mucho menos tiempo pero entras en "pánico" en caso de que te aparezca algún error.

Este fue el caso nuestro: el correo dejó de funcionar y la parte de la web que administraba las reservas no funcionaba.

Analicemos por partes que es lo que ocurría y que soluciones tomamos para remediarlo.

En primer lugar y mayor problema de todos era que el servidor web no estaba recibiendo correo. El 80% de las reservas que los usuarios realizaban para nuestros establecimientos se recibían por correo. Esto se tradujo en 3 días sin tener reservas, hablando en plata 3 días perdiendo dinero.
  • Creamos una entrada mx en el servidor DNS con el nombre mail.hostalescomohoteles.com.
  • Cambiamos la configuración de postfix para que entendiera que el nombre del nuevo servidor y la dirección ip habían cambiado.
  • Configuramos Clamav (antivirus para el correo) para que trabajara con el nuevo nombre del servidor.
  • Configuramos SpamAssasin (configuración antispan) para que trabajara con el nuevo nombre del servidor.
  • Descongestionamos la cola del correo del servidor para los mensajes acumulados.
 En segundo lugar la web dejó de funcionar en su totalidad.
  • Cambiamos las direcciones de los virtual host de apache, debido a que están apuntando al servidor antiguo.
  • La parte de administración de reservas no funcionaba por lo que hay que dar de alta una entrada A en el servidor DNS para secure.hostalescomohoteles.com. Esta dirección gestiona la parte de las reservas con seguridad SSL. (Puerto 443)
  • Ahora nos arroja un error a la hora de aceptar los pagos, esto era debido por que en multitud de archivos de la web estaba puesto la dirección ip del servidor antiguo. En este caso en especial era cuando realizábamos el pago a través del sistema tpv, porque enviaba la información al servidor antiguo y no al nuevo.
Tras solucionar estos resquicios ya tenemos el server funcionado. Saludos curiosos.

jueves, 3 de mayo de 2012

Error Mysql "Checking for corrupt, not cleanly closed and upgrade needing tables"

En otro de los capítulos de la migración del servidor web de la empresa, hemos tenido un gran problema a la hora de migrar la base de datos.

De repente el servidor de mysql dejo de funcionar. Al ver que es lo que ocurría vimos que no se iniciaba el servicio. Fallaba.

El problema parecía que el sistema de mysql se había corrompido con el cambio de servidor, cosa que no entendemos porque ha ocurrido.

Sin más, la solución era aparentemente sencilla: reinstalar el pequte de mysql-server. Pero, y he aquí lo que nos ocupa, ahora al iniciar el servicio nos provocaba el siguiente error:
hostalescomohoteles:~# /etc/init.d/mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..





La razón por la que nos arroja este error la comprobamos en el syslog del sistema:

May  3 10:02:12 hostalescomohoteles mysqld[14950]: 120503 10:02:12 [Note] Retrying repair of: './hosteltouristworld_com/registros_ip' with keycache

Lo que nos indica es que la tabla registros_ip de la base de datos hosteltouristworld_com esta corrupta. Por lo que pasamos a repararla con el siguiente comando de la shell:
myisamchk -r --safe-recover /var/lib/mysql/hosteltouristworld_com/registros_ip.MYI

Esto recupera los registros de la tabla que se hallen corruptos, y devuelve el servidor al estado óptimo de inicio.

También se podría dar el caso de que la tabla corrupta sea una de las tabla del sistema, por lo que la forma de solucionarlo sería mucho más delicada. Para recuperar este tipo de tablas podéis consultar este artículo, que ofrece información detellada sobre los pasos a seguir. Saludos curiosos.

lunes, 23 de abril de 2012

Restringir el inicio de root a través de ssh

Cambiando cosas en el server de la empresa me ha surgido un problema:
Cuando intentaba acceder al server a través de ssh con root me decía que la contraseña era incorrecta.
No no es lo que pensáis, ya la comprobé ;)
Lo cierto es que al acceder mediante un usuario sin privilegios, si accedo al server; y desde dicho usuario me permite hacer login a root con la misma contraseña.
Esto ocurro debido a que en el fichero /etc/ssh/sshd_config existe una entrada denominada:
PermitRootLogin

Esta puede tener distintos valores (yes, no, without_password).
  • En caso de que esté a yes, nos permitirá hacer login con root mediante ssh de forma correcta.
  • En caso de que esté a no, restringirá todo acceso con root mediante ssh.
  • Si está con without_password, no permitirá hacer login directo pero sí si entramos con otro usuario.
En mi caso estaba con  without_password por lo únicamente debemos hacer es cambiarlo por yes:
PermitRootLogin yes


Con esto ya podremos hacer login con root de forma correcta. Saludos curiosos.

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...