Mostrando entradas con la etiqueta kde. Mostrar todas las entradas
Mostrando entradas con la etiqueta kde. Mostrar todas las entradas
Auditar logs de accesos de servidores ISA utilizando LogParser
La semana pasada me tocó auditar accesos a Internet para buscar visitas a sitios Web maliciosos o inadecuados y detectar desvíos de seguridad. Para llevar a cabo esta tarea tuve que filtrar los logs de un servidor ISA que se utiliza como proxy para obtener información útil de acuerdo a diferentes criterios de búsqueda.

En este artículo voy a proveer información sobre cómo obtener de forma rápida y precisa esta información utilizando herramientas de línea de comandos. Estas herramientas permiten redirigir la salida a archivos de texto, y realizar el trabajo de forma eficiente y automágica.


Definiciones preliminares

ISA Server: Gateway integrado de seguridad perimetral que permite proteger el entorno de TI frente a las amenazas de Internet, además de proporcionar a los usuarios un acceso remoto seguro a las aplicaciones y datos corporativos (Fuente: Microsoft).

LogParser: LogParser es una herramienta de línea de comandos que provee consultas universales a archivos de texto tales como archivos de logs, archivos XML y CSV y fuentes de datos del sistema operativo Windows tales como logs de eventos, registry, el sistema de archivos y Active Directory (Fuente: Microsoft).

Bash: Programa cuya función consiste en interpretar órdenes. Está basado en la shell de Unix y es compatible con POSIX. Fue escrito para el proyecto GNU y es el intérprete de comandos por defecto en la mayoría de las distribuciones de Linux (Fuente: Wikipedia).


Filtrado de logs

Los logs de acceso de los servidores ISA generalmente se encuentran en la carpeta:

C:\Program Files\Microsoft ISA Server\ISALogs

Para obtener información útil de estos logs utilizaremos la herramienta LogParser provista por Microsoft de forma gratuita. LogParser toma una expresión SQL como parámetro en la línea de comandos, y muestra como resultado las líneas que contienen coincidencias para la misma. Utilizando esta herramienta es posible filtrar los logs de los servidores ISA para obtener información útil de forma resumida.

Al ejecutar LogParser desde el menú de inicio se abre una consola en el directorio donde se instaló y muestra la ayuda:

Microsoft (R) Log Parser Version 2.2.10
Copyright (C) 2004 Microsoft Corporation. All rights reserved.

Usage: LogParser [-i:] [-o:] |
file:[?param1=value1+...]
[] []
[-q[:ON|OFF]] [-e:] [-iw[:ON|OFF]]
[-stats[:ON|OFF]] [-saveDefaults] [-queryInfo]

LogParser -c -i: -o:
[] []
[] [-multiSite[:ON|OFF]]
[-q[:ON|OFF]] [-e:] [-iw[:ON|OFF]]
[-stats[:ON|OFF]] [-queryInfo]

-i: : one of IISW3C, NCSA, IIS, IISODBC, BIN, IISMSID,
HTTPERR, URLSCAN, CSV, TSV, W3C, XML, EVT, ETW,
NETMON, REG, ADS, TEXTLINE, TEXTWORD, FS, COM (if
omitted, will guess from the FROM clause)
-o: : one of CSV, TSV, XML, DATAGRID, CHART, SYSLOG,
NEUROVIEW, NAT, W3C, IIS, SQL, TPL, NULL (if omitted,
will guess from the INTO clause)
-q[:ON|OFF] : quiet mode; default is OFF
-e: : max # of parse errors before aborting; default is -1
(ignore all)
-iw[:ON|OFF] : ignore warnings; default is OFF
-stats[:ON|OFF] : display statistics after executing query; default is
ON
-c : use built-in conversion query
-multiSite[:ON|OFF] : send BIN conversion output to multiple files
depending on the SiteID value; default is OFF
-saveDefaults : save specified options as default values
-restoreDefaults : restore factory defaults
-queryInfo : display query processing information (does not
execute the query)


Examples:
LogParser "SELECT date, REVERSEDNS(c-ip) AS Client, COUNT(*) FROM file.log
WHERE sc-status<>200 GROUP BY date, Client" -e:10
LogParser file:myQuery.sql?myInput=C:\temp\ex*.log+myOutput=results.csv
LogParser -c -i:BIN -o:W3C file1.log file2.log "ComputerName IS NOT NULL"

Help:
-h GRAMMAR : SQL Language Grammar
-h FUNCTIONS [ ] : Functions Syntax
-h EXAMPLES : Example queries and commands
-h -i: : Help on
-h -o: : Help on
-h -c : Conversion help


Ejemplos de consultas típicas

El servidor ISA guarda cada acceso en un registro, el cual tiene una cantidad fija de campos. Por ejemplo para cada pedido: c-ip contiene la ip que lo realizó; date contiene la fecha; time la hora; r-host el nombre del servidor al cual se accedió; etc. Cada registro es una línea y cada campo se separa con un tabulador, de acuerdo al formato W3C.
Los logs del servidor ISA que me tocó auditar comienzan con la siguiente cabecera, que declara la versión del servidor y los nombres de los campos:

#Software: Microsoft(R) Internet Security and Acceleration Server 2000
#Version: 1.0
#Date: 2011-02-06 00:00:02
#Fields: c-ip cs-username c-agent sc-authenticated date time s-svcname s-computername cs-referred r-host r-ip r-port time-taken cs-bytes sc-bytes cs-protocol cs-transport s-operation cs-uri cs-mime-type s-object-source sc-status s-cache-info rule#1 rule#2

Al utilizar LogParser para filtrar logs de un servidor ISA, se debe indicar que el formato de entrada es W3C, y que los campos se separan con tab. Luego de estos parámetros opcionales (tipo de entrada y separador) se indica la consulta SQL que se desea realizar.
El archivo de log se pasa como parámetro dentro de la consulta SQL, puede ser un archivo local o un share. Además se puede utilizar asterisco para leer de múltiples archivos de log.
Debido a que el nombre de archivo no puede contener espacios, se deben reemplazar los mismos con '\u0020'.
Los nombres de los campos de los registros se obtienen directamente desde el archivo de log (en la 3er línea del archivo que se encuentra comentada con numeral). Es posible redireccionar la salida a un archivo utilizando el caracter '>' o desde la consulta SQL utilizando la orden "INTO".


Ver todos los sitios visitados por la IP 192.168.1.100:

C:\Program Files\Log Parser 2.2>Logparser -i:W3C -separator:'tab' "SELECT DISTINCT r-host AS Site FROM C:\Program\u0020Files\Microsoft\u0020ISA\u0020Server\ISALogs\*.log WHERE c-ip='192.168.1.100'"

El identificador DISTINCT delante del campo r-host se utiliza para que no repita resultados.


Ver todas las IP que ingresaron a facebook:

C:\Program Files\Log Parser 2.2>Logparser -i:W3C -separator:'tab' "SELECT DISTINCT c-ip AS IP, r-host AS URL FROM \\logserver\ISALogs\*.log WHERE r-host LIKE '%facebook.com%'"


Ver la cantidad de visitas por sitio:


C:\Program Files\Log Parser 2.2>Logparser -i:W3C -separator:'tab' "SELECT COUNT(*) AS Hits, r-host AS Site FROM \\logserver\ISALogs\*.log GROUP BY Site ORDER BY Hits DESC" > hits.txt

La orden COUNT(*) en conjunto con GROUP BY suman la cuenta para cada valor distinto del campo r-host. La orden ORDER BY en conjunto con DESC se utilizan para ordenar el resultado de forma descendente.


Ver las visitas que realizó la IP 192.168.1.50 entre la 1:00 AM y 2:00 AM:

C:\Program Files\Log Parser 2.2>Logparser -i:W3C -rtp:-1 -separator:'tab' "SELECT time AS Time, cs-uri AS URI FROM C:\Program\u0020Files\Microsoft\u0020ISA\u0020Server\ISALogs\*.log WHERE c-ip='192.168.1.50' AND (TO_TIME(time) BETWEEN TIMESTAMP('01:00:00','hh:mm:ss') AND TIMESTAMP('02:00:00','hh:mm:ss'))" > filtered_log.txt

Por defecto, LogParser muestra la salida paginada. La opción -rtp:-1 se utiliza para evitar esto y poder redireccionar la salida.


Ver los clientes del Proxy:


C:\Program Files\Log Parser 2.2>Logparser -i:W3C -separator:'tab' "SELECT c-ip as Client INTO clients.csv FROM C:\Program\u0020Files\Microsoft\u0020ISA\u0020Server\ISALogs\*.log GROUP BY Client ORDER BY Client" -o:CSV

En este caso se exporta la salida como un archivo CSV directamente en la consulta utilizando la orden "INTO". La opción -o:CSV se utiliza para indicarle a LoggParser que la salida se exporta a un archivo CSV.


Filtrado de logs utilizando bash

Si se dispone de acceso a una consola bash, es posible realizar esta misma tarea utilizando herramientas libres como grep, sed, awk, sort, etc. Está fuera del alcance de este artículo explicar el funcionamiento de cada una de estas herramientas. A continuación se muestra un ejemplo práctico.


Ver todos los sitios visitados por la IP 192.168.1.100:

$ time grep '192.168.1.100' WEBEXTD20120101.log | awk –F"\t" '{print $10}' | sort | uniq

Con grep se buscan todos los registros que contienen la dirección IP 192.168.1.100. Luego se utiliza awk para extraer la décima columna (separadas por tab), que corresponde con el campo r-host. Finalmente se ordena el resultado y se eliminan los registros repetidos.
Se utiliza el comando time para medir el tiempo que tarda en realizar el trabajo. Tanto utilizando LogParser como bash scripts los tiempos de ejecución son bajos.
Tips Slackware 13.1

Por qué elegí Slackware?

Luego de haber utilizado Ubuntu por 4 años finalmente me decidí por instalar una distribución GNU/Linux más estable y "espartana" (como diría un profe de la Universidad Nacional del Sur), aunque tuviera que resignar facilidad de uso y mantenimiento. No tengo nada en contra de Ubuntu, creo que es una distribución formidable, muy pero muy fácil de utilizar. Es más, creo firmemente que es mucho más fácil de utilizar que cualquier Windows. A cualquier persona que utiliza una computadora por primera vez le daría una distro basada en Ubuntu por su simplicidad. Pero esta facilidad de uso es lo que me "aburrió", todo es muy fácil y se pierde mucho control sobre lo que el sistema operativo hace (y se pierden muchas oportunidades para comprender y aprender como funciona el sistema operativo). Siempre me divertí más poniéndome el overol que haciendo un "apt-get install ...".
Respecto a la estabilidad, investigando durante mucho tiempo en foros y páginas de Internet descubrí que Slackware es considerada "la distribución de GNU/Linux más estable" y supuse que el mundo no debe estar equivocado por ser la distribución de GNU/Linux más antigua aún con vida.

Un poco de historia...

Mis primeras armas con GNU/Linux las hice utilizando una distro más que "espartana": DSL (abreviatura de Damn Small Linux). Por esa época utilizaba DSL versión 3.4 con un kernel Linux 2.4.26 y corría en un procesador AMD K6 II de 450 MHz (un sólo núcleo obviamente jeje) con unos increíbles 64 MB de memoria RAM. Esta distro ultra liviana, basada en Knoppix, no tenía manejador de paquetes, utilizaba el manejador de ventanas fluxbox, y tanto su "instalación" (estaba pensada para funcionar como live CD, no se recomendaba la instalación) como uso era para usuarios intrépidos. Aunque... si tienen un cacharro viejo tirado en la pieza pónganle un DSL y devuélvanlo a sus años dorados.
Abandoné DSL el día que compré mi máquina de escritorio actual y decidí pasarme a una distribución más moderna, en ese momento Ubuntu 6.04.

Instalando Slackware 13.1

Recuerdo cuando le comenté a demasiadovivo:
- Voy a instalar Slackware en mi PC.
A lo que él respondió:
- ¿Tenés ganas de meterte en problemas?
Durante un momento me acobardé un poco pero me mantuve firme en mi decisión y un sábado a las 2 de la mañana, luego de cumplir con mis obligaciones, instalé Slackware 13.1. Esta versión viene con el kernel de Linux 2.6.33.4, Xfce 4.6.1, KDE 4.4.3, muchas herramientas de desarrollo (Perl, Python, Ruby, Subversion, KDeveloper, etc.), una variedad de Web browsers (Konqueror, SeaMonkey, Firefox) y una colección de aplicaciones basadas en GTK+ (Pidgin, GIMP, GXine, XChat, etc.) entre lo más destacado. Información más detallada en http://www.slackware.org/announce/13.1.php.
La instalación es muy sencilla, la parte más complicada para un usuario inexperto es el particionamiento de los discos utilizando 'cfdisk', pero para aquellos dinosaurios como yo que instalaron Windows 98 una gran cantidad de veces y particionaban sus discos con 'fdisk'... es pan comido. Si tuvieron la oportunidad de instalar FreeBSD se darán cuenta que el instalador es muy similar, también el manejador de paquetes 'pkgtool' el cual utiliza archivos comprimidos tar. Una limitación que tiene el manejador de paquetes es que no resuelve dependencias, como lo hacen otros manejadores de paquetes (por ejemplo aptitude). Pueden encontrar ayuda oficial para instalar Slackware 13.1 en http://www.slackware.org/install/.

Veamos la instalación paso por paso:

1. Primero tenemos que conseguir un DVD de Slackware, bueno esto es fácil, ingresamos en http://www.slackware.org/getslack/torrents.php y descargamos el torrent de la imagen del DVD (es más practico que 6 CDs) y lo descargamos con nuestro cliente bit-torrent favorito (en mi caso fue transmission). Luego de quemar el DVD booteamos desde la unidad lectora de discos. Ingresamos al sistema como usuario 'root' (sin contraseña).

2. Esta es la parte más compleja de la instalación: crear las particiones. Para hacerlo de la forma más sencilla posible vamos a crear dos particiones: una partición para memoria swap (aproximadamente el doble del tamaño de la memoria RAM para la mayoría de los sistemas) y otra partición para el resto del sistema. Lo ideal es crear particiones separadas para los directorios /boot y /var (y posiblemente también una para /etc). No voy a explicar cómo utilizar 'cfdisk' porque sería muy extenso, pero pueden encontrar una guía en español en http://manual.sidux.com/es/part-cfdisk-es.htm.

3. Teniendo nuestras particiones, ejecutamos el comando 'setup'. Esto inicia el proceso de instalación interactivo que contiene las siguientes etapas: HELP, KEYMAP, ADDSWAP, TARGET, SOURCE, SELECT, INSTALL, CONFIGURE, PKGTOOL, EXIT.

  • KEYMAP: Nos permite elegir el mapa de teclado adecuado (en mi caso qwerty/es).

  • ADDSWAP: Indicamos que partición se utiliza como memoria de intercambio (el proceso es automático).

  • TARGET: Seleccionamos la partición donde instalar el sistema y formateamos con ext4.

  • SOURCE: Detecta el origen de la instalación (en este caso el DVD).

  • SELECT: Seleccionamos el software para instalar, debemos seleccionar todos (KDEI para instalar otros idiomas en KDE, lo que incluye el idioma español).

  • INSTALL: Instalamos seleccionando 'full'. Seleccionamos la instalación de lilo automática, el framebuffer de lilo 'auto' y el destino 'MBR'.

  • Se puede encontrar una guía detallada de la instalación en http://troesma.wordpress.com/2010/05/28/como-se-debe-instalar-slackware/.
Una vez finalizada la instalación reiniciamos la PC y nos topamos con lilo, el cual detectó automáticamente durante la instalación otros sistemas operativos instalados, e iniciamos Slackware. Nos logueamos como 'root' e iniciamos KDE mediante el comando 'startx'. Ya tenemos el sistema funcionando!
Lo que sigue a continuación es una lista de tips post-instalación que fui realizando para "tunear" el sistema de acuerdo a mis necesidades. Son configuraciones simples pero que, una vez hechas, me es imposible recordar cómo las hice, por eso decidí anotarlas y eso me motivó a escribir este artículo.

Agregar un nuevo usuario

Por razones de seguridad, no es conveniente correr el sistema como usuario 'root', por lo tanto lo primero que deberíamos hacer es crear un nuevo usuario. La forma más sencilla es utilizar el manejador de usuarios de KDE (también se puede utilizar el comando 'useradd', ver manual). Iniciamos KUser desde "K > Applications > System > User Manager". Luego utilizamos el botón 'Add', el resto es fácil. Una vez creado el nuevo usuario debemos agregarlo al archivo 'sudoers' para que pueda utilizar el comando 'sudo' y realice tareas de administración. Si no se desea que el usuario pueda utilizar 'sudo' se debe omitir este paso.
Otorgar 'sudo' al nuevo usuario 'emi':
    # visudo

    [Insert]
    emi ALL=(ALL) ALL

    [Esc]
    :wq
Si otorgamos 'sudo' es conveniente agregar las rutas '/usr/local/sbin', '/usr/sbin' y '/sbin' a la variable de entorno $PATH, para que bash encuentre los ejecutables de administración del sistema (por ejemplo 'cfdisk', 'dhclient', 'fsck', 'halt', 'ifconfig', 'ip', 'lilo', 'mkfs', 'mount', 'poweroff', 'reboot', 'umount', etc.):

1- Crear el archivo '.profile' en el directorio $HOME
2- Agregar los directorios a la variable $PATH:
    PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH

Cambiar locale

Para que se visualicen correctamente los acentos y 'ñ' en los nombres de archivo debemos cambiar el 'locale' que es el conjunto de reglas de lenguaje y culturales que se aplica en el sistema. Esto incluye el conjunto de caracteres. Para esto editamos el archivo '/etc/profile.d/lang.sh' de la siguiente forma:

Comentar la línea:
#export LANG=en_US

Descomentar la línea:
export LANG=en_US.UTF-8

Deshabilitar servidor Akonadi:

Akonadi es un servicio de manejo de información personal (PIM) incluido en KDE 4. Administra información como contactos de correo electrónico, notas, alarmas, etc. de forma centralizada en una base de datos MySQL. Este servicio puede consumir recursos como memoria, espacio en disco y CPU. Para mejorar el desempeño de KDE en general decidí deshabilitarlo. Si desinstalamos este paquete, aplicaciones como Kontact, KOrganizer, KMail, etc. dejan de funcionar. Por lo tanto no se debe desinstalar, para resolver esto debemos seleccionar nuevos recursos de almacenamiento de datos de KDE desde "K > System Settings > Advanced > KDE Resources". Por ejemplo se pueden utilizar archivos locales para almacenar datos de contactos. Para más información sobre Akonadi leer http://techbase.kde.org/Projects/PIM/Akonadi#Akonadi_FAQ.

Instalar paquetes

Slackbuilds.org es un repositorio de paquetes que no vienen incluidos en la versión oficial de Slackware. A pesar de no ser oficiales, son referenciados en el sitio oficial de Slackware ya que varios desarrolladores de Slackware también desarrollan scripts para slackbuilds.org. Cabe recordar que Slackware trabaja con paquetes tar comprimidos, por lo tanto en el sitio slackbuilds.org proveen scripts que crean los paquetes tar comprimidos a partir del código fuente del paquete que se desea instalar. Por lo tanto, si deseamos instalar un paquete que no está incluido en la versión oficial de Slackware debemos seguir los siguientes pasos (voy a utilizar OpenOffice.org como ejemplo):
    1. Buscar el script en slackbuilds.org, en este caso "openoffice".
    2. Descargar código fuente del paquete desde el sitio oficial del mismo (en la misma página de slackbuilds.org donde descargamos el script hay un link al fuente del paquete).
    3. Extraer el tarball descargado desde slackbuilds.org y editar el archivo .info si no coincide la versión del fuente descargado.
    4. Colocar el fuente (generalmente un .tar.gz) en la carpeta donde se encuentra el script .Slackbuild. Luego ejecutar el script, el mismo crea el paquete a partir del código fuente.
    5. Instalar el paquete creado en el directorio /tmp utilizando el comando 'installpkg'.
    6. Disfrutar! No es tan complicado como parece.

Personalizar lilo (bootloader)

Si deseamos personalizar lilo, por ejemplo cambiar el timeout, el orden de aparición de los OS o el bitmap, debemos:

1- Editar el archivo /etc/lilo.conf
2- Luego ejecutar lilo para que tome la nueva configuración:
    lilo -C /etc/lilo.conf

Instalar NVIDIA video driver

Para aquellos dueños de placas de video NVIDIA, los pasos son idénticos que para otra distro:
    1- Descargar driver desde www.nvidia.com
    2- Cerrar X (Logout desde KDE)
    3- chmod u+x NVIDIA.run
    4- sh NVIDIA.run
    5- startx
    6- K > Applications > Settings > NVIDIA X Server Settings
    7- Disfrutar!

Instalar mod_perl

Esto tuve que hacerlo para ejecutar Perl en modo cgi (o sea, servir páginas Web escritas en Perl):
    1- Instalar mod_perl utilizando el script de slackbuilds.org.
    2- Editar /etc/httpd/mod_perl.conf si es necesario.
    3- Agregar la siguiente línea en el archivo /etc/httpd/httpd.conf:
      Include /etc/httpd/mod_perl.conf

Iniciar firewall automáticamente

Slackware no utiliza "/etc/init.d/" sino que utiliza "/etc/rc.d/" para cargar demonios automáticamente. En mi caso necesito levantar mi firewall escrito con 'iptables' automáticamente cada vez que inicia el sistema. Para esto:

1- Crear bash script con las reglas de iptables
2- Crear un link simbólico al script en la carpeta /etc/rc.d/:
    ln -s /home/emi/firewall.sh /etc/rc.d/rc.firewall
Ojo con los permisos del archivo firewall.sh! El dueño debe ser 'root' y ni el grupo ni los otros deben tener permisos de lectura/escritura

Agregar etiqueta a una partición (sin formatear)

Acá fue cuando hice macanas, quería asignarle una etiqueta a una partición ext4 y (por no leer el manual completo) utilicé el comando 'mke2fs' con la opción -L lo cual borró la tabla de inodos perdiendo el contenido completo de la partición (como si hubiera formateado una partición NTFS). Afortunadamente, pude recuperar la información utilizando 'e2fsck' y aprendí a asignar una etiqueta sin formatear la partición utilizando el comando:
e2label /dev/sdb4 etiqueta

Personalizar atajos de teclado (multimedia)

Si tenemos un teclado con botones adicionales y queremos cambiar su comportamiento, podemos hacerlo desde:

K > Computer > System Settings > Keyboard & Mouse > Standard Keyboard Shortcuts

Instalar corrección ortográfica (aspell-es)

Para poder corregir la ortografía en idioma español es necesario instalar el diccionario español de GNU Aspell:

1- Descargamos el diccionario español desde: ftp://ftp.gnu.org/gnu/aspell/dict/0index.html.
2- Extraemos el contenido del tarball.
3- Instalamos el diccionario:
    ./configure
    make
    make install

Links

www.damnsmalllinux.org
www.slackbuilds.org
www.slackware.org
www.ubuntu.com
Error al iniciar kdm
Continuando con la lista de soluciones que empecé planteando en Problema -> Posible Solución, hoy les traigo una nueva solución.
Al no tener mucho tiempo para toquetear, hacía rato que no tenía problemas con mi debian, pero hoy toco volver a las andadas.
En realidad es un error que ya me había aparecido antes, pero que no documenté y por culpa de eso, me tocó investigar de nuevo.

Problema
El tema es que hoy enciendo la máquina y el maldito kdm me arroja el siguiente error:
no se puede abrir el archivo de tema @@@ToBeReplacedByDesktopBase@@@
sin cargar nada más, y con la única opción el apretar "Aceptar"... aca es donde uno dice "bueniiiiiiiiiisimo"....

El problema parece estar en el archivo que indica el tema a kdm, el cual se encuentra en /etc/default/kdm.d/, aunque en ningún momento toqué ese archivo (que en mi caso se llama 10_desktop-base)... reviso que las carpetas que referencia dicho archivo estén en su lugar y tengan los permisos adecuados y todo parece estar bien =S

Solución
La solución que encuentré en la lista de bugs de ubuntu es modificar la configuración base de temas de kde. Para esto, editamos el archivo /etc/kde4/kdm/kdmrc (o /etc/kde3/kdm/kdmrc en kde3) y buscamos la sección [X-*-Greeter]. Ahí comentamos la línea:
Theme=@@@ToBeReplacedByDesktopBase@@@
y en su lugar ponemos un Theme que exista (puede ser el mismo que nos figuraba en /etc/default/kdm.d/10_desktop-base). El ejemplo en mi caso quedó así:
Theme=/usr/share/apps/kdm/themes/moreblue-orbit
WALLPAPER=/usr/share/apps/kdm/themes/moreblue-orbit/background.png
Ahora reiniciamos kdm y debería funcionar (si es que el Theme y el WALLPAPER existen claro...).

Si alguien tiene alguna pista de por qué falló la interpretación del archivo /etc/default/kdm.d/ le estaré agradecido me lo explique =)