stringtranslate.com

IRCd

Un IRCd , abreviatura de Internet Relay Chat daemon , es un software de servidor que implementa el protocolo IRC , permitiendo a las personas hablar entre sí a través de Internet (intercambiando mensajes de texto en tiempo real). [1] [2] Es distinto de un bot de IRC que se conecta saliente a un canal de IRC.

El servidor escucha las conexiones de los clientes IRC [3] en un conjunto de puertos TCP . [4] Cuando el servidor es parte de una red IRC, también mantiene una o más conexiones establecidas con otros servidores/demonios. [5]

El término ircd originalmente se refería a una sola pieza de software, [6] pero eventualmente se convirtió en una referencia genérica a cualquier implementación de un demonio IRC. [7] [8] Sin embargo, la versión original todavía se distribuye con el mismo nombre, [9] y este artículo analiza ambos usos.

Historia

El IRCd original se conocía como 'ircd' y fue escrito por Jarkko Oikarinen (WiZ en IRC) en 1988. [10] [11] Recibió ayuda de otras personas, como Markku Savela (msa en IRC), quien ayudó con la versión 2.2+msa, etc.

En sus primeras revisiones, IRC no tenía muchas características que hoy se dan por sentado, como canales nombrados y operadores de canales . Los canales estaban numerados (canal 4 y canal 57, por ejemplo) y el tema del canal describía el tipo de conversación que tenía lugar en el canal. Un vestigio de esto es que unirse al canal 0 hace que un cliente abandone todos los canales en los que se encuentra actualmente: siendo "CANAL 0" el comando original para abandonar el canal actual.

El primer cambio importante en IRC, en la versión 2.5, fue agregar canales con nombre : "+canales". Los "+canales" fueron reemplazados posteriormente por "#canales" en la versión 2.7, los canales numéricos se eliminaron por completo y se implementaron prohibiciones de canales (modo +b).

Alrededor de la versión 2.7, hubo una pequeña pero notable disputa [ se necesita aclaración ] , que llevó a ircu, la bifurcación Undernet de ircd.

irc2.8 agregó "&canales" (aquellos que existen sólo en el servidor actual, en lugar de en toda la red) y "!canales" (aquellos que teóricamente están a salvo de sufrir las muchas formas en que un usuario podría explotar un canal " montando a netsplit "), y es la versión básica de la que se derivan casi todas las implementaciones actuales.

Alrededor del 2.8 surgió el concepto de nick y channel delay, un sistema diseñado para ayudar a frenar prácticas abusivas como adquisiciones y split-riding. Esto no fue acordado por la mayoría de los IRC modernos (EFnet, DALnet, Undernet, etc.) y, por lo tanto, 2.8 se dividió en varios demonios diferentes utilizando una teoría opuesta conocida como TS, o marca de tiempo, que almacenaba un código único. Marca de tiempo con cada canal o apodo en la red para decidir cuál era el "correcto" a conservar.

La marca de tiempo en sí se ha revisado varias veces para solucionar varios problemas en su diseño. Las últimas versiones de dichos protocolos son:

Si bien los protocolos de cliente a servidor son al menos funcionalmente similares, los protocolos de servidor a servidor difieren ampliamente (los protocolos de servidor TS5, P10 y ND/CD son incompatibles), lo que hace muy difícil "vincular" dos implementaciones separadas del Servidor IRC. Existen algunos servidores "puente" para permitir la vinculación de, por ejemplo, servidores 2.10 a servidores TS5, pero a menudo van acompañados de restricciones sobre qué partes de cada protocolo pueden usarse y no se implementan ampliamente.

Los lanzamientos importantes basados ​​en 2.8 incluyeron:

La base del código original continuó desarrollándose principalmente para su uso en la red IRCnet . Se introdujeron nuevos protocolos de servidor a servidor en la versión 2.10, lanzada en 1998, y en la 2.11, lanzada por primera vez en 2004 y vigente a partir de 2007 . IRCnet utiliza este demonio y se puede encontrar en http://www.irc.org/ftp/irc/server/ El ircd original es software libre , bajo la licencia pública general GNU . Esta línea de desarrollo produjo los 4 RFC de IRC publicados después del RFC 1459, que documentan este protocolo de servidor exclusivamente.

2.8.21+CS y Hybrid IRCd continúan utilizándose en EFnet , siendo ircd-ratbox (una rama de ircd-hybrid) a partir de 2004 el más popular.

Versiones secundarias

Diagrama de derivaciones y relaciones para implementaciones comunes de IRCd.

Más recientemente, varios demonios de irc se escribieron desde cero, como ithildin, [12] InspIRCd, [13] csircd (también escrito por Chris Behrens), ConferenceRoom, [14] Microsoft Exchange Chat Service, WeIRCd, [15] o IRCPlus/ IRCXPro. [dieciséis]

Estos intentos han tenido un éxito desigual y grandes dosis de escepticismo por parte de la comunidad de desarrollo IRC existente. Con cada nuevo IRCd, se utiliza una versión ligeramente diferente del protocolo IRC, [17] [18] y muchos clientes y bots de IRC se ven obligados a comprometer funciones o variar su implementación según el servidor al que están conectados. [19] A menudo se implementan con el fin de mejorar la usabilidad, la seguridad, la separación de poderes o la facilidad de integración con los servicios . Posiblemente una de las diferencias más comunes y visibles sea la inclusión o exclusión del estatus de operador de canal half-op (que no es un requisito de los RFC).

Características

Puertos

Los números de puerto asignados oficialmente son 194 ("irc"), 529 ("irc-serv") y 994 ("ircs"). [20] Sin embargo, estos puertos están en el rango privilegiado (0-1024), lo que en un sistema tipo Unix significa que el demonio históricamente tendría que tener privilegios de superusuario para poder abrirlos. Por diversas razones de seguridad , esto solía ser indeseable.

Los puertos comunes para un proceso IRCd son del 6665 al 6669, siendo 6667 el predeterminado histórico. [21] Estos puertos pueden abrirse mediante un proceso que no sea de superusuario y se utilizaron ampliamente.

Conexiones

Ejecutar un servidor IRC grande, uno que tenga más de unos pocos miles de usuarios simultáneos, requiere mantener abiertas una gran cantidad de conexiones TCP durante largos períodos. Muy pocos ircds son multiproceso ya que casi todas las acciones necesitan acceder (al menos leer y posiblemente modificar) el estado global.

El resultado es que las mejores plataformas para ircds son aquellas que ofrecen mecanismos eficientes para manejar grandes cantidades de conexiones en un solo hilo. Linux ofrece esta capacidad en forma de epoll , en series de kernel posteriores a 2.4.x. FreeBSD (desde 4.1) y OpenBSD (desde 2.9) ofrecen kqueue . Solaris tiene /dev/poll desde la versión 7 y desde la versión 10 en adelante tiene IOCP (Puertos de finalización de E/S). Windows admite IOCP desde Windows NT 3.5. La diferencia que suponen estas nuevas interfaces puede ser espectacular. Los desarrolladores de IRCU han mencionado aumentos en la capacidad práctica por servidor de 10.000 a 20.000 usuarios. [ cita necesaria ]

TLS (Seguridad de la capa de transporte)

Algunos IRCd admiten Transport Layer Security , o TLS; para aquellos que no lo hacen, aún es posible usar SSL a través de Stunnel . El puerto no oficial, pero más utilizado para conexiones TLS IRCd, es 6697 . Más recientemente, como mejora de la seguridad y la usabilidad, varios autores de clientes y servidores han comenzado a redactar un estándar conocido como estándar STARTTLS [22] que permite que TLS y conexiones de texto plano coexistan en el mismo puerto TCP.

IPv4 e IPv6

Los demonios IRC soportan IPv4 y algunos también soportan IPv6 . En general, la diferencia entre las conexiones IPv6 e IPv4 a IRC es puramente académica y el servicio opera de manera muy similar a través de cualquiera de los protocolos.

Agrupación

Las grandes redes IRC constan de múltiples servidores con fines de escalamiento horizontal . Existen varias extensiones del protocolo IRC para estos fines. [23]

IRCX

IRCX (Internet Relay Chat eXtensions) es una extensión del protocolo IRC desarrollado por Microsoft

P10

El protocolo P10 es una extensión del protocolo Internet Relay Chat para comunicaciones de servidor a servidor desarrollado por el Undernet Coder Committee para utilizarlo en su software de servidor ircu. Tiene un propósito similar a los protocolos IRCX y EFnet TS5/TS6 e implementa marcas de tiempo de canal y nick para manejar colisiones de nick y conducción de canales netsplit, respectivamente. Otros IRCd que utilizan esta extensión de protocolo incluyen beware ircd. [23] [24] [25]

TS6

El protocolo TS6 es una extensión del protocolo Internet Relay Chat para comunicaciones de servidor a servidor desarrollado inicialmente por los desarrolladores de ircd-ratbox. Ha sido ampliado por varios software IRC y tiene la característica de que las implementaciones adecuadas de TS6 pueden vincularse entre sí mediante la negociación de funciones, incluso si las funciones son dispares.

Configuración

Júpiter

Jugar un servidor, un canal o un apodo se refiere a la práctica de bloquear dicho canal o apodo en el servidor o red o dicho servidor en la red. Una posible explicación de cómo surgió este término es que lleva el nombre del operador llamado Júpiter, quien obtuvo el control del apodo NickServ en EFnet . [26] [ cita necesaria ] EFnet no ofrece servicios como NickServ; Júpiter obtuvo el control del apodo porque él (entre otros operadores) no creía que los apodos debieran ser propietarios. Hoy en día, EFnet opera apodos jupe que se utilizan como servicios en otras redes.

Un apodo o servidor aprovecha el hecho de que ciertos identificadores son únicos; Al utilizar un identificador, se adquiere un bloqueo exclusivo que impide que otros usuarios hagan uso de él.

Los jupes autorizados oficialmente también pueden utilizar servicios u opciones de configuración del servidor para hacer cumplir el jupe, como cuando se activa un servidor comprometido para evitar que dañe la red.

En la práctica, los operadores de IRC ahora utilizan configuraciones jupe para hacer que canales o apodos no estén disponibles administrativamente. [27] Un cambio de canal se refiere a una prohibición específica del servidor de un canal, lo que significa que no se puede unir a un canal específico cuando se está conectado a un determinado servidor, pero otros servidores pueden permitir que un usuario se una al canal. Esta es una forma de prohibir el acceso a canales problemáticos.

línea O

Una línea O (con frecuencia también escrita como O:line [ cita requerida ] ; en los IRCd que admiten operadores locales, las líneas O de estos se llaman o:lines con una O minúscula [ cita requerida ] ), abreviada de Operador Line y derivado del archivo de configuración basado en líneas del IRCd original, es una línea de código en un archivo de configuración de demonio de IRC que determina qué usuarios pueden convertirse en operadores de IRC y qué permisos obtienen al hacerlo. El nombre proviene del prefijo utilizado para la línea en el IRCd original, una O mayúscula. La línea O especifica el nombre de usuario, la contraseña, los indicadores del operador y las restricciones de la máscara de host para un operador en particular. Un servidor puede tener muchas líneas O según las necesidades administrativas del servidor y la red. [28]

Los indicadores de operador se utilizan para describir los permisos que se le otorgan a un operador. Si bien algunos operadores de IRC pueden estar a cargo del enrutamiento de la red, otros pueden estar a cargo del abuso de la red, lo que hace que su necesidad de ciertos permisos sea diferente. [4] Los indicadores de operador disponibles varían ampliamente dependiendo del demonio IRC que esté en uso. Generalmente, los demonios de IRC con más funciones tienden a tener más indicadores de operador, y los demonios de IRC más tradicionales tienen menos.

También se puede configurar una línea O para que sólo los usuarios de una determinada máscara de host o dirección IP puedan obtener el estado de operador de IRC utilizando esa línea O. El uso de máscaras de host y direcciones IP en O-line requiere que la dirección IP permanezca igual pero proporciona seguridad adicional.

línea K

Cuando un usuario tiene una línea k (abreviatura de línea de muerte ), se le prohíbe el acceso a un servidor determinado, ya sea por un período de tiempo determinado o de forma permanente. Una vez que el usuario es baneado, no se le permite volver a ese servidor. Esto se registra como una línea en el archivo de configuración del demonio IRC del servidor con el prefijo "K", de ahí "K-line".

Algunos demonios de IRC, incluido ircd-hybrid y sus descendientes, se pueden configurar para propagar líneas K a algunos o todos los demás servidores de una red. En tal configuración, las líneas K son efectivamente prohibiciones globales similares a las líneas G.

Si bien el motivo preciso de la desconexión varía de un caso a otro, los motivos habituales implican algún aspecto del cliente o usuario contra el que se emite.

Comportamiento del usuario
Las líneas K se pueden dar debido a un comportamiento inapropiado por parte del usuario, como "colisión de apodos", modo "hacking", inundación de múltiples canales, acoso a otros usuarios a través de funciones de mensajería privada , " spamming ", etc., o en el caso de redes más antiguas sin marca de tiempo, división de conducción , que no se puede corregir mediante el uso exclusivo de privilegios de operador de canal .
Software de cliente
Algunos demonios de IRC se pueden configurar para buscar virus u otras vulnerabilidades en los clientes que se conectan a ellos, y reaccionarán de varias maneras según el resultado. El software cliente obsoleto e inseguro podría bloquearse para proteger a otros usuarios de la red de vulnerabilidades, por ejemplo. Algunas redes desconectarán a los clientes que operen a través de servidores proxy abiertos o que ejecuten un servidor web inseguro.
Ubicación geográfica
Una red IRC que opera múltiples servidores en diferentes lugares intentará reducir la distancia entre un cliente y un servidor. Esto a menudo se logra desconectando (y/o prohibiendo) clientes de lugares distantes en favor de los locales.

Hay otras "líneas" de red relacionadas con la línea K. Los demonios de IRC modernos también permitirán a los operadores de IRC configurar estas líneas durante el funcionamiento normal, donde el acceso al archivo de configuración del servidor no es necesario de forma rutinaria.

línea G

Una línea G o línea de eliminación global (también escrita G:line ) es una prohibición de red global que se aplica a un usuario; El término proviene de Undernet , pero en DALnet se utilizó un concepto similar conocido como AKill . [ cita necesaria ]

Las líneas G a veces se almacenan en el archivo de configuración del IRCd, aunque algunas redes que manejan líneas K a través de los servicios de IRC prefieren tenerlas almacenadas en los archivos de configuración de su servicio. Cada vez que una persona con línea G intenta conectarse a la red IRC, los servicios o el demonio IRC desconectarán automáticamente al cliente, mostrando a menudo un mensaje que explica el motivo de la prohibición.

Las líneas G son una variante de las líneas K, que funcionan de manera muy similar, excepto que las líneas K solo desconectan a los clientes en un servidor de la red. Las líneas G normalmente se aplican a un usuario que ha recibido una línea K en un servidor pero continúa abusando de la red conectándose a través de un servidor diferente. Las líneas G a menudo se consideran una medida extrema, que sólo debe utilizarse en casos de abuso repetido cuando se han hecho grandes intentos de razonar con el usuario infractor. Por lo tanto, especialmente en redes más grandes, a menudo sólo los operadores IRC globales de muy alto rango pueden configurarlas, mientras que las líneas K, que en su mayoría se consideran un asunto local, se dejan a los operadores de cada servidor individual en la red.

Las líneas G también funcionan de forma ligeramente diferente a las líneas K. Las líneas G normalmente se configuran como *@IPaddress o *@host, siendo la primera la mejor opción. Si se utiliza la opción *@host, el servidor debe realizar una búsqueda DNS inversa en el usuario y luego comparar el host devuelto con los hosts en la lista de la línea G. Esto provoca retrasos y, si el DNS no devuelve resultados correctos, el usuario prohibido aún puede acceder a la red.

línea Z

Una línea Z o línea zap (también escrita Z:line ) es similar a una línea K, pero se aplica al rango de direcciones IP de un cliente y se considera que se usa en casos extremos. Debido a que una línea Z no tiene que verificar los nombres de usuario (identd) o los nombres de host resueltos , se puede aplicar a un usuario antes de que envíe cualquier dato al conectarse. Por lo tanto, una línea Z es más eficiente y utiliza menos recursos que una línea K o una línea G cuando se prohíbe a un gran número de usuarios.

En algunos demonios de IRC como ircd-hybrid, esto se llama línea D (línea de denegación) o línea X.

Las líneas Z a veces se almacenan en el archivo de configuración del IRCd, aunque algunas redes que manejan líneas a través de los servicios de IRC prefieren tenerlas almacenadas en los archivos de configuración de su servicio. Cada vez que una persona con la línea Z intenta conectarse a la red IRC, los servicios o el demonio IRC desconectarán automáticamente al cliente, mostrando a menudo un mensaje que explica el motivo de la prohibición.

Las líneas Z son una variante de las líneas K, que funcionan de forma muy similar. La mayoría de las líneas Z se "otorgan" a personas que abusan de la red en su conjunto (en redes más pequeñas, se emiten con mayor frecuencia por incidentes aislados).

Las líneas Z también funcionan de forma ligeramente diferente a las líneas K. Las líneas Z normalmente se configuran como *@IP o *@host, siendo la primera la mejor opción. Las líneas Z no esperan una respuesta de identificación del usuario que se conecta, sino que cierran inmediatamente el socket una vez que la IP del usuario se compara con la lista de las líneas Z y se encuentra una coincidencia. Si se utiliza la opción *@host, el servidor debe realizar una búsqueda DNS inversa en el usuario y luego comparar el host devuelto con los hosts en la lista de la línea Z. Esto puede provocar retrasos o, si el DNS no regresa correctamente, los usuarios prohibidos aún podrían acceder a la red. En realidad, la opción *@host va completamente en contra de las intenciones de usar una línea Z y, por lo tanto, algunos programas IRCd no permitirán nada más que *@IP, con comodines (?,*) o longitudes de prefijo CIDR ( por ejemplo, /8). ) permitido en la sección IP para bloquear subredes enteras. Otra diferencia con las K-lines (que afectan sólo a los clientes de IRC) es que si una IP está prohibida, nada, ni siquiera otros servidores, puede conectarse desde esta IP (o rango de IP, dependiendo de la máscara de prohibición).

Una ventaja de usar líneas Z sobre líneas K y líneas G, desde la perspectiva de un servidor o administrador de red, una línea Z usa menos ancho de banda que una línea K, principalmente porque no espera una respuesta de identificación o DNS. buscar.

Una desventaja de utilizar Z-line sobre K-line o G-line es que resulta más difícil prohibir ISP completos y direcciones IP muy dinámicas, algo común en algunas conexiones de acceso telefónico y DSL . Por ejemplo, si un administrador de red quiere prohibir todo el ISP ejemplo.com (con rangos de direcciones IP hipotéticos de 68.0.0.0 – 68.255.255.255 y 37.0.0.0 – 38.255.255.255), una línea G podría usar *@*ejemplo .com, mientras que Z-line requeriría *@37.*.*.*, *@38.*.*.* y *@68.*.*.* para lograr lo mismo.

Las líneas Z también pueden ser globales, en cuyo caso se denominan líneas GZ . Las líneas GZ funcionan de la misma manera que las líneas Z, excepto que se propagan a todos los servidores de la red. Algunos demonios de IRC también pueden configurarse para compartir líneas Z con otros servidores.

línea Q

En algunos IRCd, como UnrealIRCd, una línea Q prohíbe un apodo o cualquier apodo que coincida con un patrón determinado. Esto se usa con mayor frecuencia para prohibir el uso de apodos de servicios (como "X" o NickServ ) o prohibir el uso de apodos de operadores de IRC por parte de no operadores. Algunos demonios de IRC pueden desconectar a los usuarios cuando aplican inicialmente la Q-line, mientras que otros forzarán un cambio de apodo o no harán nada hasta que el usuario cubierto por la Q-line se vuelva a conectar. Otros IRCd, como ircd-hybrid, utilizan el comando "RESV" ("reserva"), dejando la letra de estadísticas como Q. El comando "RESV" también puede prohibir el uso de un canal.

Ver también

Referencias

  1. ^ Kalt, C. (2000). "RFC 2810 - Chat de retransmisión de Internet: arquitectura". Herramientas.ietf.org. doi : 10.17487/RFC2810 . Consultado el 3 de marzo de 2010 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  2. ^ Preguntas frecuentes sobre solicitudes de servidores IRC Archivado el 22 de abril de 2009 en Wayback Machine.
  3. ^ Kalt, C. (2000). "RFC 2810 - Chat de retransmisión de Internet: arquitectura". Herramientas.ietf.org. doi : 10.17487/RFC2810 . Consultado el 3 de marzo de 2010 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  4. ^ ab Oikarinen, J.; Caña, D. (1993). "RFC 1459 - Protocolo de chat de retransmisión de Internet". Herramientas.ietf.org. doi : 10.17487/RFC1459 . Consultado el 3 de marzo de 2010 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  5. ^ Oikarinen, J.; Caña, D. (1993). "RFC 1459 - Protocolo de chat de retransmisión de Internet". Herramientas.ietf.org. doi : 10.17487/RFC1459 . Consultado el 3 de marzo de 2010 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  6. ^ Preguntas frecuentes sobre IRCD en irc.org
  7. ^ "Buscar IRC, descripción general de la versión IRCD". Searchirc.com . Consultado el 3 de marzo de 2010 .
  8. ^ "Open Directory - Computadoras: Software: Internet: Servidores: Chat: IRC". Dmoz.org. 26 de febrero de 2010 . Consultado el 3 de marzo de 2010 .
  9. ^ "IRCD: el servidor". Funet.fi . Consultado el 3 de marzo de 2010 .
  10. ^ Historia del IRC en IRC.org
  11. ^ Historia del IRC, Daniel Stenberg
  12. ^ Ithildin IRCd
  13. ^ Inspirar IRCd
  14. ^ "WebMaster Inc". Archivado desde el original el 3 de marzo de 2016 . Consultado el 20 de enero de 2020 .
  15. ^ "WeIRC". Archivado desde el original el 14 de mayo de 2010 . Consultado el 26 de marzo de 2009 .
  16. ^ OfficeIRC: software de servidor IRC, chat web, comunicaciones internas y mensajería instantánea (IM)
  17. ^ Entrada de blog que menciona violaciones de RFC
  18. ^ Diversidad numérica de diferentes demonios IRC
  19. ^ Fuente del cliente (DMDirc) que muestra las condiciones para diferentes servidores (por ejemplo, en la función que comienza en la línea 1523)
  20. ^ IANA.org
  21. ^ Oikarinen, J.; Caña, D. (1993). "RFC 1459 - Protocolo de chat de retransmisión de Internet". Herramientas.ietf.org. doi : 10.17487/RFC1459 . Consultado el 3 de marzo de 2010 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  22. ^ "Estándar STARTTLS". Archivado desde el original el 24 de junio de 2008 . Consultado el 20 de julio de 2008 .
  23. ^ ab Paul Mutton, Hacks de IRC , O'Reilly Media , 2004, ISBN 0-596-00687-X , págs.371 
  24. ^ cuidado con la documentación P10
  25. ^ documentación del ircu P10
  26. ^ "Responder al hilo" ¿K-lined por intentar [sic] unirse al canal juped? "en los foros de EFnet" . Consultado el 13 de marzo de 2013 .
  27. ^ "Freenode, Uso de la red". Archivado desde el original el 26 de febrero de 2007 . Consultado el 25 de febrero de 2007 .
  28. ^ Operador de IRC versión 1.1.2

enlaces externos