  Instalacin y configuracin de un servidor de IRC
  Diego Berrueta Muoz, berrueta@geocities.com y Jos Alfredo
  Osl Posadas, aosle@pinon.ccu.uniovi.es
  Julio 1998

  Este documento describe los pasos y el software necesarios para crear
  un servidor de IRC con Linux: el demonio de IRC, el bot de gestin del
  servidor y un programa cliente de IRC.
  ______________________________________________________________________

  ndice general


  1. Nota de los autores

  2. Introduccin

     2.1 Qu es el IRC?
     2.2 Qu es un servidor de IRC?
     2.3 Qu necesita un servidor de IRC?
     2.4 Comandos bsicos de IRC
     2.5 Ataques en el IRC

  3. Demonio de IRC:

     3.1 Funcin de un demonio
     3.2 Descripcin de
     3.3 Obtencin e instalacin
     3.4 Configuracin previa a la compilacin
     3.5 Compilacin
     3.6 El fichero
     3.7 Ejecucin del demonio

  4. El

     4.1 Funcin de un
     4.2 (IT
     4.3 Instalacin
     4.4 Edicin del cdigo fuente
     4.5 Compilacin
     4.6 Configuracin
     4.7 Ejecucin

  5. Cliente de IRC

     5.1 Funcin de un cliente de IRC
     5.2 Descripcin de
     5.3 Obtencin e instalacin
     5.4 Configuracin
     5.5 Ejecucin

  6. Anexo: El INSFLUG



  ______________________________________________________________________

  1.  Nota de los autores


  Este documento es el resultado de un trabajo realizado para el curso
  "Administracin de un sistema UNIX con Linux", impartido en el verano
  de 1998 en la Escuela Universitaria de Ingeniera Tcnica en
  Informtica de Oviedo (EUITIO).


  Los autores quieren aclarar que no son, ni pretenden ser, expertos en
  IRC. Por eso, este documento puede contener errores. Esperamos que
  sepan perdonarlos y nos los comuniquen.

  Para obtener ms informacin sobre Linux, no olvide visitar la pgina
  web del Proyecto Lucas, (http://lucas.ctv.es/) donde se encargan de
  traducir las guas de Linux al castellano, y la pgina de INSFLUG
  (http://www.insflug.org/), que coordina la traduccin de los
  documentos HOWTO y FAQ).


  2.  Introduccin



  2.1.  Qu es el IRC?


  El IRC (Internet Relay Chat) surgi como una ampliacin del programa
  talk, tratando de superar sus limitaciones. Se trata de un sistema de
  conversacin en tiempo real a travs de redes de ordenadores y, por
  supuesto, de Internet. Las principales diferencias con el talk son las
  siguientes:


    Incorpora un protocolo mucho ms elaborado, independiente de la
     plataforma.

    Posibilidad de conversaciones en las que intervengan ms de dos
     participantes: el lmite depende slo de las posibilidades de los
     servidores.

    Organizacin de las charlas en forma de mltiples canales: por
     establecer un smil, los canales son salones donde se dan cita un
     cierto nmero de usuarios. Esta posibilidad se aprovecha
     generalmente para realizar canales temticos, que son el punto de
     encuentro de personas con inquietudes parecidas.

    Posibilidad de conectar varias redes, para poner en comunicacin un
     gran nmero de usuarios.

    Los usuarios pueden ocultar su identidad, lo que facilita
     conversaciones ms espontneas, pero tambin puede crear riesgos de
     seguridad.

  El IRC naci hace diez aos, cuando el finlands Jarkko Oikarinen
  escribi el primer programa para poder efectuar conversaciones con una
  estructura cliente-servidor. Su expansin fue muy rpida, puesto que
  pronto se implant en la red nacional finlandesa (FUNET), y
  posteriormente en Noruega, Suiza y Estados Unidos.

  La primera gran red de IRC fue EFNet (1990), y despus surgieron otras
  como Undernet (http://www.undernet.org), IRCNet, DALNet, StarChat,
  StarLink, NewLet. Tambin existen redes para las personas de habla
  hispana, como RedLatina, IRC-Hispano (http://www.irc-hispano.org) o la
  ms reciente, Esnet (http://www.esnet.org).  Algunas de estas redes
  son de grandes magnitudes: por ejemplo, en Undernet existen ms de
  diez mil canales.


  2.2.  Qu es un servidor de IRC?


  Como se ha comentado, el IRC se basa en redes de ordenadores. En estas
  redes, al menos un de los ordenadores trabaja como servidor, y sus
  funciones son recoger todos los mensajes enviados por los usuarios y
  reenviarlos. Por tanto, los mensajes no son enviados directamente del
  emisor al destinatario, sino que pasan por el servidor.

  Esta filosofa de funcionamiento permite al administrador del servidor
  ejercer un cierto control: por ejemplo, puede impedir el acceso a
  determinados usuarios, ampliar las posibilidades de conversacin
  comunicando varios servidores o limitar las posibilidades de los
  usuarios.  Adems, hace que todos los usuarios se conecten, en
  principio, en igualdad de condiciones, excepto el administrador, por
  supuesto.


  2.3.  Qu necesita un servidor de IRC?


  Para que un sistema UNIX pueda hacer las funciones de un servidor de
  IRC, es suficiente con lo siguiente:


    Tener acceso a la red.

    Instalar el software apropiado.

  Dando por supuesto el primer apartado, vamos a puntualizar ms en el
  segundo. Qu tipo de software se requiere? En principio, para el
  establecimiento de un servicio bsico, es suficiente con ejecutar un
  demonio de IRC, que se encargar de las tareas descritas en el
  apartado anterior. Sin embargo, esto proporcionar un servicio
  precario: para un gestin eficiente y automtica de la red de IRC, se
  hace necesario un bot o script, que se encargue de la gestin de
  usuarios y canales sin intervencin por parte del administrador.

  Con el fin de poder monitorizar y administrar la red, es conveniente
  que el servidor disponga tambin de un software cliente de IRC.


  2.4.  Comandos bsicos de IRC


  Antes de describir los comandos, es necesario conocer cul es, a
  grandes rasgos, la filosofa del funcionamiento del IRC. Como ya ha
  quedado dicho, las conversaciones se organizan en canales, que a su
  vez se identifican por un nombre (generalmente comienza con el smbolo
  &), y un topic, que es una breve descripcin de los temas a los que
  est dedicado el canal.

  Para poder dar coherencia a las conversaciones, los usuarios tambin
  estn identificados por un nombre, que se llama nick o apodo.  Con el
  fin de poder mostrar una informacin ms explcita sobre el usuario,
  muchas redes exigen introducir el nombre completo y direccin de
  correo electrnico para poder acceder; sin embargo, la mayora de
  usuarios aprovecha estos campos para introducir algn comentario ms o
  menos gracioso.

  Cuando un usuario est dentro de un canal, cualquier texto que escriba
  y que no sea reconocido como un comando, ser enviado a todos los
  dems usuarios que forman parte del canal, y se indicar el apodo del
  usuario emisor. De la misma forma, la recepcin de mensajes es
  automtica; simplemente aparecen en la pantalla cuando son enviados.

  Dentro de un canal existe al menos un usuario que tiene ms
  privilegios que el resto. Se conoce como operador (Op), y tiene, entre
  otros, el poder de expulsar a otros usuarios del canal.

  Un usuario puede estar presente en varios canales, aunque para poder
  disfrutar plenamente de esta posibilidad, es necesario tener un
  software cliente potente y manejable.

  Los comandos que se van a describir ahora son los ms elementales que
  debe conocer un usuario para participar en las conversaciones. Estos
  comandos son enviados por el cliente al servidor, quien se encarga de
  reaccionar de forma adecuada ante ellos.


    /HELP: permite obtener ayuda.

    /JOIN &nombre_canal, /CHANNEL &nombre_canal:

     introduce al usuario en el canal especificado. Si este canal no
     existe, se crea (la gestin dinmica de canales es otra de las
     posibilidades del IRC), y adems confiere al usuario el privilegio
     de ser el operador del canal.

    /WHO nombre_canal: muestra una lista de los usuarios del IRC. Si se
     indica un nombre de canal, restringe el listado a las personas que
     estn presentes en ese canal.

    /WHOIS nick: muestra ms informacin sobre un usuario del que
     conocemos su nick. Sin embargo, por las razones ya comentadas, la
     informacin no suele ser cierta.

    /TOPIC cadena: cambia el topic o descripcin del canal (si tenemos
     privilegios para poder hacerlo).

    /NICK nuevo_nick: permite cambiar nuestro nick o apodo.

    /MSG nick mensaje: enva un mensaje personal a un usuario
     determinado, sin que los dems usuarios lo vean en su pantalla.

    /SIGNOFF, /SI, /BYE, /EXIT, /QUIT: cualquiera de ellos sirve para
     abandonar la conversacin. Si se aade un texto detrs del comando,
     ser enviado como mensaje de despedida.

    /USERS: muestra una lista de todos los usuarios conectados al
     servidor.

    /AWAY: se utiliza para anunciar que, sin abandonar el servidor,
     vamos a estar unos minutos sin atender a la conversacin.

    /QUERY nick: invita al usuario indicado a participar en una
     conversacin privada. Si el receptor responde con un comando
     similar, el dilogo particular dar comienzo.

  Los siguientes comandos los utilizan exclusivamente los operadores:


    /OPER nick password: da al usuario indicado los privilegios de
     operador (si la contrasea es vlida).

    /KICK nick: expulsa al usuario indicado del servidor.

    /QUOTE comando: permite enviar comandos al servidor. Se puede
     utilizar para matar el demonio o realizar operaciones
     privilegiadas.

  Para una lista ms completa de los posibles comandos de IRC, se puede
  acudir a ftp://ftp.rediris.es/docs/rfc/14xx/1459.





  2.5.  Ataques en el IRC


  Como veremos ms adelante, tanto el demonio de IRC como el bot de
  gestin de los canales dedican una parte importante de su
  funcionalidad a impedir la entrada de algunos usuario en las redes de
  IRC.  Por qu es tan importante poder hacer esto?

  La razn es que existen usuarios con grandes conocimientos sobre el
  IRC, y que muestran una actitud beligerante respecto a las ms
  desprevenidos, los usuarios noveles. Aprovechndose de las grietas del
  sistema, son capaces de expulsar a otros usuarios e incluso colgar
  mquinas remotas, mediante diversos tipos de estrategias:


    Flood: consiste en requerir mucha informacin de un usuario de
     manera continua (mediante version, whois, ping, dcc, etc.), con el
     objeto de que la mquina atacada devuelva todas las peticiones,
     llegando a poner en peligro de saturacin al servidor, que
     proceder a expulsarla.

    Floodnets: son grupos de usuarios coordinados mediante scripts, que
     consiguen hacer el trabajo de flood ms efectivo.

    Botnets: se trata de una versin automatizada (mediante scripts)
     del flood.

    ICMP: este tipo de ataques son mucho ms sofisticados y malignos.
     Como dato, baste decir que existe un script escrito en slo cinco
     lneas de perl y capaz de bloquear una mquina Windows remota.

    Smurf: consiste en enviar un ping a la direccin broadcast de una
     gran red, con la identidad del remitente falseada para que apunte a
     la persona atacada. Las respuestas de las mquinas de la red irn
     directamente a esta persona, rompindole la conexin.

  Al crear un servidor de IRC, se debe poner mucha atencin en la
  prevencin de ataques. Los ataques por saturacin son relativamente
  fciles de evitar mediante un bot capaz de detectarlos sobre la marcha
  y anularlos.  Sin embargo, contra los ataques ICMP, la mejor manera de
  defenderse es utilizar la ltima versin del ncleo y los parches.

  Para dificultar an ms el seguimiento de los atacantes, stos suelen
  emplear bouncers, que son demonios colocados en una tercera mquina y
  que se limitan a redirigir todos los paquetes que les lleguen.  De
  esta forma, el pirata puede actuar sin temor a que descubran su IP.

  Se puede consultar ms informacin sobre estos temas (ataques,
  defensas y monitorizacin) en las siguientes direcciones:
  http://www.irchelp.org/irchelp/nuke/ y
  http://www.esi.us.es/~roman/tacticas.html.


  3.  Demonio de IRC: ircd



  3.1.  Funcin de un demonio ircd


  En una arquitectura centralizada como es la arquitectura cliente-
  servidor se distinguen precisamente estas dos partes: cliente, que es
  el que demanda un servicio; y el servidor, que es el que lo oferta. En
  la mquina servidor coexistirn tantos programas esperando a la
  escucha de nuevas peticiones como servicios diferentes se oferten.

  Estos programas, denominados demonios (daemons en la terminologa
  inglesa) son programas que estn en ejecucin, cargados en memoria, y
  que estn encargados de responder a las peticiones que hacen los
  programas clientes, que generalmente estn ubicados en otras mquinas,
  pero que pueden ejecutarse tambin en la propia mquina servidor. Por
  tanto, siempre hay una correspondencia directa entre el programa o
  demonio del servidor y el programa cliente de la mquina cliente.

  En nuestro caso particular de IRC, el servidor ser la mquina que
  ejecute el demonio ircd y los clientes sern los programas que los
  usuarios utilicen para engancharse a este servidor.


  3.2.  Descripcin de ircd-hybrid


  A la hora de instalar un servidor de IRC hay que elegir un demonio de
  ircd. Existen algunos como el irdu, utilizado en la red Undernet, o el
  ms bsico, ircd, sin modificacin alguna.  Pero nosotros hemos
  escogido el ircd-hybrid versin 5.2p1 por ser el ms completo. Es el
  usado en la red Efnet.


  3.3.  Obtencin e instalacin


  Algunas distribuciones como Debian incluyen este software entre sus
  paquetes bsicos. Si utilizamos otra distribucin, se puede recurrir
  al FTP o contactar con sus autores en la direccin ircd-
  hybrid@vol.com.

  El primer paso es descomprimir el paquete con el comando:



       tar xvzf ircd.tar.gz




  Los ficheros descomprimidos los alojaremos en el directorio
  /usr/src/ircd-hybrid-5.2p1/.

  Algunos de los ficheros ms importantes son:


    INSTALL: describe los pasos a realizar para la instalacin.

    README.FIRST, README.hybrid, README.small_nets: como siempre,
     conviene leerlos antes de proceder a la instalacin.

    Opers.txt: describe los comandos para el operador del servidor IRC.

    Doc/: este directorio contiene documentacin sobre IRC.


  3.4.  Configuracin previa a la compilacin


  Como sugiere la documentacin, es preciso revisar algunos ficheros
  donde se definen varios parmetros, por lo que ser necesario compilar
  el programa.  Sin embargo, el primer paso es adaptar los ficheros de
  configuracin y compilacin a nuestro sistema. Esto lo haremos
  ejecutando el script ./configure.


  A continuacin, editaremos parte del cdigo fuente (por motivos de
  optimizacin): puesto que nuestra red no va a tener las pretensiones
  de afluencia de usuarios que tiene Efnet, acortaremos un poco los
  recursos reservados por el ircd para que consuma menos memoria.

  El primer fichero que cambiaremos ser include/config.h, que define
  muchas de las directrices de comportamiento del servidor.
  Modificaremos dos lneas define de esta forma:



       #define HARD_FDLIMIT    256
       #define INIT_MAXCLIENTS 150




  Tambin quitaremos la lnea



       #define DO_IDENTD




  para que no chequee constantemente la identidad de todo aquel que
  entre, ralentizando los accesos al servidor.

  El fichero src/list.c define el tamao de algunas tablas mediante
  smbolos del preprocesador. Pondremos el valor 64 a las variables
  LINK_PREALLOCATE y CLIENTS_PREALLOCATE, lo que es suficiente para una
  red donde no se prevee un acceso mayor a 60 usuarios.

  El ltimo paso antes de la compilacin es editar el fichero Makefile
  resultante de ejecutar el script ./configure, para que la lnea que
  especifica los parmetros que usar el compilador gcc quede de la
  siguiente forma:



       # Default CFLAGS
       CFLAGS= -g -O2 -DCPU=586 -m486




  Los dos ltimos parmetros son opcionales, y sirven para optimizar el
  cdigo generado para mquinas Pentium/AMD.


  3.5.  Compilacin


  Una vez hechos todos los ajustes pertinentes, se puede proceder a la
  compilacin propiamente dicha, con el comando:



       make




  La compilacin transcurrir durante unos minutos, tras los cuales, si
  no se ha producido ningn error, slo faltar crear el directorio
  /usr/local/ircd/, donde se instalarn los ficheros ejecutables gracias
  a la orden:



       make install





  3.6.  El fichero ircd.conf


  Ahora se configura el servidor de IRC. Esto se hace editando el
  fichero /usr/local/ircd/ircd.conf, que se estructura en diferentes
  lneas, identificadas con una letra, y que contienen parmetros
  separados por el signo ':'. Algunas de las lneas ms importantes son:


    A: informacin sobre los administradores:


     1. Compaa

     2. Localizacin

     3. Direccin de contacto


    M: informacin sobre el servidor:


     1. Nombre del host

     2. Direccin IP (opcional)

     3. Nombre del servidor IRC

     4. Puerto (generalmente, 6667).


    K: restricciones de acceso a usuarios o redes completas:


     1. Nombre del host.

     2. Horario.

     3. Nombre de usuario.


    C y N: conexiones a otros servidores de IRC.

    R: establece restricciones a travs de un programa externo de
     validacin.

    D: otra forma de impedir conexiones a redes enteras, mostrando un
     comentario.

    E: excepciones a la lnea K.

    F: super-excepcin (similar a la anterior, pero se salta los
     lmites de clases de usuarios).


    Y: define una clase de usuario:


     1. Nmero de clase.

     2. Frecuencia de ping (segundos).

     3. Usuarios por IP.

     4. Nmero mximo de enlaces.

     5. Tamao de la cola de envo.


    I: permite el acceso a algunas mquinas:


     1. Dominio o direccin IP.

     2. Password del cliente.

     3. No documentado (generalmente '*').

     4. No documentado.

     5. Nmero de clase asociada.


    o: define operadores locales (recomendado):


     1. usuario@host.

     2. Clave encriptada.

     3. Nick del operador.

     4. No documentado (generalmente 0).

     5. No documentado (generalmente 0).


    O: define operadores globales.

    P: configura puertos adicionales.

  Tras las modificaciones oportunas, nuestro fichero ircd.conf es:



       M:maquina.euitio.uniovi.es:156.35.98.138:IRC EUITIO:6667
       A:Universidad de Oviedo EUITIO:Asturias:SysAdm <root@maquina.euitio.uniovi.es>
       Y:0:90:3:2:100000
       Y:1:90:3:20:100000
       I:*.euitio.uniovi.es::*::1
       I:156.35.53.*::*::1
       Y:3:90:1:100:100000
       I:NOMATCH::*@*PPP*::3
       I:NOMATCH::*@*slip*::3
       o:root@maquina.euitio.uniovi.es:mAJif8plpvVls:Operador:0:0
       # Fin del fichero
       # No especificamos nada en las lneas
       # - C, N, L y N: porque no nos conectamos a ningn otro servidor
       # - K, R, D, E y F: porque no establecemos restricciones tan fuertes
       # - P: porque no tenemos ms puertos

  Nota: para obtener el campo clave encriptada de la lnea o, hay que
  utilizar la herramienta mkpasswd, ubicada en el directorio tools, que
  toma una cadena de texto y la devuelve encriptada.

  Podemos verificar la correcta sintaxis del fichero de configuracin
  ircd.conf mediante la utilizacin de la herramienta tools/chkconf.

  Tambin podemos modificar el fichero ircd.motd para establecer el
  mensaje del da que aparecer a los usuarios que establezcan contacto
  con el servidor.


  3.7.  Ejecucin del demonio


  Por motivos de seguridad, no es posible lanzar el demonio como root,
  as que, o bien se lanza a mano como usuario irc, simplemente con:



       /usr/local/ircd/ircd




  o aadiendo la siguiente lnea en el fichero /etc/inetd.conf:



       ircd stream tcp wait irc /etc/ircd ircd -i




  para que arranque automticamente cada vez que se inicie el equipo
  servidor.  Sin embargo, este segundo mtodo no lo hemos podido
  confirmar porque, aparentemente, no ha funcionado.



  4.  El bot  de gestin del servidor



  4.1.  Funcin de un bot  de gestin del servidor


  La funcin de un bot o script de gestin del servidor es ampliar las
  posibilidades del IRC, y a la vez permitir un cierto control sobre los
  usuarios. El bot se introduce como un usuario ms, pero adquiere el
  poder del operador, lo que le permite administrar de manera eficiente
  los canales. Entre sus posibilidades estn:


    Envo de mensajes peridicos a ciertos canales.

    Impedir la entrada de usuarios no deseados.

    Reconocer a los administradores del servidor y cederles el poder.

    Aumentar la seguridad general del servidor.

    Impedir que los usuarios puedan expulsarse entre ellos.

  Existen multitud de bots disponibles. Entre los ms importantes,
  podemos destacar:
    Eggdrop: posiblemente el ms conocido, pero tambin el ms complejo
     de instalar y mantener. Requiere TCL.

    Uworld.

    Cservice.

    Argobot.


  4.2.  Argobot


  El Argobot es un bot relativamente sencillo escrito por el espaol
  Jess Cea Avin (http://www.argo.es/~jcea), aunque algunas grandes
  redes hispanas de IRC estn adoptndolo. Soporta todas las
  caractersticas antes enunciadas, pero sin profundizar en ellas, de
  forma que no resulta tan grande y complejo como Eggdrop. Como ventaja
  aadida, ocupa muy poca memoria y es muy eficiente. Es un bot
  multicanal capaz de:


    Proteger los modos de un canal.

    Dar y quitar los privilegios de operador de forma manual y
     automtica.

    Enviar mensajes (notices) a los usuarios recin llegados a un
     canal.

    Controlar el acceso y configuracin de modos y permisos
     independientemente para cada canal.

    Acceder a redes que exigen claves.

  Otras caractersticas del Argobot son:


    Se distribuye con el cdigo fuente completo (escrito en lenguaje
     C), y que adems puede compilarse bajo UNIX o en plataformas
     Windows.

    Utiliza un fichero de configuracin.

    Lleva registros (ficheros log) de toda la actividad que se produce
     en el servidor.

    Puede reconfigurarse sin necesidad de detener su actividad, es
     decir, puede modificarse su configuracin y cargar de nuevo el bot
     sin que los usuarios adviertan ningn cambio ni interrupcin del
     servicio.


  4.3.  Instalacin


  El Argobot se puede conseguir en la pgina web de su creador
  (http://www.argo.es/~jcea/irc/argobot.htm). Existen multitud de
  versiones, algunas desarrolladas especficamente para alguna gran red,
  y adems se pueden conseguir una veintena de parches que corrigen
  algunos defectos y aaden nuevas caractersticas.

  Si optamos por obtener el Argobot por Internet, descubriremos que
  apenas incluye unos pocos ficheros (cdigo fuente C), y como nica
  documentacin un fichero README muy breve. Para paliar esta
  deficiencia, su autor a puesto toda la documentacin disponible a
  travs de Internet, en forma de pginas web. Es necesario, por tanto,
  descargar estas pginas y leerlas detenidamente.

  El Argobot se suministra en forma de un fichero .tgz, que una vez
  descomprimido (en nuestro caso, en el directorio /usr/src/argobot/) da
  lugar a cuatro ficheros:


    argobot.c: fichero principal del cdigo fuente.

    argo_parser.c: cdigo fuente que interpreta el fichero de
     configuracin.

    argobot.conf: fichero de configuracin.

    argobot.log: mantiene un registro de los comandos enviados al bot.

  Es importante comprobar que este ltimo fichero se ha creado
  realmente.  Debido a algunas configuraciones de tar, es posible que no
  se genere este fichero (porque est vaco), lo que provocar errores
  al intentar ejecutar el Argobot. En este caso, es necesario crear el
  fichero manualmente (con la orden touch, por ejemplo), y darle los
  permisos apropiados.

  Nota: si queremos utilizar una de las caractersticas ms avanzadas
  del Argobot, como es la propagacin de lneas K (slo tiene sentido en
  redes de varios servidores), ser necesario seguir las instrucciones
  relativas a los permisos y el fichero ircd.conf.


  4.4.  Edicin del cdigo fuente


  Antes de compilar, es conveniente comprobar que el cdigo fuente esta
  bien adaptado a nuestro sistema. Las modificaciones que debemos hacer
  dependen de la forma en la que vamos a ejecutar el bot:


    Si vamos a ejecutar el bot como root (es el mtodo recomendado),
     nos aseguraremos de que est definido SEGURIDAD (con la sentencia
     #define SEGURIDAD), y que las macros UID y GID tienen valores
     apropiados. Si adems vamos a hacer un CHROOT (que es una medida
     adicional de seguridad), definiremos el directorio que debe tomar
     como raz con la sentencia #define CHROOT <directorio>.

    Si vamos a ejecutar el bot como un usuario distinto a root, debemos
     eliminar el smbolo SEGURIDAD (con la sentencia #undef SEGURIDAD).

  Adems de estas modificaciones, podemos definir el smbolo VERBOSE
  para que se impriman en la pantalla todos los mensajes que el servidor
  enva al Argobot. Otro smbolo interesante es CONTROL_FLOOD, que por
  defecto est activado, pero que deberemos eliminar si el nodo al que
  conectamos est preparado para controlar los ataques por flood.


  4.5.  Compilacin


  Como ya se ha indicado, el Argobot puede ser compilado bajo mltiples
  plataformas. En Linux, es suficiente con hacer:






  gcc -Wall -g argobot.c -o argobot
  chown root argobot
  chgrp root argobot




  La primera instruccin realiza la compilacin, generando el fichero
  argobot. Con las dos siguientes, establecemos los propietarios de este
  fichero.


  4.6.  Configuracin


  La tarea de configuracin se limita al fichero argobot.conf, aunque
  tambin es necesario crear una nueva cuenta de usuario para el
  operador del servidor IRC.

  El fichero argobot.conf es un fichero de texto que contiene lneas con
  comandos. Al hacer la instalacin, se genera un fichero de ejemplo,
  pero lo ms conveniente es modificarlo para adaptarlo a nuestras
  necesidades. Los comandos son:


    IRCnick <nick>: indica cul es el nick que debe emplear el bot para
     identificarse como operador ante el nodo IRC.

    IRCpasswd <password>: complementa al comando anterior, indicando la
     clave necesaria para adquirir los privilegios de operador.

    nick <nick>: especifica el nick bajo el que aparecer el bot a los
     usuarios.

    server <servidor>: sirve para indicar el servidor a que va a
     conectarse.

    port <puerto>: indica el puerto al que se va a conectar
     (generalmente, el 6667).

    passwd <password>: clave que ser enviada al servidor al principio
     de la conexin, con lo que se podr acceder a otras redes que
     necesiten claves.

    away <mensaje>: mensaje que se muestra a los usuarios al entrar.

    nick_collide <mensaje>: mensaje enviado a aquellos usuarios que
     estn utilizando el nick indicado en el comando nick.
     Inmediatamente despus, se les expulsar mediante un kick.

    umbral_kline <valor>: indica cuntos intentos de conexin se
     permitirn antes de poner una lnea k local. El valor ms corriente
     es cinco. Esto es una medida de proteccin contra los usuarios que
     tengan una actitud sospechosa.

    timeout_klines <valor>: indica cuntos segundos permanecer activa
     una lnea k local. El valor ms aconsejable es en torno a 900 (es
     decir, 15 minutos).

    timeout_whowas <valor>: indica cada cuntos segundos hay que
     comprobar la presencia de clones (usuarios que estn presentes bajo
     varios nicks, lo que suele ser sntoma de actividades peligrosas).
     Es conveniente un valor en torno a cinco.

    timer <offset> <periodo> <comando>: se utiliza para enviar comandos
     peridicos al servidor de IRC, que se repetirn cada cierto nmero
     de segundos. El offset indica el retraso del primer envo.

    set <alias> <mscara> [clave]: define un usuario. El nombre de
     referencia (interno al Argobot ser el alias, y se aplicar a aquel
     usuario que satisfaga las condiciones de la mscara, que tiene la
     forma nick!usuario@dominio (se admiten comodines).

    group <nombre_grupo> <alias> [<alias>...]: define un grupo de
     usuarios, cuyo nombre ser el indicado, y al que pertenecern los
     usuarios indicados a continuacin.

    join <canal> [clave]: indica al bot que debe gestionar el canal
     indicado, entrando con la clave proporcionada, que es opcional. Si
     utilizamos la clave GOD, se forzar la entrada del bot. NOTA: dado
     que el carcter '#' se emplea para indicar comentarios, no debe
     escribirse en el campo canal. Por tanto, si escribimos linux,
     estamos refirindonos al canal #linux.

  Puede haber tantos comandos join como sean necesarios. Para cada uno
  de ellos, se pueden indicar opciones especficas para el canal,
  mediante los siguientes comandos:


    autoop <grupo>: cualquier usuario del grupo indicado ser
     automticamente dotado de los privilegios de operador cuando entre
     en el canal.

    privil <grupo>: declara privilegiados a los miembros del grupo
     indicado, lo que les permitir enviar comandos al bot.

    mode_default <modos>: indica el modo por defecto del canal.

    mode_disallow <modos>: prohibe algunos modos en el canal.

    log <fichero>: almacena toda la actividad del canal en un fichero.
     Se incluyen marcas temporales cada diez minutos.

    notice <texto>: indica un mensaje que ser enviado a todos los
     usuarios que entren en el canal.

    allow_any_ban: permite a los operadores del canal hacer
     prcticamente todo, lo que no es muy aconsejable.

  Para nuestro sistema, el fichero argobot.conf es el siguiente:






















  #
  # Parmetros globales
  #

  # Nick utilizado a la hora de identificarse como IRCop, as como
  # para el WHOIS
  IRCnick ArgoBot

  # Password correspondiente al nick anterior
  IRCpasswd miclave
  # Nick bajo el cual debe aparecer el bot
  nick _ArgoBOT
  passwd miclave

  # Nombre del dominio al que se va a conectar el bot
  server maquina.euitio.uniovi.es
  port 6667

  # Mensaje que aparece en el away del bot
  away Bot de control de maquina.euitio.uniovi.es. No respondemos \
  de los fallos.

  # Mensaje enviado con el KILL a cualquier usuario que est utilizando el
  # nick definido en el comando NICK anterior
  nick_collide Escoge otro Nick, por favor

  # Las siguientes lneas configuran distintos aspectos de la seguridad
  umbral_kline 5  # Mximo nmero de intentos (desconectado)
  timeout_klines 15  # 15 minutos
  timeout_whowas 5 # Tiempo entre whowas

  #
  #
  # Grupos de usuarios
  #
  #

  # Define el grupo de usuarios al que pertenecen todos
  set todos *!*@*      # Comodines
  group todos todos

  # Define el grupo de IRCops
  set diego *!diego@maquina.euitio.uniovi.es
  set alfredo *!alfredo@maquina.euitio.uniovi.es
  group IRCops diego alfredo

  # Define el grupo de proveedores
  group proveedores diego alfredo

  # Canal ayuda-esnet
  group ayuda-esnet diego alfredo

  #
  #
  # Canales
  #
  #

  join linux GOD
  autoop IRCops
  mode_default ntm
  mode_disallow silpko
  notice Canal dedicado a los amantes del Linux. \
  Prohibido a Bill Gates.
  timer 60 60 privmsg #linux :Mensaje enviado al canal linux de forma \
  automtica
  timer 60 9999 topic #linux :Canal para los autenticos entendidos en \
  informtica y sistemas operativos.

  # Pone un modo para reducir el consumo de ancho de banda
  timer 60 600 mode _argobot :+d





  4.7.  Ejecucin


  Para ejecutar el bot, basta con escribir (preferiblemente como root):



       cd /usr/src/argobot
       ./argobot




  Si iniciamos Argobot de esta manera, imprimir por la pantalla toda la
  actividad que registre (como entradas y salidas de usuarios), lo que
  puede ser conveniente por motivos de depuracin, pero resulta
  innecesario durante una ejecucin normal. Por tanto, es muy frecuente
  ejecutar el Argobot en segundo plano y redireccionando la salida:



       nohup argobot &




  Esto nos evitar ver todos los mensajes por la pantalla, pero los
  enviar a un fichero llamado nohup.out situado en el directorio
  actual. El problema es que este fichero puede crecer muy rpidamente,
  de manera que en grandes redes se suele enlazar con el dispositivo
  nulo, para convertirlo en un agujero negro:



       ln -s /dev/null nohup.out




  Durante la ejecucin de una sesin de IRC, los usuarios autorizados
  pueden enviar mensajes al bot para cambiar su funcionamiento. Para
  realizar esta tarea, se emplea el comando MSG del IRC:



       /MSG _argobot <clave> <comando> <canal> [nick]




  Donde comando puede ser:


    op: da privilegios de operador al usuario indicado.


    deop: quita los privilegios de operador al usuario indicado.

    invite: invita a un usuario a un canal.


  5.  Cliente de IRC



  5.1.  Funcin de un cliente de IRC


  La funcin de un cliente de IRC es conectarse al servidor y filtrar la
  informacin disponible para cada usuario. Adems, debe encargarse de
  enviar los mensajes y comandos que escribe el usuario mediante el
  protocolo de IRC.

  El cliente habitualmente reside en la mquina del usuario y se conecta
  al servidor a travs de un puerto (generalmente el 6667). Existen
  clientes de IRC para todas las plataformas, dado que no es necesario
  que la plataforma cliente coincida con la del servidor. En los
  sistemas Windows, el cliente ms popular es el mIRC, que nosotros
  elegimos para hacer las primeras pruebas y asegurarnos de que el
  demonio estaba funcionando correctamente. Una vez confirmado el buen
  funcionamiento del servidor, instalamos un cliente para Linux. Para
  esta plataforma, la oferta es muy grande. Los ms conocidos son:


    Kirc (ftp://ftp.kde.org/): el ms antiguo cliente en el entorno
     KDE.  Tiene un entorno grfico muy cuidado, pero carece de algunas
     caractersticas bsicas.

    Ksirc (http://www.ksirc.org/): tambin para el KDE y resultado de
     la evolucin de un cliente en modo texto (el Sirc). Est todava en
     fase de desarrollo.

    Keric (http://www.indonesia-undernet.org/keirc): otro ms que
     funciona bajo KDE y es uno de los ms prometedores, aunque an est
     muy lejos de poder ofrecer una versin completamente estable.

    BitchX (http://www.bitchx.com/): el cliente en modo texto preferido
     por los usuarios de Linux.

    ScrollZ (http://www.scrollz.com/): tiene caractersticas similares
     al BitchX, y es el ms veterano de todos, lo que le permite
     alcanzar una buena velocidad y un gran nivel de optimizacin (menor
     consumo de recursos).

    YagIRC (http://www.sicom.fi/~ikioma/yagirc.html). Cliente para el
     entorno GNOME, bastante reciente y capaz de mostrar un interfaz en
     modo texto o en modo grfico.


  5.2.  Descripcin de BitchX


  Entre sus caractersticas estn:


    Varias conversaciones en el mismo canal.

    Mltiples servidores.

    Autocompletado de nicks.


    Soporte para scripts.

    Cliente de FTP incorporado.

    Nuevas caractersticas exclusivas, como son: cliente de correo
     integrado y un reproductor de CDs musicales.


  5.3.  Obtencin e instalacin


  El BitchX puede conseguirse en http://www.bitchx.com/, desde donde se
  pueden conseguir varios ficheros: uno de ellos contiene el paquete
  bsico y los dems son accesorios opcionales.

  Tras descomprimir y desempaquetar el fichero con la orden tar en el
  directorio /usr/local/BitchX/, obtendremos directamente los
  ejecutables, puesto que se distribuye con los fuentes ya compilados.


  5.4.  Configuracin


  No contiene ningn fichero de configuracin, sino que las opciones se
  establecen mediante variables de entorno. Las principales son:


    IRCNICK: establece el nick por defecto.

    IRCUSER: establece el nombre de usuario por defecto.

    IRCNAME: permite escribir el nombre real del usuario.

    IRCSERVER: nombre del servidor a utilizar.

    IRCPORT: puerto a utilizar.

  Es conveniente dar valor a estas variables en los scripts de arranque
  o bien en el fichero ~/.profile de cada usuario del sistema.


  5.5.  Ejecucin


  El ejecutable se llama BitchX-tcl, pero resulta conveniente crear un
  enlace simblico llamado irc situado en un directorio que forme parte
  del path para simplificar el trabajo de los usuarios.


  6.  Anexo: El INSFLUG


  El INSFLUG forma parte del grupo internacional Linux Documentation
  Project, encargndose de las traducciones al castellano de los Howtos,
  as como de la produccin de documentos originales en aquellos casos
  en los que no existe anlogo en ingls, centrndose, preferentemente,
  en documentos breves, como los COMOs y PUFs (Preguntas de Uso
  Frecuente, las FAQs. :) ), etc.

  Dirjase a la sede del Insflug para ms informacin al respecto.

  En ella encontrar siempre las ltimas versiones de las traducciones
  oficiales:  www.insflug.org. Asegrese de comprobar cul es la
  ltima versin disponible en el Insflug antes de bajar un documento de
  un servidor rplica.

  Adems, cuenta con un sistema interactivo de gestin de fe de erratas
  y sugerencias en lnea, motor de bsqueda especfico, y ms servicios
  en los que estamos trabajando incesantemente.

  Se proporciona tambin una lista de los servidores rplica (mirror)
  del Insflug ms cercanos a Vd., e informacin relativa a otros
  recursos en castellano.

  En http://www.insflug.org/insflug/creditos.php3 cuenta con una
  detallada relacin de las personas que hacen posible tanto esto como
  las traducciones.

  Dirjase a http://www.insflug.org/colaboracion/index.php3 si desea
  unirse a nosotros!.

  Cartel Insflug, cartel@insflug.org.


















































