Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Cómo instalar y configurar Geeklog 1.4.x.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2007 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca de Geeklog.

Geeklog es una aplicación basada sobre PHP y MySQL y distribuida bajo los términos de la licencia GNU/GPL, para el manejo dinámico de contenido de red. Sin modificaciones tras su instalación, es un motor de bitácora personal, Sistema de Manejo de Contenido (CMS o Content Management System) y/o portal de red. Incluye soporte para comentarios, rastreo (o tracback, un método para solicitar notificación cuando alguien enlaza hacia un documento), varios formatos de sindicación (es decir, RSS o Really Simple Sindication), protección contra Spam y todas las funciones básicas para contar con un sitio de red dinámico y versátil.

Gracias a la plataforma para componentes añadidos (Plug-ins), su funcionalidad puede ser fácilmente extendida con foros, galerías de e imágenes, área de descargas y muchas otras cosas más.

URL: http://www.geeklog.net/

¿Por qué Geeklog?

Geeklog fue diseñado con la seguridad como prioridad, siendo que su utilización inicial fue precisamente un sitio de seguridad. Las vulnerabilidades son poco frecuentes y los guiones que explotan vulnerabilidades (exploits), que aún funcionen, son raros de encontrar. Una de las grandes ventajas de Geeklog contra otro tipo de equipamiento lógico similar, es su esquema de permisos de usuario. Es posible asignar permisos de lectura y/o escritura a un usuario o grupo de usuarios y hacer que estos usuarios hereden permisos al ser añadidos a un grupo o grupos. Esta funcionalidad cubre los requisitos necesarios para ser utilizado en redes internas en empresas y corporaciones.

Geeklog, además, se enfoca en la calidad del código utilizado, así como también asegurarse que los API (Application Programming Interface o Interfaz de Programación de Aplicaciones) utilizados, no estropeen componentes añadidos (plug-ins) de terceros tras una actualización, a menos que el caso realmente lo requiera. De tal modo, es posible continuar utilizando componentes creados por terceros para versiones anteriores de Geeklog y sin embargo estos casi por seguro funcionarán correctamente con la versión más reciente, salvo aquellos que utilicen el sistema de comentarios, mismo que fue rediseñado a partir de la versión 1.4.0.

Aspectos de seguridad a considerar.

Geeklog es uno de los Sistemas de Manejo de Contenido más seguros y confiables, sin embargo no significa que sea invulnerable. Hay varios aspectos a considerar, los cuales aplicados de forma correcta pueden mejorar considerablemente la seguridad.

Prefijo de las tablas de Geeklog.

Una de las principales consideraciones que se deben tomar en cuenta es que la mayoría de los guiones disponibles para explotar vulnerabilidades (exploits) indudablemente presupondrán el prefijo de las tablas de Geeklog para lograr su cometido. es decir, el valor de la variable $_DB_table_prefix, el cual de forma predeterminada es gl_. La mejor forma de impedir ser susceptible a guiones explotables, es cambiar dicho valor por cualquier otro, preferentemente que combine letras y números de forma que sea difícil para un delincuente informático adivinar éste.

Rutas de los directorios de Geeklog.

La siguiente consideración es la localización de los directorios utilizados por Geeklog en el sistema. Conviene instalar el directorio público fuera del directorio raíz de apache, es decir, que no esté dentro de /var/www/html. La forma de hacer esto es colocando el directorio público en una ruta como /var/www/nombre_ofuscado y definiendo dicho directorio como uno virtual en la configuración de Apache.

El directorio de configuración de Geeklog, del mismo modo y con mayor razón, jamás debe quedar dentro del directorio raíz de Apache. Debe ser instalado en cualquier parte del sistema, como por ejemplo /var/www/nombre_ofuscado, y, a diferencia del directorio público, jamás deberá poder accederse desde el navegador.

Muchos guiones explotables pueden hacer daño si se conoce la ruta exacta en el sistema para diversos componentes de Geeklog.

Desactivar el despliegue de errores de PHP.

La función display_errors función viene deshabilitada de forma predeterminada en el archivo php.ini, sin embargo muchos administradores suelen habilitarla para realizar diagnósticos y pruebas. En realidad, jamás se debe habilitar ésta si se trata de un servidor en producción, porque hará que se muestre en el navegador información que puede ser utilizada en un guión explotable, como son rutas en el sistema de archivo y prefijos de tablas en la base de datos.

Cuando se está hospedado en un servidor con esta función habilitada, se puede recurrir a variables en archivos .htaccess del siguiente modo:

php_flag display_errors Off

Equipamiento lógico necesario.

Geeklog requiere algunos componentes para poder funcionar. Específicamente se necesitan Apache, MySQL, PHP y el soporte de MySQL para PHP.

Instalación a través de yum.

Si se utiliza de CentOS 4 o White Box Enterprise Linux 4, solo se necesita utilizar utilizar lo siguiente:

yum -y install httpd php php-mysql mysql-server

Instalación a través de Up2date

Si se utiliza de Red Hat™ Enterprise Linux 4, solo se necesita utilizar lo siguiente:

up2date -i httpd php php-mysql mysql-server

Procedimientos

Este documento considera las siguientes variables que deberán ser reemplazadas por valores reales:

  • nueva-clave-de-acceso: una clave de acceso que asignará a el suaurio root de MySQL en caso de que se trate de una nueva instalación de MySQL.
  • base-de-datos: Nombre que tendrá la base de datos que se creará para Geeklog.
  • usuario-geeklog: Nombre del usuario que se utilizará para acceder hacia la base de datos en MySQL y que utilizará Geeklog. Debe ser un nombre de menos de 12 caracteres.
  • clave-de-acceso: Clave de acceso que se utilizará para acceder a la base de datos en MySQL y que utilizará Geeklog.
  • www.dominio.algo: Dirección IP o nombre de anfitrión del sistema.
  • alguien@algo.algo: Cuenta de correo electrónico del usuario administrador.

Arranque de servicios.

Se requiere iniciar los servicios httpd y mysqld.

/sbin/service httpd start

Si es la primera vez que se inicia MySQL, inicie también el servicio mysqld.

/sbin/service mysqld start

Si es la primera vez que utiliza MySQL y no se ha asignado clave de acceso para el usuario root en MySQL, este es buen momento para hacerlo. Es inaporpiado dejar sin clave de acceso al usuario root en MYSQL. Defina una buena clave de acceso que pueda recordar y utilice el siguiente procedimiento:

mysqladmin -u root password 'nueva-clave-de-acceso'

Los servicios httpd y mysqld se agregan al arranque del sistema utilizando lo siguiente:

/sbin/chkconfig httpd on
/sbin/chkconfig mysqld on

Instalación de Geeklog.

Geeklog se distribuye en archivos TAR comprimidos con algoritmo Gzip. Una vez descargado desde http://www.geeklog.net/, solo se necesita utilizar el Gestor de archivadores (file-roller) desde el modo gráfico o bien, si solo se dispone de una terminal, la siguiente sentencia de mandatos:

tar zxvf geeklog-1.4.1.tar.gz

Lo anterior genera un directorio nuevo denominado geeklog-1.4.1, bajo el cual están todos los componentes de Geeklog.

Procedimientos.

Respaldo de la base de datos existente.

Si va a ser utilizada una base de datos existente, conviene respaldar ésta antes de continuar.

mysqldump --opt -u root -p base-de-datos > respaldo-base-de-datos.sql

Para restaurar el respaldo, se utiliza lo siguiente:

mysql -u root -p base-de-datos < respaldo-base-de-datos.sql

Creación de la base de datos para Geeklog en MySQL.

Deben definirse previamente tres valores a utilizar con Geeklog: nombre de la base de datos, usuario para acceder a esta base de datos y clave de acceso para este usuario. Éstos, preferentemente, deben ser valores difíciles de adivinar para terceros.

Tomando en cuenta lo anterior, se crea la base de datos utilizando el mandato mysqladmin.

mysqladmin -u root -p create base-de-datos

Una vez creada la base de datos, se accede hacia el servidor de MySQL con el mandato mysql, con la finalidad de asignar permisos, usuario y clave de acceso.

mysql -u root -p

El usuario y clave de acceso necesarios se asignan del siguiente modo:

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 4 to server version: 4.1.20

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> GRANT ALL ON base-de-datos.*
    -> TO usuario-geeklog@localhost
    -> IDENTIFIED BY 'clave-de-acceso';
mysql> exit

Configuración de directorios para Geeklog.

El directorio principal puede quedar en cualquier lugar del sistema de archivos, pero nunca dentro del directorio raíz de Apache, más sin embargo en una ruta a la cual tenga acceso éste último. Un buen lugar es dentro de /var/www/ o bien /etc. Preferentemente utilizando un nombre de directorio ofuscado o bien algo difícil de adivinar.

mv geeklog-1.4.1 /var/www/conf_geeklog

EL directorio de configuración requiere que los subdirectorios backup, data y logs tengan permisos de escritura para el usuario apache. Puede hacerse asignando permiso 707 (drwx---rwx) a éstos o bien, la forma más conveniente, asignándolos al usuario apache del siguiente modo:

chown -R apache.apache \
/var/www/conf_geeklog/{backups,data,logs}

El directorio público de Geeklog, es decir, public_html, también es conveniente esté fuera del directorio raíz de Apache. Un buen lugar es dentro de /var/www/ o bien /usr/share.

mv /var/www/conf_geeklog/public_html \
/var/www/html_geeklog

El acceso desde Apache hacia este directorio conviene más que sea como directorio virtual. Para tal fin se añade la configuración correspondiente en Apache creando el archivo /etc/httpd/conf.d/geeklog.conf, considerando que Geeklog será accedido como http://www.dominio.algo/portal/, con el siguiente contenido:

	Alias /portal /var/www/html_geeklog/

Geeklog funciona perfectamente sin la variable register_globals habilitada, sin embargo algunos de los añadidos para Geeklog si lo requieren. Debido a que no es conveniente habilitar register_globals en todo el servidor HTTP, puede configurarse el directorio /var/www/html_geeklog/ para permitir utilizar éste en donde sea necesario a través de un archivo .htaccess. Siendo así, la configuración en el archivo /etc/httpd/conf.d/geeklog.conf quedaría del siguiente modo:

	Alias /portal /var/www/html_geeklog/
	<Directory "/var/www/html_geeklog/">
		Options Includes
		AllowOverride all
	</Directory>

Para utilizar register_globals solo será necesario crear el archivo /var/www/html_geeklog/.htaccess con el siguiente contenido:

php_flag display_errors Off
php_flag register_globals On

El directorio público, hay varios directorios que deben permitir escritura para el usuario apache. Puede hacerse asignando permiso 707 (drwx---rwx) a éstos o bien, la forma más conveniente, asignándolos al usuario apache del siguiente modo:

chown -R apache.apache \
/var/www/html_geeklog/images/{articles,library,topics,userphotos}

chown -R apache.apache \
/var/www/html_geeklog/backend

Para que surtan efectos los cambios y sea posible utilizar el archivo .htaccess, es necesario reiniciar el servicio httpd.

service httpd restart

Si no se desea interrumpir conexiones en el servicio httpd, se puede hacer que éste solo vuelva a leer la configuración y tomar los cambios, a través de la siguiente sentencia:

service httpd reload

Archivo lib-common.php.

Es el único archivo del directorio público que requiere modificarse y es para establecer donde se encuentra el archivo config.php de Geeklog. Aproximadamente en la línea 84 de /var/www/html_geeklog/lib-common.php se encuentra una función require_once donde se debe establecer el valor /var/www/conf_geeklog/config.php del siguiente modo:

/**
* Configuration Include: You should ONLY have to modify this line.
* Leave the rest of this file intact!
*
* Make sure to include the name of the config file,
* i.e. the path should end in .../config.php
*/
require_once( '/var/www/conf_geeklog/config.php' );

Archivo config.php.

Se accede hacia el directorio /var/www/conf_geeklog/.

cd /var/www/conf_geeklog/

Se edita el archivo config.php y se definen los valores para las siguientes variables, considerando que se utilizará el idioma español para México y codificación UTF-8 para el conjunto de caracteres:

$_DB_hostlocalhost
$_DB_namebase-de-datos
$_DB_userusuario-geeklog
$_DB_passclave-de-acceso
$_DB_table_prefixe3f45g_ (cualquier prefijo, terminado en guión bajo, que no sea fácil de adivinar)
$_CONF['path']/var/www/conf_geeklog/
$_CONF['path_html']/var/www/html_geeklog/
$_CONF['site_url']http://www.dominio.algo/portal (no debe llevar / al final)
$_CONF['site_admin_url']http://www.dominio.algo/portal/admin (no debe llevar / al final)
$_CONF['site_mail']alguien@algo.algo
$_CONF['site_name']Nombre del portal
$_CONF['site_slogan']Eslogan del portal
$_CONF['language']spanish_utf-8
$_CONF['default_charset']utf-8
$_CONF['locale']es_MX.utf-8
$_CONF['rdf_language']es-mx

Nuevamente, la mejor recomendación es que los valores para $_DB_name, $_DB_user, $_DB_pass, $_DB_table_prefix, $_CONF['path'] y $_CONF['path_html'] deben ser difíciles de adivinar para un atacante.

Instalador de Geeklog

Para concluir la instalación, es necesario acceder hacia http://www.dominio.algo/portal/admin/install/install.php, especificar la ruta para el archivo config.php (la cual, para el ejemplo de este documento, sería /var/www/conf_geeklog/config.php), habilitar la casilla para utilizar tablas Innodb y continuar dando clic en los botones de siguiente. Al terminar, Geeklog podrá ser accedido como http://www.dominio.algo/portal/ y solo restarán un par de ajustes más desde la recién instalada interfaz HTTP.

Procedimientos posteriores.

Hecho todo lo anterior, por motivos de seguridad, debe ser eliminado el directorio /var/www/html_geeklog/admin/install/.

rm -fr /var/www/html_geeklog/admin/install/

El usuario administrador predeterminado de Geeklog es admin y la clave de acceso es password. Ambos deben ser cambiados accediendo hacia http://www.dominio.algo/portal/admin/user.php?mode=edit&uid=2 y definiendo otro nombre de usuario y una nueva clave de acceso.

Problemas posteriores.

Si algo salió mal durante la instalación, es posible diagnosticarlo examinando las bitácoras de Apache, específicamente /var/log/httpd/error_log o bien la bitácora de Geeklog, es decir, /var/www/conf_geeklog/logs/error.log. Los errores más comunes son errores tipográficos en las rutas de directorios o archivos en el archivo de configuración, es decir, /var/www/conf_geeklog/config.php.

Más allá de la instalación y configuración básica.

Geeklog cuenta con una comunidad de usuarios y un foro de soporte gratuito. Para añadir funcionalidad, solo es necesario instalar componentes adicionales (plug-ins). La mayoría de estos son fáciles de instalar siguiendo las instrucciones del archivo README correspondiente. El licenciado Pablo Monroy Sánchez y un servidor, Joel Barrios Dueñas, nos ponemos a sus órdenes a través de este enlace para cualquier duda, comentario o consulta relacionada con este documento y Geeklog.



Más documentos del mismo autor (Joel Barrios) en este enlace.

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Última Edición: 29/05/2008, 09:06|Hits: 14,497 Ver la versión para imprimir