Logo de AulaDigital

Servidor IRC Como 2

Instalación y configuración de un servidor de IRC: Introducción Página siguiente Página anterior Índice general

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.


Página siguiente Página anterior Índice general