Servidor IRC Como
Servidor IRC Como
Servidor IRC Como
Diego Berrueta Mu oz, n berrueta@geocities.com le@pinon.ccu.uniovi.es y Jos e Alfredo Osl e Posadas, aosJulio 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 gestion del servidor y un programa cliente de IRC.
Indice General
1 2 Nota de los autores Introducci n o 2.1 2.2 2.3 2.4 2.5 3 Qu es el IRC? e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 3 3 3 4 5 5 5 5 6 6 7 8 9 9 9 10 10 10 11 13 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 15
Qu es un servidor de IRC? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Qu necesita un servidor de IRC? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Comandos b sicos de IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a Ataques en el IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Demonio de IRC: ircd 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Funci n de un demonio ircd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Descripci n de ircd-hybrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Obtenci n e instalaci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o Conguraci n previa a la compilaci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o Compilaci n o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
El chero ircd.conf
El bot de gesti n del servidor o 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Funci n de un bot de gesti n del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o Argobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instalaci n o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejecuci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o
Descripci n de BitchX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o
15 15 15 16
Ejecuci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o
Anexo: El INSFLUG
Este documento es el resultado de un trabajo realizado para el curso Administraci n de un sistema UNIX con Linux, o impartido en el verano de 1998 en la Escuela Universitaria de Ingeniera T cnica en Inform tica de Oviedo (EUITIO). e a 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, a o a (http://lucas.ctv.es/) donde se encargan de traducir las guas de Linux al castellano, y la p gina de INS a FLUG (http://www.insflug.org/), que coordina la traducci n de los documentos HOWTO y FAQ). o
Introducci n o
2.1 Qu es el IRC? e
El IRC (Internet Relay Chat) surgi como una ampliaci n del programa talk, tratando de superar sus limitaciones. Se o o trata de un sistema de conversaci n en tiempo real a trav s de redes de ordenadores y, por supuesto, de Internet. Las o e principales diferencias con el talk son las siguientes:
Incorpora un protocolo mucho m s elaborado, independiente de la plataforma. a Posibilidad de conversaciones en las que intervengan m s de dos participantes: el lmite depende s lo de las a o posibilidades de los servidores. Organizaci n de las charlas en forma de m ltiples canales: por establecer un smil, los canales son salones o u donde se dan cita un cierto n mero de usuarios. Esta posibilidad se aprovecha generalmente para realizar u canales tem ticos, que son el punto de encuentro de personas con inquietudes parecidas. a Posibilidad de conectar varias redes, para poner en comunicaci n un gran n mero de usuarios. o u Los usuarios pueden ocultar su identidad, lo que facilita conversaciones m s espont neas, pero tambi n puede a a e crear riesgos de seguridad.
El IRC naci hace diez a os, cuando el nland s Jarkko Oikarinen escribi el primer programa para poder efectuar o n e o conversaciones con una estructura cliente-servidor. Su expansi n fue muy r pida, puesto que pronto se implant en la o a o red nacional nlandesa (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 e (http://www.undernet.org), IRCNet, DALNet, StarChat, StarLink, NewLet. Tambi n existen redes pae ra las personas de habla hispana, como RedLatina, IRC-Hispano (http://www.irc-hispano.org) o la m s a 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. a
2. Introducci n o
Dando por supuesto el primer apartado, vamos a puntualizar m s en el segundo. Qu tipo de software se requiere? a e En principio, para el establecimiento de un servicio b sico, es suciente con ejecutar un demonio de IRC, que se a encargar de las tareas descritas en el apartado anterior. Sin embargo, esto proporcionar un servicio precario: para a a un gesti n eciente y autom tica de la red de IRC, se hace necesario un bot o script, que se encargue de la gesti n de o a o usuarios y canales sin intervenci n por parte del administrador. o Con el n de poder monitorizar y administrar la red, es conveniente que el servidor disponga tambi n de un software e cliente de IRC.
2. Introducci n o
introduce al usuario en el canal especicado. Si este canal no existe, se crea (la gesti n din mica de canales es o a otra de las posibilidades del IRC), y adem s conere al usuario el privilegio de ser el operador del canal. a
/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. a /WHOIS nick: muestra m s informaci n sobre un usuario del que conocemos su nick. Sin embargo, por las a o razones ya comentadas, la informaci n no suele ser cierta. o /TOPIC cadena: cambia el topic o descripci n del canal (si tenemos privilegios para poder hacerlo). o /NICK nuevo nick: permite cambiar nuestro nick o apodo. /MSG nick mensaje: enva un mensaje personal a un usuario determinado, sin que los dem s usuarios lo a vean en su pantalla. /SIGNOFF, /SI, /BYE, /EXIT, /QUIT: cualquiera de ellos sirve para abandonar la conversaci n. Si o se a ade un texto detr s del comando, ser enviado como mensaje de despedida. n a a /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. o /QUERY nick: invita al usuario indicado a participar en una conversaci n privada. Si el receptor responde o con un comando similar, el di logo particular dar comienzo. a a
comandos
de
IRC,
se
puede
acudir
Botnets: se trata de una versi n automatizada (mediante scripts) del ood. o ICMP: este tipo de ataques son mucho m s sosticados y malignos. Como dato, baste decir que existe un script a escrito en s lo cinco lneas de perl y capaz de bloquear una m quina Windows remota. o a Smurf : consiste en enviar un ping a la direcci n broadcast de una gran red, con la identidad del remitente o falseada para que apunte a la persona atacada. Las respuestas de las m quinas de la red ir n directamente a esta a a persona, rompi ndole la conexi n. e o
Al crear un servidor de IRC, se debe poner mucha atenci n en la prevenci n de ataques. Los ataques por saturaci n o o o son relativamente f ciles de evitar mediante un bot capaz de detectarlos sobre la marcha y anularlos. Sin embargo, a contra los ataques ICMP, la mejor manera de defenderse es utilizar la ultima versi n del n cleo y los parches. o u Para dicultar a n m s el seguimiento de los atacantes, estos suelen emplear bouncers, que son demonios colocados u a en una tercera m quina y que se limitan a redirigir todos los paquetes que les lleguen. De esta forma, el pirata puede a 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 sia o o guientes direcciones: http://www.irchelp.org/irchelp/nuke/ y http://www.esi.us.es/roman/tacticas.html.
Los cheros descomprimidos los alojaremos en el directorio /usr/src/ircd-hybrid-5.2p1/. Algunos de los cheros m s importantes son: a
INSTALL: describe los pasos a realizar para la instalaci n. o README.FIRST, README.hybrid, README.small nets: como siempre, conviene leerlos antes de proceder a la instalaci n. o Opers.txt: describe los comandos para el operador del servidor IRC. Doc/: este directorio contiene documentaci n sobre IRC. o
para que no chequee constantemente la identidad de todo aquel que entre, ralentizando los accesos al servidor. El chero src/list.c dene el tama o de algunas tablas mediante smbolos del preprocesador. Pondremos el valor n 64 a las variables LINK PREALLOCATE y CLIENTS PREALLOCATE, lo que es suciente para una red donde no se prevee un acceso mayor a 60 usuarios. El ultimo paso antes de la compilaci n es editar el chero Makefile resultante de ejecutar el script ./configure, o para que la lnea que especica los par metros que usar el compilador gcc quede de la siguiente forma: a a
# Default CFLAGS CFLAGS= -g -O2 -DCPU=586 -m486
Los dos ultimos par metros son opcionales, y sirven para optimizar el c digo generado para m quinas Pentium/AMD. a o a
3.5 Compilaci n o
Una vez hechos todos los ajustes pertinentes, se puede proceder a la compilaci n propiamente dicha, con el comando: o
make
La compilaci n transcurrir durante unos minutos, tras los cuales, si no se ha producido ning n error, s lo faltar crear o a u o a el directorio /usr/local/ircd/, donde se instalar n los cheros ejecutables gracias a la orden: a
make install
1. Nombre del host 2. Direcci n IP (opcional) o 3. Nombre del servidor IRC 4. Puerto (generalmente, 6667).
K: restricciones de acceso a usuarios o redes completas:
1. N mero de clase. u 2. Frecuencia de ping (segundos). 3. Usuarios por IP. 4. N mero m ximo de enlaces. u a 5. Tama o de la cola de envo. n
I: permite el acceso a algunas m quinas: a
1. Dominio o direcci n IP. o 2. Password del cliente. 3. No documentado (generalmente *). 4. No documentado. 5. N mero de clase asociada. u
o: dene operadores locales (recomendado):
1. usuario@host. 2. Clave encriptada. 3. Nick del operador. 4. No documentado (generalmente 0). 5. No documentado (generalmente 0).
O: dene operadores globales. P: congura puertos adicionales.
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 vericar la correcta sintaxis del chero de conguraci n ircd.conf mediante la utilizaci n de la herrao o mienta tools/chkconf. Tambi n podemos modicar el chero ircd.motd para establecer el mensaje del da que aparecer a los usuarios e a que establezcan contacto con el servidor.
para que arranque autom ticamente cada vez que se inicie el equipo servidor. Sin embargo, este segundo m todo no a e lo hemos podido conrmar porque, aparentemente, no ha funcionado.
4.2 Argobot
El Argobot es un bot relativamente sencillo escrito por el espa ol Jes s Cea Avi n n u o (http://www.argo.es/jcea), aunque algunas grandes redes hispanas de IRC est n adopt ndolo. Soa a porta todas las caractersticas 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 eciente. Es un bot multicanal n capaz de:
Proteger los modos de un canal. Dar y quitar los privilegios de operador de forma manual y autom tica. a Enviar mensajes (notices) a los usuarios reci n llegados a un canal. e Controlar el acceso y conguraci n de modos y permisos independientemente para cada canal. o Acceder a redes que exigen claves.
10
4.3 Instalaci n o
El Argobot se puede conseguir en la p gina web de su creador (http://www.argo.es/jcea/irc/argobot.htm). a Existen multitud de versiones, algunas desarrolladas especcamente para alguna gran red, y adem s se pueden a conseguir una veintena de parches que corrigen algunos defectos y a aden nuevas caractersticas. n Si optamos por obtener el Argobot por Internet, descubriremos que apenas incluye unos pocos cheros (c digo fuente o C), y como unica documentaci n un chero README muy breve. Para paliar esta deciencia, su autor a puesto toda o la documentaci n disponible a trav s de Internet, en forma de p ginas web. Es necesario, por tanto, descargar estas o e a p ginas y leerlas detenidamente. a El Argobot se suministra en forma de un chero .tgz, que una vez descomprimido (en nuestro caso, en el directorio /usr/src/argobot/) da lugar a cuatro cheros:
argobot.c: chero principal del c digo fuente. o argo parser.c: c digo fuente que interpreta el chero de conguraci n. o o argobot.conf: chero de conguraci n. o argobot.log: mantiene un registro de los comandos enviados al bot.
Es importante comprobar que este ultimo chero se ha creado realmente. Debido a algunas conguraciones de tar, es posible que no se genere este chero (porque est vaco), lo que provocar errores al intentar ejecutar el Argobot. a a En este caso, es necesario crear el chero manualmente (con la orden touch, por ejemplo), y darle los permisos apropiados. Nota: si queremos utilizar una de las caractersticas m s avanzadas del Argobot, como es la propagaci n de lneas K a o (s lo tiene sentido en redes de varios servidores), ser necesario seguir las instrucciones relativas a los permisos y el o a chero ircd.conf.
Adem s de estas modicaciones, podemos denir el smbolo VERBOSE para que se impriman en la pantalla todos a los mensajes que el servidor enva al Argobot. Otro smbolo interesante es CONTROL FLOOD, que por defecto est a activado, pero que deberemos eliminar si el nodo al que conectamos est preparado para controlar los ataques por a ood.
4.5 Compilaci n o
Como ya se ha indicado, el Argobot puede ser compilado bajo m ltiples plataformas. En Linux, es suciente con u hacer:
11
gcc -Wall -g argobot.c -o argobot chown root argobot chgrp root argobot
La primera instrucci n realiza la compilaci n, generando el chero argobot. Con las dos siguientes, establecemos o o los propietarios de este chero.
4.6 Conguraci n o
La tarea de conguraci n se limita al chero argobot.conf, aunque tambi n es necesario crear una nueva cuenta o e de usuario para el operador del servidor IRC. El chero argobot.conf es un chero de texto que contiene lneas con comandos. Al hacer la instalaci n, se o genera un chero de ejemplo, pero lo m s conveniente es modicarlo para adaptarlo a nuestras necesidades. Los a comandos son:
IRCnick nodo IRC.
`nickb: indica cu l es el nick que debe emplear el bot para identicarse como operador ante el a
IRCpasswd `passwordb: complementa al comando anterior, indicando la clave necesaria para adquirir los privilegios de operador. nick
`nickb: especica el nick bajo el que aparecer el bot a los usuarios. a server `servidorb: sirve para indicar el servidor a que va a conectarse. port `puertob: indica el puerto al que se va a conectar (generalmente, el 6667). passwd `passwordb: clave que ser enviada al servidor al principio de la conexi n, con lo que se podr a o a
acceder a otras redes que necesiten claves.
away
`mensajeb: mensaje que se muestra a los usuarios al entrar. nick collide `mensajeb: mensaje enviado a aquellos usuarios que est n utilizando el nick indicado en e
12
join `canalb [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 a a # se emplea para indicar comentarios, no debe escribirse en el campo canal. Por tanto, si escribimos linux, estamos reri ndonos al canal #linux. e
Puede haber tantos comandos join como sean necesarios. Para cada uno de ellos, se pueden indicar opciones especcas para el canal, mediante los siguientes comandos:
autoop `grupob: cualquier usuario del grupo indicado ser autom ticamente dotado de los privilegios de a a operador cuando entre en el canal. privil `grupob: declara privilegiados a los miembros del grupo indicado, lo que les permitir enviar a comandos al bot. mode default
`modosb: indica el modo por defecto del canal. mode disallow `modosb: prohibe algunos modos en el canal. log `ficherob: almacena toda la actividad del canal en un chero. Se incluyen marcas temporales cada
diez minutos.
notice
`textob: indica un mensaje que ser enviado a todos los usuarios que entren en el canal. a
allow any ban: permite a los operadores del canal hacer pr cticamente todo, lo que no es muy aconsejable. a
13
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 a timer 60 9999 topic #linux :Canal para los autenticos entendidos en \ informtica y sistemas operativos. a # Pone un modo para reducir el consumo de ancho de banda timer 60 600 mode _argobot :+d
4.7 Ejecuci n o
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 a de usuarios), lo que puede ser conveniente por motivos de depuraci n, pero resulta innecesario durante una ejecuci n o o normal. Por tanto, es muy frecuente ejecutar el Argobot en segundo plano y redireccionando la salida:
5. Cliente de IRC
14
Esto nos evitar ver todos los mensajes por la pantalla, pero los enviar a un chero llamado nohup.out situado en a a el directorio actual. El problema es que este chero puede crecer muy r pidamente, de manera que en grandes redes a 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 o o funcionamiento. Para realizar esta tarea, se emplea el comando MSG del IRC:
/MSG _argobot <clave> <comando> <canal> [nick]
5 Cliente de IRC
5.1 Funci n de un cliente de IRC o
La funci n de un cliente de IRC es conectarse al servidor y ltrar la informaci n disponible para cada usuario. Adem s, o o a 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 a e 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 a hacer las primeras pruebas y asegurarnos de que el demonio estaba funcionando correctamente. Una vez conrmado el buen funcionamiento del servidor, instalamos un cliente para Linux. Para esta plataforma, la oferta es muy grande. Los m s conocidos son: a
Kirc (ftp://ftp.kde.org/): el m s antiguo cliente en el entorno KDE. Tiene un entorno gr co muy a a cuidado, pero carece de algunas caractersticas b sicas. a Ksirc (http://www.ksirc.org/): tambi n para el KDE y resultado de la evoluci n de un cliente en modo e o texto (el Sirc). Est todava en fase de desarrollo. a Keric (http://www.indonesia-undernet.org/keirc): otro m s que funciona bajo KDE y es uno a de los m s prometedores, aunque a n est muy lejos de poder ofrecer una versi n completamente estable. a u a o 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 m s veterano de a todos, lo que le permite alcanzar una buena velocidad y un gran nivel de optimizaci n (menor consumo de o 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 co. a
5. Cliente de IRC
15
5.4 Conguraci n o
No contiene ning n chero de conguraci n, sino que las opciones se establecen mediante variables de entorno. Las u o 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 chero /.profile de cada usuario del sistema.
5.5 Ejecuci n o
El ejecutable se llama BitchX-tcl, pero resulta conveniente crear un enlace simb lico llamado irc situado en un o directorio que forme parte del path para simplicar el trabajo de los usuarios.
6. Anexo: El INSFLUG
16
Anexo: El INSFLUG
El INSFLUG forma parte del grupo internacional Linux Documentation Project, encarg ndose de las traducciones al a castellano de los Howtos, as como de la producci n de documentos originales en aquellos casos en los que no existe o an logo en ingl s, centr ndose, preferentemente, en documentos breves, como los COMOs y PUFs (Preguntas de Uso a e a Frecuente, las FAQs. :) ), etc. Dirjase a la sede del Insug para m s informaci n al respecto. a o En ella encontrar siempre las ultimas versiones de las traducciones ociales : www.insflug.org. Aseg rese a u de comprobar cu l es la ultima versi n disponible en el Insug antes de bajar un documento de un servidor r plica. a o e Adem s, cuenta con un sistema interactivo de gesti n de fe de erratas y sugerencias en lnea, motor de b squeda a o u especco, y m s servicios en los que estamos trabajando incesantemente. a Se proporciona tambi n una lista de los servidores r plica (mirror) del Insug m s cercanos a Vd., e informaci n e e a o relativa a otros recursos en castellano. En http://www.insflug.org/insflug/creditos.php3 cuenta con una detallada relaci n de las persoo nas que hacen posible tanto esto como las traducciones. Dirjase a http://www.insflug.org/colaboracion/index.php3 si desea unirse a nosotros!. Cartel Insug, cartel@insflug.org.