Instalaci�n y configuraci�n de un servidor de IRC
 Diego Berrueta Mu�oz, [email protected] y Jos� Alfredo
 Osl� Posadas, [email protected]
 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 gesti�n del
 servidor y un programa cliente de IRC.
 ______________________________________________________________________

 �ndice general


 1. Nota de los autores

 2. Introducci�n

    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 b�sicos de IRC
    2.5 Ataques en el IRC

 3. Demonio de IRC:

    3.1 Funci�n de un demonio
    3.2 Descripci�n de
    3.3 Obtenci�n e instalaci�n
    3.4 Configuraci�n previa a la compilaci�n
    3.5 Compilaci�n
    3.6 El fichero
    3.7 Ejecuci�n del demonio

 4. El

    4.1 Funci�n de un
    4.2 (IT
    4.3 Instalaci�n
    4.4 Edici�n del c�digo fuente
    4.5 Compilaci�n
    4.6 Configuraci�n
    4.7 Ejecuci�n

 5. Cliente de IRC

    5.1 Funci�n de un cliente de IRC
    5.2 Descripci�n de
    5.3 Obtenci�n e instalaci�n
    5.4 Configuraci�n
    5.5 Ejecuci�n

 6. Anexo: El INSFLUG



 ______________________________________________________________________

 1.  Nota de los autores


 Este documento es el resultado de un trabajo realizado para el curso
 "Administraci�n de un sistema UNIX con Linux", impartido en el verano
 de 1998 en la Escuela Universitaria de Ingenier�a T�cnica en
 Inform�tica 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 m�s informaci�n sobre Linux, no olvide visitar la p�gina
 web del Proyecto Lucas, (http://lucas.ctv.es/) donde se encargan de
 traducir las gu�as de Linux al castellano, y la p�gina de INSFLUG
 (http://www.insflug.org/), que coordina la traducci�n de los
 documentos HOWTO y FAQ).


 2.  Introducci�n



 2.1.  �Qu� es el IRC?


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


 �  Incorpora un protocolo mucho m�s elaborado, independiente de la
    plataforma.

 �  Posibilidad de conversaciones en las que intervengan m�s de dos
    participantes: el l�mite depende s�lo de las posibilidades de los
    servidores.

 �  Organizaci�n de las charlas en forma de m�ltiples canales: por
    establecer un s�mil, los canales son salones donde se dan cita un
    cierto n�mero de usuarios. Esta posibilidad se aprovecha
    generalmente para realizar canales tem�ticos, que son el punto de
    encuentro de personas con inquietudes parecidas.

 �  Posibilidad de conectar varias redes, para poner en comunicaci�n un
    gran n�mero de usuarios.

 �  Los usuarios pueden ocultar su identidad, lo que facilita
    conversaciones m�s espont�neas, pero tambi�n puede crear riesgos de
    seguridad.

 El IRC naci� hace diez a�os, cuando el finland�s Jarkko Oikarinen
 escribi� el primer programa para poder efectuar conversaciones con una
 estructura cliente-servidor. Su expansi�n fue muy r�pida, 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 despu�s surgieron otras
 como Undernet (http://www.undernet.org), IRCNet, DALNet, StarChat,
 StarLink, NewLet. Tambi�n existen redes para las personas de habla
 hispana, como RedLatina, IRC-Hispano (http://www.irc-hispano.org) o la
 m�s reciente, Esnet (http://www.esnet.org).  Algunas de estas redes
 son de grandes magnitudes: por ejemplo, en Undernet existen m�s 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 filosof�a de funcionamiento permite al administrador del servidor
 ejercer un cierto control: por ejemplo, puede impedir el acceso a
 determinados usuarios, ampliar las posibilidades de conversaci�n
 comunicando varios servidores o limitar las posibilidades de los
 usuarios.  Adem�s, 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 m�s en el
 segundo. �Qu� tipo de software se requiere? En principio, para el
 establecimiento de un servicio b�sico, 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 gesti�n eficiente y autom�tica de la red de IRC, se
 hace necesario un bot o script, que se encargue de la gesti�n de
 usuarios y canales sin intervenci�n por parte del administrador.

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


 2.4.  Comandos b�sicos de IRC


 Antes de describir los comandos, es necesario conocer cu�l es, a
 grandes rasgos, la filosof�a 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 s�mbolo
 &), y un topic, que es una breve descripci�n de los temas a los que
 est� dedicado el canal.

 Para poder dar coherencia a las conversaciones, los usuarios tambi�n
 est�n identificados por un nombre, que se llama nick o apodo.  Con el
 fin de poder mostrar una informaci�n m�s expl�cita sobre el usuario,
 muchas redes exigen introducir el nombre completo y direcci�n de
 correo electr�nico para poder acceder; sin embargo, la mayor�a de
 usuarios aprovecha estos campos para introducir alg�n comentario m�s 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
 dem�s usuarios que forman parte del canal, y se indicar� el apodo del
 usuario emisor. De la misma forma, la recepci�n de mensajes es
 autom�tica; simplemente aparecen en la pantalla cuando son enviados.

 Dentro de un canal existe al menos un usuario que tiene m�s
 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 m�s 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 gesti�n din�mica de canales es otra de las
    posibilidades del IRC), y adem�s 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
    est�n presentes en ese canal.

 �  /WHOIS nick: muestra m�s informaci�n sobre un usuario del que
    conocemos su nick. Sin embargo, por las razones ya comentadas, la
    informaci�n no suele ser cierta.

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

 �  /NICK nuevo_nick: permite cambiar nuestro nick o apodo.

 �  /MSG nick mensaje: env�a un mensaje personal a un usuario
    determinado, sin que los dem�s usuarios lo vean en su pantalla.

 �  /SIGNOFF, /SI, /BYE, /EXIT, /QUIT: cualquiera de ellos sirve para
    abandonar la conversaci�n. Si se a�ade un texto detr�s 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 conversaci�n.

 �  /QUERY nick: invita al usuario indicado a participar en una
    conversaci�n privada. Si el receptor responde con un comando
    similar, el di�logo particular dar� comienzo.

 Los siguientes comandos los utilizan exclusivamente los operadores:


 �  /OPER nick password: da al usuario indicado los privilegios de
    operador (si la contrase�a es v�lida).

 �  /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 m�s 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 m�s adelante, tanto el demonio de IRC como el bot de
 gesti�n 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 raz�n es que existen usuarios con grandes conocimientos sobre el
 IRC, y que muestran una actitud beligerante respecto a las m�s
 desprevenidos, los usuarios noveles. Aprovech�ndose de las grietas del
 sistema, son capaces de expulsar a otros usuarios e incluso colgar
 m�quinas remotas, mediante diversos tipos de estrategias:


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

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

 �  Botnets: se trata de una versi�n automatizada (mediante scripts)
    del flood.

 �  ICMP: este tipo de ataques son mucho m�s sofisticados y malignos.
    Como dato, baste decir que existe un script escrito en s�lo cinco
    l�neas de perl y capaz de bloquear una m�quina Windows remota.

 �  Smurf: consiste en enviar un ping a la direcci�n broadcast de una
    gran red, con la identidad del remitente falseada para que apunte a
    la persona atacada. Las respuestas de las m�quinas de la red ir�n
    directamente a esta persona, rompi�ndole la conexi�n.

 Al crear un servidor de IRC, se debe poner mucha atenci�n en la
 prevenci�n de ataques. Los ataques por saturaci�n son relativamente
 f�ciles 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 versi�n del n�cleo y los parches.

 Para dificultar a�n m�s el seguimiento de los atacantes, �stos suelen
 emplear bouncers, que son demonios colocados en una tercera m�quina 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 m�s informaci�n sobre estos temas (ataques,
 defensas y monitorizaci�n) 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.  Funci�n 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 m�quina servidor coexistir�n tantos programas esperando a la
 escucha de nuevas peticiones como servicios diferentes se oferten.

 Estos programas, denominados demonios (daemons en la terminolog�a
 inglesa) son programas que est�n en ejecuci�n, cargados en memoria, y
 que est�n encargados de responder a las peticiones que hacen los
 programas clientes, que generalmente est�n ubicados en otras m�quinas,
 pero que pueden ejecutarse tambi�n en la propia m�quina servidor. Por
 tanto, siempre hay una correspondencia directa entre el programa o
 demonio del servidor y el programa cliente de la m�quina cliente.

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


 3.2.  Descripci�n 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
 m�s b�sico, ircd, sin modificaci�n alguna.  Pero nosotros hemos
 escogido el ircd-hybrid versi�n 5.2p1 por ser el m�s completo. Es el
 usado en la red Efnet.


 3.3.  Obtenci�n e instalaci�n


 Algunas distribuciones como Debian incluyen este software entre sus
 paquetes b�sicos. Si utilizamos otra distribuci�n, se puede recurrir
 al FTP o contactar con sus autores en la direcci�n ircd-
 [email protected].

 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 m�s importantes son:


 �  INSTALL: describe los pasos a realizar para la instalaci�n.

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

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

 �  Doc/: este directorio contiene documentaci�n sobre IRC.


 3.4.  Configuraci�n previa a la compilaci�n


 Como sugiere la documentaci�n, es preciso revisar algunos ficheros
 donde se definen varios par�metros, por lo que ser� necesario compilar
 el programa.  Sin embargo, el primer paso es adaptar los ficheros de
 configuraci�n y compilaci�n a nuestro sistema. Esto lo haremos
 ejecutando el script ./configure.


 A continuaci�n, editaremos parte del c�digo fuente (por motivos de
 optimizaci�n): 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 l�neas define de esta forma:



      #define HARD_FDLIMIT    256
      #define INIT_MAXCLIENTS 150




 Tambi�n quitaremos la l�nea



      #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 tama�o de algunas tablas mediante
 s�mbolos 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 compilaci�n es editar el fichero Makefile
 resultante de ejecutar el script ./configure, para que la l�nea que
 especifica los par�metros que usar� el compilador gcc quede de la
 siguiente forma:



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




 Los dos �ltimos par�metros son opcionales, y sirven para optimizar el
 c�digo generado para m�quinas Pentium/AMD.


 3.5.  Compilaci�n


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



      make




 La compilaci�n transcurrir� durante unos minutos, tras los cuales, si
 no se ha producido ning�n error, s�lo faltar� crear el directorio
 /usr/local/ircd/, donde se instalar�n 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
 l�neas, identificadas con una letra, y que contienen par�metros
 separados por el signo ':'. Algunas de las l�neas m�s importantes son:


 �  A: informaci�n sobre los administradores:


    1. Compa��a

    2. Localizaci�n

    3. Direcci�n de contacto


 �  M: informaci�n sobre el servidor:


    1. Nombre del host

    2. Direcci�n 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 trav�s de un programa externo de
    validaci�n.

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

 �  E: excepciones a la l�nea K.

 �  F: super-excepci�n (similar a la anterior, pero se salta los
    l�mites de clases de usuarios).


 �  Y: define una clase de usuario:


    1. N�mero de clase.

    2. Frecuencia de ping (segundos).

    3. Usuarios por IP.

    4. N�mero m�ximo de enlaces.

    5. Tama�o de la cola de env�o.


 �  I: permite el acceso a algunas m�quinas:


    1. Dominio o direcci�n IP.

    2. Password del cliente.

    3. No documentado (generalmente '*').

    4. No documentado.

    5. N�mero 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 <[email protected]>
      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:[email protected]:mAJif8plpvVls:Operador:0:0
      # Fin del fichero
      # No especificamos nada en las l�neas
      # - C, N, L y N: porque no nos conectamos a ning�n otro servidor
      # - K, R, D, E y F: porque no establecemos restricciones tan fuertes
      # - P: porque no tenemos m�s puertos

 Nota: para obtener el campo clave encriptada de la l�nea 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 configuraci�n
 ircd.conf mediante la utilizaci�n de la herramienta tools/chkconf.

 Tambi�n podemos modificar el fichero ircd.motd para establecer el
 mensaje del d�a que aparecer� a los usuarios que establezcan contacto
 con el servidor.


 3.7.  Ejecuci�n 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 a�adiendo la siguiente l�nea en el fichero /etc/inetd.conf:



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




 para que arranque autom�ticamente cada vez que se inicie el equipo
 servidor.  Sin embargo, este segundo m�todo no lo hemos podido
 confirmar porque, aparentemente, no ha funcionado.



 4.  El bot  de gesti�n del servidor



 4.1.  Funci�n de un bot  de gesti�n del servidor


 La funci�n de un bot o script de gesti�n 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 m�s, pero adquiere el
 poder del operador, lo que le permite administrar de manera eficiente
 los canales. Entre sus posibilidades est�n:


 �  Env�o de mensajes peri�dicos 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 m�s importantes,
 podemos destacar:
 �  Eggdrop: posiblemente el m�s conocido, pero tambi�n el m�s complejo
    de instalar y mantener. Requiere TCL.

 �  Uworld.

 �  Cservice.

 �  Argobot.


 4.2.  Argobot


 El Argobot es un bot relativamente sencillo escrito por el espa�ol
 Jes�s Cea Avi�n (http://www.argo.es/~jcea), aunque algunas grandes
 redes hispanas de IRC est�n adopt�ndolo. Soporta todas las
 caracter�sticas antes enunciadas, pero sin profundizar en ellas, de
 forma que no resulta tan grande y complejo como Eggdrop. Como ventaja
 a�adida, 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
    autom�tica.

 �  Enviar mensajes (notices) a los usuarios reci�n llegados a un
    canal.

 �  Controlar el acceso y configuraci�n de modos y permisos
    independientemente para cada canal.

 �  Acceder a redes que exigen claves.

 Otras caracter�sticas del Argobot son:


 �  Se distribuye con el c�digo fuente completo (escrito en lenguaje
    C), y que adem�s puede compilarse bajo UNIX o en plataformas
    Windows.

 �  Utiliza un fichero de configuraci�n.

 �  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 configuraci�n y cargar de nuevo el bot
    sin que los usuarios adviertan ning�n cambio ni interrupci�n del
    servicio.


 4.3.  Instalaci�n


 El Argobot se puede conseguir en la p�gina web de su creador
 (http://www.argo.es/~jcea/irc/argobot.htm). Existen multitud de
 versiones, algunas desarrolladas espec�ficamente para alguna gran red,
 y adem�s se pueden conseguir una veintena de parches que corrigen
 algunos defectos y a�aden nuevas caracter�sticas.

 Si optamos por obtener el Argobot por Internet, descubriremos que
 apenas incluye unos pocos ficheros (c�digo fuente C), y como �nica
 documentaci�n un fichero README muy breve. Para paliar esta
 deficiencia, su autor a puesto toda la documentaci�n disponible a
 trav�s de Internet, en forma de p�ginas web. Es necesario, por tanto,
 descargar estas p�ginas 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 c�digo fuente.

 �  argo_parser.c: c�digo fuente que interpreta el fichero de
    configuraci�n.

 �  argobot.conf: fichero de configuraci�n.

 �  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� vac�o), 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 caracter�sticas m�s avanzadas
 del Argobot, como es la propagaci�n de l�neas K (s�lo tiene sentido en
 redes de varios servidores), ser� necesario seguir las instrucciones
 relativas a los permisos y el fichero ircd.conf.


 4.4.  Edici�n del c�digo fuente


 Antes de compilar, es conveniente comprobar que el c�digo 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 m�todo recomendado),
    nos aseguraremos de que est� definido SEGURIDAD (con la sentencia
    #define SEGURIDAD), y que las macros UID y GID tienen valores
    apropiados. Si adem�s vamos a hacer un CHROOT (que es una medida
    adicional de seguridad), definiremos el directorio que debe tomar
    como ra�z con la sentencia #define CHROOT <directorio>.

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

 Adem�s de estas modificaciones, podemos definir el s�mbolo VERBOSE
 para que se impriman en la pantalla todos los mensajes que el servidor
 env�a al Argobot. Otro s�mbolo 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.  Compilaci�n


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






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




 La primera instrucci�n realiza la compilaci�n, generando el fichero
 argobot. Con las dos siguientes, establecemos los propietarios de este
 fichero.


 4.6.  Configuraci�n


 La tarea de configuraci�n se limita al fichero argobot.conf, aunque
 tambi�n 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 l�neas con
 comandos. Al hacer la instalaci�n, se genera un fichero de ejemplo,
 pero lo m�s conveniente es modificarlo para adaptarlo a nuestras
 necesidades. Los comandos son:


 �  IRCnick <nick>: indica cu�l 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 conexi�n, 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
    est�n utilizando el nick indicado en el comando nick.
    Inmediatamente despu�s, se les expulsar� mediante un kick.

 �  umbral_kline <valor>: indica cu�ntos intentos de conexi�n se
    permitir�n antes de poner una l�nea k local. El valor m�s corriente
    es cinco. Esto es una medida de protecci�n contra los usuarios que
    tengan una actitud sospechosa.

 �  timeout_klines <valor>: indica cu�ntos segundos permanecer� activa
    una l�nea k local. El valor m�s aconsejable es en torno a 900 (es
    decir, 15 minutos).

 �  timeout_whowas <valor>: indica cada cu�ntos segundos hay que
    comprobar la presencia de clones (usuarios que est�n presentes bajo
    varios nicks, lo que suele ser s�ntoma de actividades peligrosas).
    Es conveniente un valor en torno a cinco.

 �  timer <offset> <periodo> <comando>: se utiliza para enviar comandos
    peri�dicos al servidor de IRC, que se repetir�n cada cierto n�mero
    de segundos. El offset indica el retraso del primer env�o.

 �  set <alias> <m�scara> [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 m�scara, 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 pertenecer�n los
    usuarios indicados a continuaci�n.

 �  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 car�cter '#' se emplea para indicar comentarios, no debe
    escribirse en el campo canal. Por tanto, si escribimos linux,
    estamos refiri�ndonos al canal #linux.

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


 �  autoop <grupo>: cualquier usuario del grupo indicado ser�
    autom�ticamente 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
    pr�cticamente todo, lo que no es muy aconsejable.

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






















 #
 # Par�metros 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 l�neas configuran distintos aspectos de la seguridad
 umbral_kline 5  # M�ximo n�mero 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 *[email protected]
 set alfredo *[email protected]
 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 \
 autom�tica
 timer 60 9999 topic #linux :Canal para los autenticos entendidos en \
 inform�tica y sistemas operativos.

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





 4.7.  Ejecuci�n


 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 depuraci�n, pero resulta
 innecesario durante una ejecuci�n 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 r�pidamente,
 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 ejecuci�n de una sesi�n 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.  Funci�n de un cliente de IRC


 La funci�n de un cliente de IRC es conectarse al servidor y filtrar la
 informaci�n disponible para cada usuario. Adem�s, debe encargarse de
 enviar los mensajes y comandos que escribe el usuario mediante el
 protocolo de IRC.

 El cliente habitualmente reside en la m�quina del usuario y se conecta
 al servidor a trav�s 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 m�s 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 m�s conocidos son:


 �  Kirc (ftp://ftp.kde.org/): el m�s antiguo cliente en el entorno
    KDE.  Tiene un entorno gr�fico muy cuidado, pero carece de algunas
    caracter�sticas b�sicas.

 �  Ksirc (http://www.ksirc.org/): tambi�n para el KDE y resultado de
    la evoluci�n de un cliente en modo texto (el Sirc). Est� todav�a en
    fase de desarrollo.

 �  Keric (http://www.indonesia-undernet.org/keirc): otro m�s que
    funciona bajo KDE y es uno de los m�s prometedores, aunque a�n est�
    muy lejos de poder ofrecer una versi�n completamente estable.

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

 �  ScrollZ (http://www.scrollz.com/): tiene caracter�sticas similares
    al BitchX, y es el m�s veterano de todos, lo que le permite
    alcanzar una buena velocidad y un gran nivel de optimizaci�n (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 gr�fico.


 5.2.  Descripci�n de BitchX


 Entre sus caracter�sticas est�n:


 �  Varias conversaciones en el mismo canal.

 �  M�ltiples servidores.

 �  Autocompletado de nicks.


 �  Soporte para scripts.

 �  Cliente de FTP incorporado.

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


 5.3.  Obtenci�n e instalaci�n


 El BitchX puede conseguirse en http://www.bitchx.com/, desde donde se
 pueden conseguir varios ficheros: uno de ellos contiene el paquete
 b�sico y los dem�s 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.  Configuraci�n


 No contiene ning�n fichero de configuraci�n, 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.  Ejecuci�n


 El ejecutable se llama BitchX-tcl, pero resulta conveniente crear un
 enlace simb�lico 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, encarg�ndose de las traducciones al castellano de los Howtos,
 as� como de la producci�n de documentos originales en aquellos casos
 en los que no existe an�logo en ingl�s, centr�ndose, preferentemente,
 en documentos breves, como los COMOs y PUFs (Preguntas de Uso
 Frecuente, las FAQs. :) ), etc.

 Dir�jase a la sede del Insflug para m�s informaci�n al respecto.

 En ella encontrar� siempre las �ltimas versiones de las traducciones
 �oficiales�:  www.insflug.org. Aseg�rese de comprobar cu�l es la
 �ltima versi�n disponible en el Insflug antes de bajar un documento de
 un servidor r�plica.

 Adem�s, cuenta con un sistema interactivo de gesti�n de fe de erratas
 y sugerencias en l�nea, motor de b�squeda espec�fico, y m�s servicios
 en los que estamos trabajando incesantemente.

 Se proporciona tambi�n una lista de los servidores r�plica (mirror)
 del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
 recursos en castellano.

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

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

 �Cartel� Insflug, [email protected].