English | German | Spanish | Hungarian | French

UnrealIRCd
http://www.unrealircd.com
Versión: 3.2.2
Versión actual : 3.2.2
Última actualización del documento: 2004-10-11

Programadores: Stskeeps / codemastr / Syzop / Luke
Contribuciones: McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk
Documentación: CKnight^ / Syzop
Traducción al español: Trocotronic (irc.rallados.net)

Debido a la crecida de la complejidad de UnrealIRCd3.2, hemos cambiado una documentación más detallada para una más fácil navegación. Para ver esta documentación debe tener un navegador compatible. Tiene un listado debajo. Los documentos actualizados están disponibles en http://www.vulnscan.org/UnrealIrcd/unreal32docs.html y una FAQ en http://www.vulnscan.org/UnrealIrcd/faq/.

Navegadores compatibles:

ÍNDICE / TABLA DE CONTENIDOS
1. Introducción y notas
---1.1. Notas al actualizar de 3.1.x a 3.2
---1.2. Notas al actualizar entre versiones 3.2
2. Instalación
3. Características
-- 3.1. Cifrado
-- 3.2. Módulos
-- 3.3. Máscaras de usuario
-- 3.4. Aliases
-- 3.5. Helpop
-- 3.6. Niveles de acceso a operadores
-- 3.7. Comandos para operadores
-- 3.8. SSL
-- 3.9. IPv6
-- 3.10. Zip links
-- 3.11. Soporte conexión DNS/IP dinámico
-- 3.12. Características anti-flood
-- 3.13. Tipos de ban
-- 3.14. Filtro de spam
-- 3.15. CIDR
-- 3.16. Otras características
4. Configurando su fichero unrealircd.conf
---4.1. Explicación del archivo
---4.2. Bloque me -=- (M:Line)
---4.3. Bloque admin -=- (A:Line)
---4.4. Bloque class -=- (Y:Line)
---4.5. Bloque allow -=- (I:Line)
---4.6. Bloque listen -=- (P:Line)
---4.7. Bloque oper -=- (O:Line)
---4.8. Bloque drpass -=-(X:Line)
---4.9. Directriz include
---4.10. Directriz loadmodule
---4.11. Bloque log
---4.12. Bloque TLD -=- (T:Line)
---4.13. Bloque ban nick -=- (Q:Line)
---4.14. Bloque ban user -=- (K:Line)
---4.15. Bloque ban ip -=- (Z:Line)
---4.16. Bloque ban server -=-(q:Line)
---4.17. Bloque ban realname -=- (n:Line)
---4.18. Bloque ban version
---4.19. Bloque ban exception -=- (E:Line)
---4.20. Bloque TKL exception
---4.21. Bloque throttle exception
---4.22. Bloque deny DCC -=- (dccdeny.conf)
---4.23. Bloque deny version -=- (V:Line)
---4.24. Bloque deny link -=- (D:Line / d:Line)
---4.25. Bloque deny channel -=- (chrestrict.conf)
---4.26. Bloque allow channel
---4.27. Bloque allow DCC
---4.28. Bloque vhost -=- (vhost.conf)
---4.29. Bloque badword -=- (badwords.conf)
---4.30. Bloque uline -=- (U:Line)
---4.31. Bloque link -=- (C/N/H:Lines)
---4.32. Bloque alias
---4.33. Bloque help
---4.34. Bloque official channels
---4.35. Bloque spamfilter
---4.36. Bloque set -=- (networks/unrealircd.conf)
5. Archivos adicionales
6. Modos de usuario y canal
7. Comandos de usuario y operador
8. Consejos de seguridad
---8.1. Contraseñas
---8.2. Vulnerabilidades no-IRCd
---8.3. Permisos y archivo de configuración
---8.4. Problemas de usuario
---8.5. SSL/SSH y análisis de conexión
---8.6. Ataques Denegación de Servicio (DoS) [o: cómo proteger mi hub]
---8.7. Información descubierta
---8.8. Protección contra agujeros explotables
---8.9. Sumario
9. Dudas más comunes (FAQ)

1.0 – Introducción y notas

Este documento se escribió exclusivamente para el uso con UnrealIRCd. El uso de este documento con otro programa o la distribución de este documento con otro programa está terminantemente prohibida sin los permisos de escritura del Equipo de Desarrollo de UnrealIRCd. Este documento se puede copiar, imprimir, reproducir o publicar tantas veces se quiera, para el uso de UnrealIRCd y sin modificación alguna. – Copyright UnrealIRCd Development Team 2002-2004

Por favor lea este manual antes de solicitar ayuda, el 80% de las dudas más frecuentes están en una FAQ. Si todavía requiere ayuda, puede encontrarla en irc.ircsystems.net (puerto 6667) canal #unreal-support (nota: le pedimos que sean dudas relacionadas con UnrealIRCd, no con servicios). Si ha encontrado un error (como un bloqueo del programa) notifíquelo en http://bugs.unrealircd.org.

1.1 – Notas al actualizar de 3.1.x a 3.2

En el caso que esté actualizando desde Unreal3.1.x a Unreal3.2 apreciará que toda la configuración ha cambiado. Lo encontrará difícil en un principio, pero una vez la haya cambiado encontrará que es mucho mejor.

No olvide leer la sección 3 sobre las características, todo y que conocerá algunas de 3.1.x existen cuantiosas mejoras.

No se recomienda unir servidores 3.1.x con 3.2. Aun así, si quiere hacerlo deberá ser a partir de la versión 3.1.4, pero se recomienda encarecidamente 3.1.5.1.

1.2 – Notas al actualizar entre versiones 3.2

La mejor manera de actualizar es:
Linux:

Windows:

Por favor lea .RELEASE.NOTES para saber los últimos cambios. Si notifica algún cambio (o errores) entre versiones, hágalo después de haber leído el fichero.

2.0 - Instalación


Sistemas operativos soportados y testeados:

Si tiene Unreal3.2 trabajando correctamente en otros sistemas, envíe los detalles a docs@unrealircd.com

Instrucciones de instalación
Linux:

  1. gunzip -d Unreal3.2.2.tar.gz
  2. tar xvf Unreal3.2.2.tar
  3. cd Unreal3.2
  4. ./Config
  5. Responda a las preguntas que se le formulen. Si no conoce alguna, utilice el valor por defecto.
  6. make
  7. Cree su archivo unrealircd.conf y otros archivos de configuración. Vea la sección 4.

Windows:

  1. Ejecute el instalador.
  2. Cree su archivo unrealircd.conf y otros archivos de configuración. Vea la sección 4.

3.0 - Características

Algunas de las características más relevantes se explican en esta sección. Da una idea general de su potencia y a veces hace referencia al archivo de configuración (algo que quizás no conozca todavía).

Puede omitir esta sección, sin embargo es interesante leerla antes y despues de la instalación.

3.1 - Cifrado

Las direcciones host de los usuarios se encriptan mediante un cifrado. Por ejemplo, si su host es d5142341.cable.wanadoo.nl, se mostrará (en join, part, whois, etc) como rox-2DCA3201.cable.wanadoo.nl. Esta medida es muy útil para prevenir ataques entre usuarios.

Está controlado por el modo de usuario +x (uso: /mode tunick +x). Los administradores pueden forzar el uso por defecto, o restringir su uso.

Un host cifrado está generado por un módulo (requerido). Actualmente existen dos módulos oficiales:
cloak: Este es el nuevo módulo de cifrado que es mucho más seguro que el viejo. Usa md5 internamente y requiere la especificación de tres claves set::cloak-keys:: alfanuméricas [ej: "AopAS6WQH2Os6hfosh4SFJHs"]. Mire el archivo example.conf para hacerse una idea.
oldcloak: Es el viejo cifrado usado por Unreal3.2 y anteriores. Sólo se recomienda su uso en procesos de migración y actualización. No se considera seguro (se le avisará de ello si lo usa) y deberá utilizar 'cloak' tan pronto como sus servidores puedan.

Las claves de cifrado (en adelante "cloak keys") deben ser las mismas en todos los servidores de la red. Procure que estas claves sean secretas. Si alguien las conociera, podría decodificar el host original, lo que provocaría la pérdida de efectividad del modo de usuario +x.

3.2 - Módulos

UnrealIRCd soporta módulos que aportan cuantiosas ventajas:
- Puede cargarlos, refrescarlos y descargarlos mientras tiene el servidor abierto (usando /rehash). Esto le permite corregir fallos o disponer de las nuevas mejoras de los módulos cargados y todo sin la necesidad de reiniciar.
- Otra gente puede crear nuevos módulos con nuevos comandos, modos de usuario e incluso modos de canales.
UnrealIRCd sólo se distribuye con unos pocos módulos. Visite www.unrealircd.com en módulos o use google para encontrar más.

Se necesita cargar almenos dos módulos:
- El módulo de comandos: commands.so (commands.dll en windows)
- El módulo de cifrado: generalmente cloak.so (cloak.dll en windows).

3.3 - Máscaras

Las máscaras de usuario (conocidas como snomasks) son un tipo especial de modo de usuario que controla qué notificaciones del servidor quiere recibir (generalmente usado para operadores).

Se pueden usar mediante: /mode tu nick +s MÁSCARA. Por ejemplo:: /mode yournick +s +cF
Para quitar algunas máscaras, use algo como: /mode tunick +s -c, por ejemplo.
Puede quitarse todas las máscaras quitándose simplemente el modo s: /mode tunick -s

Se disponen de las siguientes máscaras:
c - conexiones locales
F - conexiones remotas (menos de servidores de servicios)
f - notificaciones de flood
k - notificaciones de desconexiones forzadas [*]
e - notificaciones de información
j - notificaciones de medidas
v - notificaciones de hosts virtuales
G - notificaciones de gline/shun
n - notificaciones de cambios de nicks locales
N - notificaciones de cambios de nicks remotos
q - notificaciones de denegación de nicksdeny nick (Q:line)
s - notificaciones del servidor [*]
S - notificaciones del filtro de spam
o - notificaciones de identificaciones de Operadores de red
[*: disponible para usuarios no operadores]

Puede controlar qué máscaras puede obtener (set::snomask-on-connect) y cuáles para operadores (set::snomask-on-oper, oper::snomask)

3.4 - Aliases

Con los aliases puede configurar comandos de usuario. Puede, por ejemplo, permitir "/ns identify blah" sea redirigido a nickserv (que se traduciría como: privmsg nickserv identify blah). Puede incluso hacer aliases más complejos como /register sea redirigido a chanserv si el primer parámetro empieza por # o a nickserv si no empieza.

Los aliases se configuran con los bloques alias en el archivo de configuración y puede incluír varios archivos en el mismo para la mayoría de servicios.

3.5 - Helpop

UnrealIRCd tiene un sistema accesible de ayuda usando /helpop. Este comando es completamente configurable vía el bloque help. Además, se incluye el archivo help.conf con algunas nociones básicas para todos los comandos soportados.
Por ejemplo, /helpop chmodes le muestra una lista de todos los modos de canal que tiene UnrealIRCd.
Recuerde que si es un operador (helpop) tiene que prefijar los mensajes con '?'. Así, /helpop es /helpop ? y /helpop chmodes es /helpop ?chmodes etc..

3.6 - Niveles de acceso a operadores

Existen varios niveles de operadores en UnrealIRCd y puede utilizar privilegios adicionales (como el uso de /gline) para cada uno, según los que necesite el operador.

Se controla mediante opciones en el bloque oper. Vea el bloque oper para más información.

3.7 - Comandos para operadores

UnrealIRCd tiene muchos comandos para operadores, explicados en Comandos de usuario y operadores.

3.8 - SSL

SSL se entiende por Secure Socket Layer. Con SSL puede hacer conexiones encriptadas de una forma segura. Puede usarse para encriptar conexiones servidor a servidor y de cliente a servidor. Usará SSL para proteger contra análisis y para una autentificación de la otra máquina.

Necesita tener compilado su servidor con soporte SSL. Además, necesitará disponer de un puerto SSL, configurable en listen::options::ssl.

No puede conectar normalmente a un puerto SSL. Así, no podrá usar el puerto 6667 para SSL. Además se requiere un cliente o una pasarela que entienda el protocolo SSL.

Clientes que soportan SSL: XChat, irssi, mIRC (6.14 y posteriores, con pasos adicionales)

Para clientes que no soporten SSL puede usar una pasarela como stunnel. Aquí tiene un ejemplo (para stunnel 4.x):

   client = yes
   [irc]
   accept = 127.0.0.1:6667
   connect = irc.myserv.com:6697
Entonces, si conecta a 127.0.0.1 en el puerto 6667, su tráfico será encriptado y enviado a irc.myserv.com en el puerto 6697 (puerto SSL).

Probablemente necesitará validar certificados cuando conecte a un servidor y no los acepte a ciegas (como en el ejemplo anterior). Si no, será todavía vulnerable a ataques por análisis de conexión ("sniffing"). Sin embargo, es muy denso para explicar aquí (lea información sobre SSL, no nos pregunte). [mIRC y xchat muestran una ventana preguntando si aceptar o rechazar el certificado, eso es bueno].

3.9 - IPv6

UnrealIRCd soporta IPv6. Desde la versión beta15 parece ser estable.
Su sistema opertivo necesita tener soporte IPv6 y tenerlo activado en UnrealIRCd en ./Config.

Aun así, microsoft ha añadido una implementación experimental para w2k/XP que no soporta UnrealIRCd (todavía).

3.10 - Zip links

Zip links se pueden utilizar para conexiones servidor a servidor, que comprime el tráfico usando zlib. Puede ahorrar un 60-80% del ancho de banda. Así pues, puede serle util para conexiones de baja capacidad o para conexiones con muchos usuarios.

Para compilar con soporte zip links necesita responder Yes a la pregunta zlib en ./Config configurar link::options::zip (en ambos servidores).

3.11 - Soporte conexión DNS/IP dinámico

UnrealIRCd tiene algunas características (nuevas) que ayudan a usuarios con IP dinámicas a usar DNS dinámicos (como blah.dyndns.org). Si está conectando dos DNS dinámicos, entonces establezca link::options::nodnscache y link::options::nohostcheck.

3.12 - Características anti-flood

Throttling
Throttling es un método que le permite fijar un límite de cuántas veces pueden los usuarios conectarse y desconectarse de su servidor. Puede configurarlo en el bloque set::throttle para permitir X conexiones en YY segundos para la misma IP.
Modos de canal
Existen varios modos de canal para prevenir ataques. Algunos son:
K = no /knock, N = no cambios de nick, C = no CTCPs, M = sólo usuarios reigstrados (+r) pueden hablar.
Desde la versión beta18 eixste el modo +f que es mucho más avanzado...
Modo de canal f
En vez de usar scripts y bots para proteger un canal contra floods ahora se incluye en el propio ircd.
Un ejemplo del modo +f es:*** Blah sets mode: +f [10j]:15
Significa que se permiten 10 joins cada 15 segundos. Si se supera este límite el servidor pondrá el modo +i automáticamente.
Aquí se detallan los tipos de flood:
tipo: nombre: acción por defecto: otras acciones: comentarios
cCTCPsauto +Cm, M 
jjoinsauto +iR 
kknocksauto +K  para clientes locales
mmessages/noticesauto +mM 
nnickchangesauto +N  
ttextkickb antiguo +f. Expulsará o baneará al usuario

  Ejemplo:

*** ChanOp sets mode: +f [20j,50m,7n]:15
<ChanOp> lalala
*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined #test
*** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) has joined #test
*** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) has joined #test
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined #test
-- snip XX lines --
*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has joined #test
-server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i
*** server1.test.net sets mode: +i
<Evil2> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil12> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil15> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil10> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil8> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
-- snip XX lines --
-server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m
*** server1.test.net sets mode: +m
*** Evil1 is now known as Hmmm1
*** Evil2 is now known as Hmmm2
*** Evil3 is now known as Hmmm3
*** Evil4 is now known as Hmmm4
*** Evil5 is now known as Hmmm5
*** Evil6 is now known as Hmmm6
*** Evil7 is now known as Hmmm7
*** Evil8 is now known as Hmmm8
-server1.test.net:#test *** Channel nickflood detected (limit is 7 per 15 seconds), putting +N
*** server1.test.net sets mode: +N
De hecho, puede complicarse más:
En vez de usar la acción por defecto, puede especificar otras como por ejemplo: +f [20j#R,50m#M]:15
Esto pondrá el canal en +R si se sobrepasa el límite de 20 joins en 15 segundos y pondrá el modo +M si se superan los 50 mensajes en 15 segundos.

Además, se puede especificar el tiempo de duración de este modo: +f [20j#R5]:15 pondrá el canal en +R si se sobrepasa el límite y lo quitará después de 5 minutos.
El servidor puede usar un tiempo para quitar los modos por defecto (set::modef-default-unsettime). Así, si usa+f [20j]:15 se pasa a +f [20j#i10]:15, que es por defecto, pero puede seguir usando[20j#i2]:15 y para no quitar nunca este modo +f [20j#i0]:15 (usando 0).

El viejo modo +f todavía está disponible como 't', +f 10:6 pasa a ser +f [10t]:6 y +f *20:10 es +f [20t#b]:10. Actualmente el ircd convierte este cambio. Fíjese que no hay tiempo para quitar este modo ([20t#b30]:15 no funcionará).

¿Cuál es la mejor combinación? No existe el modo +f perfecto para todos los canales, pero puede guiarse con el siguiente ejemplo para ajustarlos a sus necesidades:
+f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15
30 joins en 15 segundos, si se supera el límite se pone el modo +i durante 10 minutos
40 mensajes en 15 segundos, si se supera el límite se pone el modo +m durante 10 minutos
7 ctcps en 15 segundos, si se supera el límite se pone el modo +C durante 15 minutos
10 cambios de nick en 15 segundos, si se supera el límite se pone el modo +N durante 15 minutos
30 knocks en 15 segundos, si se supera el límite se pone el modo +K durante 10 minutos
Especialmente, quitar los modos es importante. Imagínese un canal sin operadores, el modo estaría durante 15 minutos, en el que la gente no podría hablar, dependiendo del tipo de flood.

3.13 - Tipos de ban

Tipos de ban básicos y hosts cifrados
UnrealIRCd soporta los bans básicos como +b nick!user@host.
Además, si un host cifrado como 'rox-ACB17294.isp.com' y pone un ban a *!*@rox-ACB17294.isp.com, entonces si el usuario se pone -x (y su host es 'dial-123.isp.com') el ban continuará siendo vigente. Los bans se comprueban con los hosts virtuales y reales.
También se admiten bans a la IP (ej: *!*@128.*) y siempre se comprueba.

Los bans a IPs cifradas requieren una atención especial:
Si el usuario tiene la IP 1.2.3.4 y su host cifrado es 341C6CEC.8FC6128B.303AEBC6.IP, entonces:
Si pone +b *!*@341C6CEC.8FC6128B.303AEBC6.IP estará baneando*!*@1.2.3.4 (obviamente)
Si pone +b *!*@*.8FC6128B.303AEBC6.IP estará baneando a *!*@1.2.3.*
Si pone +b *!*@*.303AEBC6.IP estará baneando a *!*@1.2.*
Puede serle útil cuando decida poner un ban.

Tipos de ban extendidos
Un ban extendido sigue este formato ~[!]<tipo>:<ban>. Se soportan los tipos:
tipo: nombre explicación
~qquiet Los usuarios que coincidan con este ban no podrán hablar, a menos que tenga +v o superior. Ej: ~q:*!*@blah.blah.com
~nnickchange Los usuarios que coincidan con este ban no podrán cambiarse el nick, a menos que tenga +v o superior. Ej: ~n:*!*@*.aol.com
~cchannel Si el usuario está en ese canal no podrá entrar. Ej: ~c:#lamers
~rrealname Si su realname coincide no podrá entrar
Ej: ~r:*Stupid_bot_script*
NOTA: un guión bajo ('_') coincide con un espacio (' ') y un guión bajo. Será lo mismo 'Stupid bot script v1.4'.
Estos bans también se soportan por la lista de excepciones (+e).
Los módulos pueden añadir otros tipos de ban.

3.14 - Filtro de spam

El filtro de spam es un nuevo sistema para luchar contra el spam, la publicidad, los guasnos y otras cosas. Trabaja como las badwords pero con algunas ventajas.

Los filtros spam se añaden vía /spamfilter que utiliza la sintaxis:
/spamfilter [add|del|remove|+|-] [tipo] [acción] [tkltiempo] [razón] [regex]
[tipo] especifica el destino:
Char:Config item: Descripción:
cchannel Mensaje a canal
pprivate Mensaje privado (de usuario->usuario)
n private-notice Aviso privado
Nchannel-notice Aviso a canal
Ppart Mensaje part
qquit Mensaje quit
ddcc Archivo DCC
uuser User ban, coincidirá con nick!user.@host:realname
Puede especificar varios destinos, por ejemplo: cpNn
[accción] especifica una acción a tomar (sólo una)
kill desconecta al usuario
tempshun pone un shun a la sesión actual del usuario (si reconecta el shun se va)
shun pone un shun al host
kline pone una kline al host
gline pone una gline al host
zline pone una zline al host
gzline pone una gzline al host
block sólo bloquea el mensaje
dccblock marca el usuario para no poder enviar más DCCs
viruschan fuerza su salida de todos los canales, fuerza su entrada a set::spamfilter::virus-help-channel, desactiva todos los comandos menos PONG, ADMIN y mensajes a set::spamfilter::virus-help-channel
[tkltiempo] Duración de la *line añadida por el filtro, use '-' para el valor por defecto o para saltarlo (ej: si la acción es 'block')
[razón] Motivo de la *line. No puede usar espacios, pero los guiones bajos ('_') se transforman en espacios. Los guiones bajos dobles ('__') en simples ('_'). Use '-' para una razón por defecto.
[regex] expresión regular que debe ser filtrada

Por ejemplo: /spamfilter add pc gline - - Come watch me on my webcam
Si se encuentra el texto come watch me on my webcam en un privado o mensaje a canal entonces se bloquea el mensaje y se le pone una gline.
Otro ejemplo: /spamfilter add pc block - - come to irc\..+\..+
Es una expresión regular que concuerda con Hi, come to irc.blah.net etc.
Y un ejemplo especificando la razón y el tiempo::
/spamfilter add p gline 3h Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam
Si se encuentra come watch me on my webcam en un privado el usuario es glineado para tres horas con la razón Please go to www.viruscan.xx/nicepage/virus=blah.

Los filtros de spam añadidos con /spamfilter son globales en la red. Trabajan pase lo que pase aunque el usuario tenga +G. Sólo los operadores y servicios de red están excemtos del filtrado.

Puede añadir filtros de spam en el archivo de configuración pero estos filtros serán locales. Su uso se describe en el bloque spamfilter here
Ejemplo:

spamfilter {
	regex "//write \$decode\(.+\|.+load -rs";
	target { private; channel; };
	reason "Generic $decode exploit";
	action block;
};

set::spamfilter::ban-time permite modificar el valor por defecto del tkltiempo (por defecto 1 día)
set::spamfilter::ban-reason permite especificar una razón por defecto (por defecto 'Spam/advertising')
set::spamfilter::virus-help-channel permite especificar un canal para forzar la entrada en la acción 'viruschan' (por defecto #help)
set::spamfilter::virus-help-channel-deny permite bloquear los joins normales al canal virus-help-channel (por defecto no)

3.15 - CIDR

UnrealIRCd dispone de soporte para CIDR (Classless Interdomain Routing). CIDR te permite banear rangos de IPs. Todas las IPs se localizan en los ISPs usando CIDR. Así pues, pudiendo banear fácilmente un ISP. Unreal soporta CIDR para IPv4 y IPv6. Las máscaras CIDR se pueden usar en allow::ip, ban user::mask, ban ip::mask, except ban::mask, except throttle::mask y except tkl::mask (para gzline, gline y shun). Además, se puede utilizar CIDR en /kline, /gline, /gzline, /zline y /sun. Se utiliza el estándar de IP/bits, por ejemplo, 12.0.0.0/8 (es 127.0.0.0 - 127.255.255.255) y fe80:0:0:123::/64 (es fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).

3.16 - Otras características

UnrealIRCd tiene muchísimas más características que no se detallan... Deberá encontrarlas por usted mismo.

4.0 - Configurando su unrealircd.conf

Antes de todo, crear un buen archivo unrealircd.conf puede tomarle algo de tiempo, probablemente entre 10 y 60 minutos. Puede intentar hacer uno rápido y mejorarlo más tarde, o puede aprender las secciones directamente paso a paso. Si tiene problemas, compruebe su sintaxis, compruebe el manual y la FAQ antes de preguntar o notificar un fallo.

4.1 Archivo de configuración

El nuevo sistema está basado en bloques. Cada entrada, o bloque, tiene un formato concreto, parecido a:

<nombre-bloque> <valor-bloque> {
	<directriz-bloque> <valor-directriz>;
};

<nombre-bloque> es el tipo de bloque, como me o admin. <valor-bloque> a veces requiere un valor, como /oper login, pero la mayoría de veces será un sub-tipo como en ban user.

<directriz-bloque> es una variable individual del bloque, y <valor-directriz> es su valor asociado. Si <valor-directriz> contiene espacios, o caracteres que representan un comentario, deberá entrecomillarlo. Si quiere usar una doble comilla, deberá escaparla \".

Un <bloque-directriz> puede tener varias directrices. Si es el caso, tendrá sus propias subsecciones. Algunos bloques sólo requieren un <valor-bloque>, como ocurre en include. Fíjese que no hay un formato fijado, significa que el bloque entero puede aparecer en una o varias líneas. El formato mencionado es el más utilizado (y el que se usará en adelante) porque facilita su lectura.

Nota: el archivo es sensible a mayúsculas/minúsculas. Es una notación especial usada para refererirse a las entradas. Por ejemplo, hablar de <nombre-directriz>, está diciendo <nombre-bloque>::<directriz-bloque>, y si la directriz tiene un subbloque, deberá añadir otros :: y el nombre de la subdirectriz.

Hablar sobre una directriz sin nombre deberá hacerlo con <nombre-bloque>:: que en este caso significa <valor-bloque>, o puede tener un subbloque sin nombre.

Se soportan tres tipos de comentario:

# Una sola línea
// Una sola línea
/* Varias
    líneas */

Ahora que ya conoce como funciona, cree su archivo unrealircd.conf o cópielo de doc/example.conf y edítelo. Es recomendable ir paso a paso.

4.2 - Bloque me REQUERIDO (conocido como M:Line)

Sintaxis:

me {
	name <nombre-del-servidor>;
	info <descripción-servidor>;
	numeric <numérico>;
};

Estos valores se sobreentienden. name especifica el nombre del servidor, info su descripción y numeric el numérico con el que se identifica el servidor. Debe ser un valor entre 1 y 255 y debe ser único en la red. Otro servidor no podrá tener el mismo numérico.

Ejemplo:

me {
	name "irc.foonet.com";
	info "FooNet Server";
	numeric 1;
};

4.3 - Bloque admin REQUERIDO (conocido como A:Line)

Sintaxis:

admin {
	<text-line>;
	<text-line>;
};

El bloque admin define el texto a mostrar en /admin. Puede especificar tantas líneas como quiera que contengan, pero se suele incluir el nick de los administradores y alguna dirección e-mail de referencia.

Ejemplo:

admin {
	"Bob Smith";
	"bob";
	"widely@used.name";
};

4.4 - Bloque class REQUERIDO (conocido como Y:Line)

Sintaxis:

class <nombre> {
	pingfreq <frecuencia-ping>;
	connfreq <frecuencia-connect>;
	maxclients <máximo-clientes>;
	sendq <cola-de-salida>;
	recvq <cola-de-llegada>;
};

Este bloque contiene qué conexiones deben relacionarse. Generalmente tendrá varias clases, para servidores, clientes, operadores.

name es un nombre descriptivo de la clase, como "clients" o "servers", que se usará para la referencia

pingfreq es el número de segundos de PINGs entre servidores (se recomienda un valor entre 90 y 180)

connfreq se usa sólo para servidores y es el número de segundos para el intento de conexión si está activado autoconnect

maxclients especifica el número máximo de clientes o servidores que puede albergar la clase

sendq especifica la cantidad de tráfico que puede enviar (muy alto para servidores con poco ancho de banda y mediano para clientes)

recvq especifica la cantidad de tráfico que puede recibir y se usa para evitar flood (sólo se aplica en usuarios). Pruebe con valores entre 3000 y 8000, que es el valor por defecto

Ejemplos:

class clients {
	pingfreq 90;
	maxclients 500;
	sendq 100000;
	recvq 8000;
};

class servers {
	pingfreq 90;
	maxclients 10; /* máximo de servidores unidos al mismo tiempo */
	sendq 1000000;
	connfreq 100; /* segundos antes de cada intento de conexión */
};

4.5 - Bloque allow REQUERIDO (conocido como I:Line)

Sintaxis:

allow {
	ip <user@máscara-ip>;
	hostname <user@máscara-host>;
	class <clase-de-conexión>;
	password <contraseña> { <tipo-identificación>; };
	maxperip <máximo-usuarios-por-misma-ip>;
	redirect-server <servidor-a-redirigir>;
	redirect-port <puerto-a-redirigir>;
	options {
		<opción>;
		<opción>;
		...
	};
};

Este bloque define quién puede conectar al servidor. Puede tener varios bloques allow.

Sobre la correspondencia
El control de acceso funciona con ip o hosts, así "hostname *@*;" y "ip *@1.2.3.4;" significa que siempre corresponderá. Además siempre tendrá preferencia el bloque que ponga después del bloque general *@*.  Si quiere relacionar un bloque por ip, entonces fije el hostname a algo inválido, como "hostname NOBODY;", para hacerlo sólo por ip.

ip
La máscara ip es de la forma user@ip, user es la ident, generalmente *, y la ip es la ip en cuestión. Ej: *@* (para todos), *@192.168.* (para direcciones que empiecen por 192.168), etc.

host
También user@host. user user generalmente se pone a *. Ej: *@* (todos), *@*.retevision.es (sólo para retevisión.es).

password (opcional)
Precisa una contraseña para conectar. Puede especificar el método de cifrado de la contraseña.

class
Especifica la clase a la que se relacionará la conexión.

maxperip (opcional, recomendado)
Le permite especificar cuántas conexiones simultáneas se permiten en el servidor.

redirect-server (opcional)
Si la clase está llena, a qué servidor redireccionar los clientes (si el cliente lo soporta [mIRC 6 lo hace]).

redirect-port (opcional)
Si se especifica redirect-server puede especificar el puerto, si no se asume 6667.

bloque options (opcional)
Opciones válidas:
   useip siempre usa la ip en vez del host
   noident no utiliza la ident especificada por el cliente
   ssl sólo relaciona si el cliente usa SSL
   nopasscont relaciona aunque no se especifique contraseña (así puede poner clientes en clases diferentes si dan o no dan contraseña)

Ejemplos:

allow {
	ip *;
	hostname *;
	class clients;
	maxperip 5;
};

allow {
	ip *@*;
	hostname *@*.passworded.ugly.people;
	class clients;
	password "f00Ness";
	maxperip 1;
};

 

4.6 - Bloque listen REQUERIDO (conocido como P:Line)

Sintaxis:

listen <ip:puerto> {
	options {
		<opción>;
		<opción>;
		...
	};
};

Este bloque especifica qué puertos deberán escucharse. Si no se requieren opciones, deberá hacerlo sin directrices, con la forma <ip>:<puerto>;.

ip y puerto
Puedes fijar la ip a * para enlazar con todas las ips posibles, o especificar una ip a enlazar (usada en proveedores de shells). El puerto es el puerto que se va a escuchar. Puede especificar un rango. Por ejemplo, 6660-6669 escuchará los puertos desde 6660 hasta 6669, ambos incluídos. Para usuarios IPv6 vea a continuación.

Información para usuarios IPv6
Si tiene un servidor IPv6 necesitará englobar la IP entre llaves, com [::1]:6667 (escucha localhost en el puerto 6667). Si usa IPv6 y quiere escuchar una ip IPv4 necesitará usar ::ffff:ipv4ip. Por ejemplo, [::fff:203.123.67.1]:6667 pondrá en escucha el puerto 6667 de la ip 203.123.67.1. Obviamente puede usar *.

bloque options (opcional)
Puede especificar opciones adicionales:
clientsonly
puerto exclusivo para clientes
serversonly
puerto exclusivo para servidores
java
soporte CR javachat
ssl
puerto SSL

Ejemplos:

listen *:6601 {
	options {
		ssl;
		clientsonly;
	};
};

O si no hay opciones:

listen *:8067;
listen 213.12.31.126:6667;
listen *:6660-6669;

4.7 - Bloque oper RECOMENDADO (conocido comoO:Line)

Sintaxis:
oper <nombre> {
	from {
		userhost <hostmask>;
		userhost <hostmask>;
	};
	password <contraseña> { <auth-type>; };
	class <clasee>;
	flags <flags>;
	flags {
		<flag>;
		<flag>;
		...
	};
	swhois <información whois>;
	snomask <snomask>;
	maxlogins <num>;
modes <modos>;
};

El bloque oper permite asignar Operadores de Red para tu servidor. oper:: especifica el nombre de usuario para /oper. oper::from::userhost es una máscara user@host que debe coincidir. Puede especificar más de una máscara usando varios oper::from::userhost. oper::password es la contraseña que deberá especificar, oper::password:: permite especificar un método de cifrado para esta contraseña. Métodos válidos: crypt, md5, sha1 y ripemd-160. Si no utilizará método de cifrado, este bloque puede omitirse.

Note que es sensible a maýusculas y minúsculas.

La directriz oper::class especifica el nombre de una clase preexistente (que aparezca antes del archivo) y es a la que relacionará el operador.

La directriz oper::flags tiene dos formatos. Si quiere usar el antiguo sistema (ej: OAa) deberá usar flags <flags>; si quiere usar el nuevo estilo, flags { <flag>; }. A continuación se detallan los flags soportados:

Antiguo
Nuevo
Descripción
o
local
Le hace operador local
O
global
Le hace operador global
C
coadmin
Le hace coadmin
A
admin
Le hace admin
a
services-admin
Le hace admin de servicios
N
netadmin
Le hace administrador de red
r
can_rehash
Puede usar /rehash
D
can_die
Puede usar /die
R
can_restart
Puede usar /restart
h
helpop
Recibe modo +h (helpop)
w
can_wallops
Puede usar /wallops
g
can_globops
Puede usar /globops
c
can_localroute
Puede conectar servidores localmente
L
can_globalroute
Puede conectar servidores remotamente
k
can_localkill
Puede usar /kill en usuarios locales
K
can_globalkill
Puede usar /kill en usuarios remotos
b
can_kline
Puede usar /kline
B
can_unkline
Puede usar /kline -user@host
n
can_localnotice
Puede enviar notificaciones locales
G
can_globalnotice
Puede enviar notificaciones globales
z
can_zline
Puede usar /zline
t
can_gkline
Puede usar /gline, /shun y /spamfilter
Z
can_gzline
Puede usar /gzline
W
get_umodew
Recibe modo +W
H
get_host
Fija su host de operador
v
can_override
Puede usar OperOverride
q
can_setq
Puede usar el modo de usuario +q
X
can_addline
Puede usar /addline
d
can_dccdeny
Puede usar /dccdeny y /undccdeny

Algunos flags se incluyen al recibirse:

local global admin/coadmin services-admin netadmin
can_rehash can_rehash can_rehash can_rehash can_rehash
helpop helpop helpop helpop helpop
can_globops can_globops can_globops can_globops can_globops
can_wallops can_wallops can_wallops can_wallops can_wallops
can_localroute can_localroute can_localroute can_localroute can_localroute
can_localkill can_localkill can_localkill can_localkill can_localkill
can_kline can_kline can_kline can_kline can_kline
can_unkline can_unkline can_unkline can_unkline can_unkline
can_localnotice can_localnotice can_localnotice can_localnotice can_localnotice
  can_globalroute can_globalroute can_globalroute can_globalroute
  can_globalkill can_globalkill can_globalkill can_globalkill
  can_globalnotice can_globalnotice can_globalnotice can_globalnotice
    global global global
    can_dccdeny can_dccdeny can_dccdeny
      can_setq can_setq
        admin
        services-admin

La directriz oper::swhois añade una línea adicional a su whois. [opcional]

La directriz oper::snomask fija las máscaras de servidor que recibirá. Vea la sección 3.3 [opcional]

La directriz oper::maxlogins restringe el número de intentos para hacerse operador. Si lo fija a 1, sólo podrá haber un operador usando este bloque al mismo tiempo [opcional]

La directriz oper::modes establece qué modos recibe el operador cuando se identifica. [opcional]

Ejemplo:

oper bobsmith {
	class clients;
	from {
		userhost bob@smithco.com;
		userhost boblaptop@somedialupisp.com;
	};
	password "f00";
	flags {
		netadmin;
		can_gkline;
		can_gzline;
		can_zline;
		can_restart;
		can_die;
		global;
	};
	swhois "Example of a whois mask";
	snomask frebWqFv;
};

Un poco sobre OperOverride:
OperOverride tiene aspectos como entrar en canales con +ikl, saltarse bans (deberá usar /invite antes), opearse en el canal, etc.
El operflag can_override fue añadido para evitar este abuso. No está por defecto, deberá especificarlo expresamente para cada operador.

4.8 - Bloque drpass RECOMENDADO (conocido como X:Line)

Sintaxis:

drpass {
	restart <contraseña-reinicio> { <auth-type>; };
	die <contraseña-fin> { <auth-type>; };
};

Este bloque fija las contraseñas para /restart y /die con drpass::restart y drpass::die respectivamente. Las directrices drpass::restart:: y drpass::die:: permiten especificar un método de cifrado de contraseñas. Los métodos soportados son crypt, md5, sha1 y ripemd-160.

Eejemplo:

drpass {
	restart "I-love-to-restart";
	die "die-you-stupid";
};

4.9 - Directriz include

Sintaxis:
include <archivo>;

Especifica el archivo a cargar como archivo de configuración. Puede contener configuraciones de bloques e incluso contener otros archivos. Se permite el uso de comodines en el nombre del archivo para cargar varios archivos a la vez.

ejemplo 1: un archivo de red

include mynetwork.network;

Usará un archivo de red por separado, aunque ya no se necesitan; toda la configuración de red puede insertarse directamente en el archivo unrealircd.conf.

ejemplo 2: aliases

include aliases/ircservices.conf

Otro ejemplo para incluir aliases. UnrealIRCd viene con varios archivos que contienen aliases para la mayoría de servicios:

4.10 - Directriz loadmoule REQUERIDO

Sintaxis:
loadmodule <archivo>;

Vea aquí por qué son útiles.

Los módulos que vienen de serie con Unreal3.2:

commands.so / commands.dll - Todos los comandos (casi todos) REQUERIDO
cloak.so / cloak.dll - Módulo de cifrado REQUERIDO (u otro módulo de cifrado)

Cerciórese de cargar estos dos módulos

loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

o en windows:

loadmodule "modules/commands.dll";
loadmodule "modules/cloak.dll";

4.11 - Bloque log OPCIONAL

Sintaxis:

log <archivo> {
	maxsize <tamaño-máximo>;
	flags {
		<flag>;
		<flag>;
		...
	};
};

Este bloque permite loguear varios eventos: log:: contiene el nombre del archivo. log::maxsize es opcional y permite especificar el tamaño máximo que puede tener el archivo. Puede entrar este valor usando MB para megabytes, KB para kilobytes y GB para gigabytes. log::flags especifica qué tipo de información va a loguearse. Estos eventos se detallan a continuación.

Puede especificar varios bloques para loguear varios eventos en distintos archivos.

Flags disponibles :
errors loguea errores
kills loguea /kill
tkl loguea información de *lines, shuns y spamfilters
connects loguea conexiones/desconexiones de usuarios
server-connects loguea conexiones/desconexiones de servidores
kline loguea el uso /kline
oper intento de oper
sadmin-commands loguea el uso de los comandos /sa* (samode, sajoin, sapart, etc.)
chg-commands loguea el uso de los comandos /chg* (chghost, chgname, chgident, etc.)
oper-override loguea el uso de operoverride
spamfilter loguea las coincidencias de spam

Ejemplo:

log ircd.log {
	maxsize 5MB;
	flags {
		errors;
		kills;
		oper;
		kline;
		tkl;
	};
};

4.12 - Bloque TLD OPCIONAL (conocido como T:Line)

Sintaxis:

tld {
	mask <hostmask>;
	motd <archivo-motd>;
	rules <archivo-reglas>;
	shortmotd <archivo-shortmotd>;
	channel <nombre-canal>;
	options {
		ssl;
	}
};

Este bloque le permite especificar motd, rules y canales para usuarios en función de su host. Es útil para tener varios motds en distintos lenguajes. tld::mask es una máscara user@host que coincide con la máscara del usuario. tld::motd, tld::shortmotd, y tld::rules especifican el motd, shortmod y archivo de reglas espectivamente para mostrar en función del host. tld::shortmotd es opcional. tld::channel es opcional y permite especificar un canal al que el usuario será forzado cuando conecte. Si existe, omitirá el canal por defecto en autojoin. El bloque tld::options le permite definir parámetros adicionales. Sólo existen tld::options::ssl para clientes SSL y tld::options::remote para clientes remotos.

Las entradas TLD se relacionan de arriba abajo.

Ejemplo:

tld {
	mask *@*.es;<
	motd "ircd.motd.es";
	rules "ircd.rules.es";
};

4.13 - Bloque ban nick OPCIONAL (conocido como Q:Line)

Sintaxis:

ban nick {
mask <nickname>; reason <razón>; };

Este bloque permite deshabilitar el uso de ciertos nicks en su servidor. ban::mask acepta comodines para relacionar varios nicks. ban::reason permite especificar la razón de esta prohibición. Generalmente se usa para los servicios de red.

Ejemplo:

ban nick {
	mask "*C*h*a*n*S*e*r*v*";
	reason "Reservado para servicios";
};

4.14 - Bloque ban user OPCIONAL (conocido como K:Line)

Sintaxis:

ban user {
	mask <hostmask>;
	reason <razón>;
};

Este bloque permite banear una máscara user@host para que no pueda conectar al servidor. ban::mask es una cadena con comodines. ban::reason es la razón de este bloqueo. Note que sólo es un ban local: el usuario podrá conectar a otro servidor.

Ejemplo:

ban user {
	mask *tirc@*.saturn.bbn.com;
	reason "Idiota";
};

4.15 - Bloque ban ip OPCIONAL (conocido como Z:Line)

Sintaxis:

ban ip {
	mask <ipmask>;
	reason <razónn>;
};

Este bloque prohibe que determinadas IPs lleguen a conectar al servidor. Incluye tanto a servidores como clientes. ban::mask es una IP que puede contener comodines. ban::reason es la razón de este bloqueo.

Ejemplo:

ban ip {
	mask 192.168.1.*;
	reason "Coge una ip real lamer";
};

4.16 - Bloque ban server OPCIONAL (conocido como q:Line)

Sintaxis:

ban server {
	mask <server-name>;
	reason <razón>;
};

Este bloque tiene la característica de prohibir la unión de un servidor a la red. Si el servidor se une directamente a su servidor, esta unión se deniega. Si el servidor conecta a uno remoto, el servidor local lo desconectará de la red. ban::mask puede contener comodines y es el nombre del servidor que quiere prohibir. ban::reason es la razón de este bloqueo.

Ejemplo:

ban server {
	mask broken.server.my.network.com;
	reason "Está cerrado";
};

4.17 - Bloque ban realname OPCIONAL (conocido como n:Line)

Sintaxis:

ban realname {
	mask <realname-mask>;
	reason <reason-for-ban>;
};

Este bloque permite banear a clientes en función de su GECOS (realname). Es muy útil para evitar flood de clones, según algunos bots con el mismo realname. ban::mask especifica el nombre a banear y puede contener comodines. ban::reason especifica la razón de este bloqueo.

Ejemplo:

ban realname {
	mask "Bob*";
	reason "Bob apesta!";
};

4.18 - Bloque ban version OPCIONAL

Sintaxis:

ban version {
	mask <máscara-versión>;
	reason <razón>;
	action [kill|tempshun|shun|kline|zline|gline|gzline];
};

Este bloque permite banear el uso de un determinado cliente en función de su programa mediante la respuesta CTCP version. Si el usuario no responde, el ban no prosigue. Es recomendable para evitar scripts maliciosos. ban::mask especifica la versión y puede contener comodines. ban::reason especifica la razón del bloqueo. Puede especificar también ban::action para tomar una medida, kill se usa por defecto. tempshun pondrá un shun a esa conexión. shun/kline/zline/gline/gzline lo harán a la ip (*@ip), la duración se configura en set::ban-version-tkl-time cuyo valor por defecto es de 1 día.

Ejemplo:

ban version {
	mask "*SomeLameScript*";
	reason "SomeLameScript contiene una puerta trasera";
};
ban version {
	mask "*w00tZombie*";
	reason "En ocasiones veo muertos";
	action zline;
};

4.19 - Bloque except ban OPCIONAL (conocido como E:Line)

Sintaxis:

except ban {
	mask <hostmask>;
};

Este bloque permitirá al host especificado saltarse los bans. Es útil cuando se banea a todo un proveedor o ISP y quiere permitir la entrada de alguien en concreto. La directriz except::mask especifica la máscara del cliente user@host a permitir.

Ejemplo:

except ban {
	mask myident@my.isp.com;
};

4.20 - Bloque except tkl OPCIONAL

Sintaxis:

except tkl {
	mask <hostmask>;
	type <tipo>;
	type {
		<type>;
		<type>;
		...
	};
};

Este bloque permite a un usuario saltarse los bloqueos tkl puestos a su host. Es muy útil cuando se banea a todo un proveedor o ISP y quiere permitir a alguien en concreto. La directriz except::mask especifica la máscara user@host a permitir. except::type especifica el tipo de ban a saltarse. Tipos válidos: gline, gzline, qline, gqline y shun, para Glines, Global Zlines, Qlines, Global Qlines y shuns, respectivamente. Si se usa el formato type { }, se pueden especificar varios tipos a la vez.

Ejemplo:

except tkl {
	mask myident@my.isp.com;
	type gline;
};

4.21 - Bloque except throttle OPCIONAL

Sintaxis:

except throttle {
	mask <ipmask>;
};

Este bloque especifica qué ips se saltarán la protección throttle. Sólo funciona si ha escogido throttle. except::mask especifica la ip a la que no se le aplicará el throttle.

Ejemplo

except throttle {
	mask 192.168.1.*;
};

4.22 - Bloque deny dcc OPCIONAL (conocido como dccdeny.conf)

Sintaxis:

deny dcc {
	filename <archivo-a-bloquear>;
	reason <razón>;
	soft [yes|no];
};

Este bloque permite especificar qué archivos no se pueden enviar vía DCC a través del servidor. Es muy útil para evitar la propagación de virus y troyanos.

El parámetro deny::filename especifica el archivo en cuestión y puede contener comodines. deny::reason especifica la razón del bloqueo.

Existe la opción deny::soft que si está fijada a 'yes' el dcc es bloqueado hasta que el usuario lo permite mediante /dccallow +nick. Vea dccallow.conf para más ejemplos.

Ejemplo:

deny dcc {
	filename virus.exe;
	reason "Virus GD";
};

deny dcc {
	filename "*.exe";
	reason "Contenido ejecutable";
	soft yes;
};

4.23 - Bloque deny version OPCIONAL (conocido como V:Line)

Sintaxis:

deny version {
	mask <nombre-servidor>;
	version <versión>;
	flags <flags-compilación>;
};

Este bloque permite parar la unión de un servidor a la red en función de su versión y sus modos de compilación. El formato de este bloque es algo complicado pero no es muy difícil imaginarselo. La directriz deny::mask especifica una máscara con comodines del servidor al que se le aplica. deny::version especifica el número de protocolo que se refiere.

Por ejemplo, 3.0 es 2301, 3.1.1/3.1.2 es 2302, 3.2 es 2303. El primer caracter de este parámetro puede ser >, <, = o !. Si es >, todas las versiones superiores a esta son bloqueadas; con < todo lo contrario; con =, sólo esa versión y con ! todas las versiones menos esta. La directriz deny::Flags permite especificar qué modos de compilación debe o no debe tener. Estos modos se ponen uno detrás de otro y si cada modo es prefijado por ! significa que no debe tenerlo.

4.24 - Bloque deny link OPCIONAL (conocido como D/d:Line)

Sintaxis:

deny link {
	mask <nombre-servidor>;
	rule <expresión-crule>;
	type <tipo>;
};

Este bloque permite especificar reglas para denegar la unión de servidores. La directriz deny::mask especifica el nombre de servidor con comodines al que aplicar esta regla. La directriz deny::rule es bastante compleja. Una expresión crule le permite controlar detalladamente y es algo parecido a una expresión de programación. Se soportan cuantro operadores: connected(<servermask>) devuelve true si el servidor conectado coincide, directcon(<servermask>) devuelve true si el servidor está conectado directamente a su servidor, via(<viamask>,<servermask>) devuelve true si el servidor servermask está conectado conectado a viamask y directop() devuelve true si el operador que se usa con /connect está conectado directamente a este servidor. Estos operadores pueden combinarse usando && (y), || (o) y englobados entre llaves. Además, un operador precedido por ! comprueba si devuelve false. Si la expresión entera devuelve true, entonces se deniega el link. deny::type acepta dos valores: auto (sólo para autoconnects, pero /connect seguirá funcionando) y all (aplicado a todos los intentos).

4.25 - Bloque deny channel OPCIONAL (conocido como chrestrict.conf)

Sintaxis::

deny channel {
	channel "<máscara-canal>";
	reason <razón>;
	redirect "<nombre-canal>";
	warn [on|off];
};

Este bloque deshabilita la entrada a ciertos canales. La directriz deny::channel especifica los nombres de canales, con comodines, a los que los usuarios no pueden entrar. deny::reason, la razón por qué no pueden hacerlo. Además, puede especificar deny::redirect para redirigir a los usuarios a este canal. deny::warn si está en on enviará un notice a los operadores (con la snomask 'e') si algún usuario intenta entrar.

Ejemplo:

deny channel {
	channel "#unrealsucks";
	reason "Tu si que apestas!";
};

deny channel {
	channel "#*teen*sex*";
	reason "Estás salido";
	warn on;
};

deny channel {
	channel "#operhelp";
	reason "Nuestro canal de ayuda es #help, no #operhelp";
	redirect "#help";
};

4.26 - Bloque allow channel OPCIONAL

Sintaxis:

allow channel {
	channel "<máscara-canal>";
};

Este bloque especifica los canales a los que los usuarios deben entrar.

Ejemplo:

allow channel {
	channel "#algo";
};

4.27 - Bloque allow dcc OPCIONAL

Sinaxis:

allow dcc {
	filename "<máscara-archivo>";
	soft [yes|no];
};

Este bloque permite establecer archivos que puedan ser enviados. Si allow dcc::soft está en 'yes' se aplica a la lista 'soft dcc bans', si está en 'no' se aplica a la lista normal ('hard').

Ejemplo:

allow dcc {
	filename "*.jpg"; /* las imágenes son seguras */
	soft yes;
};

4.28 - Bloque vhost OPCIONAL (conocido como vhosts.conf)

Sintaxis:

vhost {
	vhost <vhost>;
	from {
		userhost <hostmask>;
		userhost <hostmask>;
		...
	};
	login <login-name>;
	password <contraseña> { <auth-type>; };
	swhois "<swhois info>";
};

Este bloque permite usar el comando /vhost para obtener un host virtual. El parámetro vhost::vhost puede ser user@host o simplemente el host que el usuario recibirá. vhost::from::userhost contiene las máscaras user@host que deben coincidir para recibir el host virtual. Puedes especificar más de una. vhost::login es el login que utilizará y vhost::password la contraseña. vhost::password:: acepta métodos de cifrado de contraseña como crypt, md5, sha y ripemd-160. vhost::swhois añade una línea extra a su whois.

Ejemplo:

vhost {
	vhost my.own.personal.vhost.com;
	from {
		userhost my@isp.com;
		userhost myother@isp.com;
	};
	login mynick;
	password mypassword;
	swhois "Soy la monda";
};

4.29 - Bloque badword OPCIONAL (conocido como badwords.*.conf)

Sintaxis:

badword <tipo> {
	word <texto>;
	replace <palabra-reemplazar>;
	action <replace|block>;
};

Este bloque permite gestionar la lista de palabras para canales y usuarios con modo +G de "badwords".  badword:: especifica el tipo: channel, message, quit y all. badword::word puede ser una simple palabra o una compleja expresión regular, según lo que necesite. badword::replace es una cadena por la que se reemplazará si coincide. Si se deja en blanco, se reemplazará por "<censored>". badword::action define la acción a tomar: si es replace la reemplazará y si es block bloqueará el mensaje entero. Si se deja en blanco, se asume replace.

Ejemplo:

badword channel {
	word shit;
	replace shoot;
};

4.30 - Bloque ulines OPCIONAL (conocido como U:Line)

Sintaxis:

ulines {
	<nombre-servidor>;
	<nombre-servidor>;
	...
};

Este bloque define ciertos servidores para que tengan habilidades extras. Es recomendable únicamente para servidores de servicios y estadísticas, nunca para servidores normales. Cada entrada es el nombre del servidor.

Ejemplo:

ulines {
	services.mynetwork.com;
	stats.mynetwork.com;
};

4.31 - Bloque link OPCIONAL (conocido como C/N/H:Lines)

Sintaxis:

link <nombre-servidor> {
	username <usermask>;
	hostname <ipmask>;
	bind-ip <ip-a-enlazar>;
	port <puerto-a-conectar>;
	password-connect <contraseña-de-conexión-local>;
	password-receive <contraseña-de-conexión-remotas> { <auth-type>; };
	hub <hub-mask>;
	leaf <leaf-mask>;
	leafdepth <profundidad>;
	class <clase>;
ciphers <ssl-ciphers>;
	options {
		<opción>;
		<opción>;
		...
	};
};

Este bloque es necesario para unir servidores. Tómese su tiempo para leerlo todo porque es bastante complicado y con lo que los usuarios tienen más errores.

Primero de todo, server-name es el nombre del servidor remoto, al que quiere unir.

username
Puedes especificarlo si tiene una autentificación ident. Normalmente pondrá "*".

hostname
El host o la IP del servidor remoto. Es usado por ambos lados al conectar y en la verificación del servidor que se une. Algunos ejemplos:
1.2.3.4 IP normal
hub.blah.com host: sólo para conexiones salientes, nunca para entrantes a menos que link::options::nohostcheck esté presente
* no podrá conectar a * pero sí recibir la conexión
::ffff:1.2.3.4 unión de ipv6 a ipv4

bind-ip (opcional)
Puede usarse para enlazar con una ip (ej: 192.168.0.1), nunca suele usarse.

port
Puerto a conectar (en el servidor remoto).

password-connect
Es la contraseña para conectar al servidor remoto. Debe ser texto plano.

password-receive
Es la contraseña para validar uniones entrantes y puede ser encriptada (métodos crypt, md5, sha1 y ripemd-160). Puede dejarlo como texto plano. Generalmente es el mismo que la contraseña anterior.

hub vs leaf
Un hub es un servidor con varios servidores unidos a él. Un leaf sólo tiene una unión, a su servidor. Un servidor o es un hub o un leaf, nunca ambos.

hub (opcional)
Este valor es la máscara de los servidores a los que puede conectar (ej: *.mi.red).

leaf (opcional)
Este valor es la máscara que este servidor actuará como leaf.towards.

leaf-depth (opcional)
Si se especifica, la directriz leaf también debe especificarse. Este valor es la profundidad o número de uniones que puede tener.

class
Es la clase a la se relacionará este servidor, generalmente la clase server.

compression-level (opcional)
Especifica el nivel de compresión (1-9) si se especifica el parámetro link::options::zip.

ciphers (opcional)
Especifica los "ciphers" ssl para este enlace. Para obtener una lista de los "ciphers" disponibles, use el comando 'openssl ciphers. Deben especificarse separados por ':'.

bloque options
Algunas de las opciones son:
ssl si conecta a un puerto SSL
autoconnect su servidor intentará conectar automáticamente. El tiempo usado entre intentos es el que especificó en class::connfreq (se recomienda para un sólo lado, de leaf a hub)
zip si quiere usar compresión, ambos servidores deben soportarla
nodnscache no guarda la IP saliente. Úselo si tiene un host dinámico (como dyndns.org)
nohostcheck no valida el host remoto (link::hostname). Úselo si tiene un host dinámico (como dyndns.org)
quarantine los operadores mantendrán el estado de locales, no globales

Ejemplo:

link hub.mynet.com {
	username *;
	hostname 1.2.3.4;
	bind-ip *;
	port 7029;
	hub *;
	password-connect "LiNk";
	password-receive "LiNk";
	class servers;
	options {
		autoconnect;
		ssl;
		zip;
	};
};

4.32 - Bloque alias OPCIONAL

Sintaxis [alias estándar]:

alias <nombre> {
 target <destino>;
	type <tipo>;
};

(Nota: puede ver más archivos de alias estándars que lleva UnrealIRCd en este enlace)

Este bloque (estándar) le permite redireccionar comandos a usuarios, generlamente a bots como por ejemplo /chanserv para enviarle privados. alias:: especifica el nombre del comando, por ejemplo chanserv. alias::target el nick o canal al que se le enviará el mensaje y puede omitirse. alias::type define el tipo de alias: services (el usuario está en el servidor de servicios), stats (en el de estadísticas), normal (en un servidor normal) y channel (el target es un canal). Este bloque tiene otro propósito detallado a continuación.

Sintaxis [alias de comandos]:

alias <nombre> {
	format <expresión-regular> {
		target <destino>;
		type <tipo>;
		parameters <parámetros-del-mensaje>;
	};
	format <expresión-regular> {
		...
	};
	type command;
};

Este uso es más extenso y tiene más posibilidades. Por ejemplo, puede crear aliases como /identify. alias:: es el mismo que el anterior: el nombre del comando. alias::format especifica la expresión regular que debe coincidir con el texto enviado. Si lo hace, se usan las subentradas. Así puede tener varios alias::format para seguir distintas acciones según la coincidencia, a partir de sus subentradas. alias::format::target es el nick o canal de destino. alias::format::type es el tipo de alias. alias::format::parameters es lo que se enviará como parámetro al alias. Para especificar un parámetro que se enviará al nick, use % seguido del número de parámetro. Por ejemplo, %1 enviará el primer parámetro. Para especificar todos los parámetros a partir de uno, use %n- donde n es el número de parámetro. Por ejemplo, %2- enviaría todos los parámetros a partir del segundo, incluído. Además, puede usarse %n para que sea reemplazado por el nick que ejecuta el comando. Para más información consulte doc/example.conf.

4.33 - Bloque help OPCIONAL

Sintaxis:

help <nombre> {
	<línea>;
	<línea>;
	...
};

(Nota: use generalmente help.conf)

Este bloque le permite crear entradas para /helpop. help:: es el valor que se pasará a /helpop como parámetro. Si se omite, se usará si no se envían parámetros a /helpop. Las entradas serán las que se mostrarán al usuario cuando lo solicite.

4.34 - Bloque official-channels OPCIONAL

Sintaxis:

official-channels {
	"#canal" { topic "El topic por defecto"; };
};

Estos canales se muestran en /list, aunque no haya usuarios. topic es opcional y sólo se muestra si tiene 0 usuarios.

Ejemplo:

official-channels {
	"#Help" { topic "Canal oficial de ayuda. Si nadie está presente, use /helpop ayuda"; };
	"#Home";
	"#Main" { topic "Canal principal"; };
};

4.35 - Bloque spamfilter OPCIONAL

Este bloque le permite añadir filtros de spam locales.
Vea las características del filtro de spam para más información.

Sintaxis:

spamfilter {
	regex <palabra>;
	target { <target(s)> };
	action <acción>;
	reason <razón>;
	ban-time <tiempo>;
};

regex es la expresión regular a comparar.
target especifica los destinos, vea aquí para los tipos posibles (ej: 'channel').
action define la acción a tomar, vea aquí para las acciones posibles (ej: 'gline').
reason opcional: especifica la razón.
ban-time opcional: especifica la durada de la *line..

Ejemplos:

spamfilter {
	regex "Come watch me on my webcam";
	target { private; channel; };
	action gline;
	reason "You are infected, please go to www.antivirus.xx/blah/virus=GrrTrojan";
	ban-time 6h;
};

spamfilter {
	regex "come to irc\..+\..+";
	target { private; channel; };
	action gline;
	action gline;
	reason "No spamming allowed";
};

4.36 - Bloque set REQUERIDO (conocido como archivo unrealircd.conf/networks)

Este bloque se usa para configurar la red. Si sólo tiene un servidor, puede meterlo todo en el archivo unrealircd.conf. Si tiene varios, se recomienda ponerlo por separado.

Si su servidor está en una red, puede poner la configuración de red en un archivo aparte y cargarlo con include en cada servidor.

En este documento, la configuración y directrices están de forma <nombre-bloque>::<nombre-directriz>. Este formato no debe usarse en el archivo, debe convertirse al formato detallado a continuación. Es una representación para simplificar su lectura.

Sintaxis:

set {
	<entrada> <valor>;
	<entrada> <valor>;
	...
};

Este bloque fija las opciones para cada servidor. Cada entrada tiene su propósito que se explica a continuación. Algunas directrices tienen subbloques que también se detallan. Hay varios puntos a prestar atención. Todas las directrices y parámetros deben estar dentro de tan sólo un bloque set. Si una directriz tiene varias opciones, deben incluirse dentro del bloque set.
Ejemplo:

set {
	kline-address my@emailaddress.com;
	auto-join #welcome;
	options {
		hide-ulines;
	};
	hosts {
		local LocalOp.MyNet.com;
		global globalop.mynet.com;
	};
};

Si quiere poner algunos bloques por separado, debe hacerlo en una sóla línea.
Ejemplo:
set { options { hide-ulines; no-stealth; }; };

set::kline-address <direción-email>;
La dirección email para cualquier referencia. Valor obligado.

set::modes-on-connect <+modos>;
Los modos que se pondrán al usuario al conectar.

set::snomask-on-connect <+modos>
La máscara de noticias que se pondrán al usuario al conectar.

set::modes-on-oper <+modos>;
Los modos que recibirán los operadores cuando hagan /oper.

set::snomask-on-oper <+modos>;
La máscara de noticias que recibirán los operadores.

set::modes-on-join <+modos>;
Los modos que se pondrán a un canal cuando sea creado. No se pueden usar los modos +qaohvbeOAzlLk.

set::restrict-usermodes <modos>
Modos a restringir (no use + o -).
Por ejemplo puede usar +G en modes-on-connect y G en restrict-usermodes para que no puedan quitarse este modo.

set::restrict-channelmodes <modos>
Modos a restringir en canales (no use + o -).
Por ejemplo puede usar +G en modes-on-join y G en restrict-channelmodes para que no puedan quitar este modo.
NOTA: es posible usar esta característica con la opción MLOCK de los servicios si se diera el caso. Sin embargo no podemos dar soporte a eso.

set::restrict-extendedbans <tipos|*>
No se permite el uso de bans extendidos ("*") o algunos en concreto (ej: "qc").

set::auto-join <canaless>;
Los canales a los que se forzará el usuario a entrar. Para especificar varios, use la coma.
[Nota: no olvide entrecomillarlo, como auto-join "#chan";]

set::oper-auto-join <canales>;
Los canales a los que se forzará el operador entrar. Para especificar varios, use la coma.
[Nota: no olvide entrecomillarlo, como auto-join "#chan";]

set::anti-spam-quit-message-time <tiempo>;
Tiempo que debe transcurrir entre /quit para que el mensaje sea mostrado. Úselo para prevenir el abuso de publicidad. Si el valor es una cadena alfanumérica, use d para días, h para horas, m para minutos y s para segundos. Por ejemplo 1d2h3m significa 1 día, 2 horas y 3 minutos.

set::prefix-quit <prefijo>;
Prefijo que se usará para preceder los mensajes en desconexiones voluntarias. Si se pone a 0 se usa "Quit:".

set::static-quit <mensaje quit >;
Fija un mensaje permanente en desconexiones. Sea cual sea el mensaje del usuario siempre se mostrará este. Elimina la necesidad de usar anti-spam-quit-message-time, como también prefix-quit. No reemplaza errores con el mensaje static-quit.

set::static-part <no|yes|mensaje part>;
Si se usa 'yes' se quitan todos los mensajes part. Con 'no' no modifica nada. Cualquier otro valor se usará como comentario. Puede ser algo confuso, úselo con determinación.

set::who-limit <límite>;
Límite de entradas a mostrar en /who. Si se omite, no hay límite.

set::silence-limit <límite>;
Límite de entradas en la lista silence. Si se omite, el límite es de 15.

set::oper-only-stats <lista-stats>;
Lista de stats que sólo los operadores pueden usar en /stats. Omítalo para permitir a los usuarios ver toda la información o "*" para restringirla toda a operadores. Sólo se aceptan las stats en forma corta.

set::oper-only-stats {<stats-flag>; <stats-flag>;};
El caso anterior pero con stats en forma larga.

set::maxchannelsperuser <nº-canales>;
Límite de canales que pueden entrar los usuarios al mismo tiempo.

set::maxdccallow <nº-entradas>;
Límite de entradas en la lista dccallow.

set::channel-command-prefix <prefijo>;
Especifica el prefijo para mostrar el mensaje a los usuarios que estén con +d. Suele usarse para bots. Si se omite, el prefijo es "`".

set::allow-userhost-change [never|always|not-on-channels|force-rejoin]
Especifica qué hacer cuando el user@host cambia (+x/-x/chghost/chgident/setident/vhost/etc.).
never deshabilita todos los comandos, always los permite aunque estén en canales (causa desincronización) [por defecto], not-on-channels si el usuario no está en ningún canal, force-rejoin forzará al usuario a reentrar en los canales y se le dará op/voz, etc. si fuera necesario.

set::options::hide-ulines;
Si está presente, los servidores u-line no se muestran en /links si lo solicita un usuario no operador.

set::options::flat-map;
Si está presente, los servidores aparecerán directamente unidos en /map y /links, sin saber a qué servidor están unidos. Es una pequeña ayuda para evitar ataques (D)DoS a los servidores importantes o puntos vitales de la red.

set::options::show-opermotd;
Si está presente, se mostrará el opermotd cuando hagan /oper con éxito.

set::options::identd-check;
Si está presente, se comprobará el servidor ident y devolverá el valor del username. Si no devuelve nada o no existe servidor ident, el username se prefijará con ~. Si se omite, no se hace la comprobación.

set::options::show-connect-info;
Si está presente, se muestran los mensajes "ident request", "hostname lookup", etc. cuando el usuario conecte.

set::options::dont-resolve;
Si está presente, no se resolverán los hosts. Puede ser útil para acelerar la conexión.
Note que si no se usa, el bloque allow deberá basarse en ips, no en hosts.

set::options::mkpasswd-for-everyone;
Todos los usuarios pueden usar /mkpasswd.

set::options::allow-part-if-shunned;
Permite usar /part a los usuarios con shun.

set::dns::timeout <timevalue>;
Tiempo de espera del servidor DNS si no obtiene respuesta. Si el valor es una cadena alfanumérica, use d para días, h para horas, m para minutos y s para segundos. Por ejemplo 1d2h3m significa 1 día, 2 horas y 3 minutos.

set::dns::retries <nº-intentos>;
Número de intentos si el servidor DNS no obtiene respuesta.

set::dns::nameserver <name-of-dns-server>;
Especifica el host del servidor a usar en las búsquedas DNS.

set::network-name <nombre-de-red>;
Fija el nombre de la red. Debe ser el mismo en todos los servidores.

set::default-server <nombre-servidor>;
Define el servidor por defecto a conectar si la clase está llena.

set::services-server <nombre-servidor>;
Especifica el nombre del servidor de los servicios. Requerido. Use un valor aleatorio como servicios.mi.red si no dispone de ellos.

set::stats-server <nombre-servidor>;
Especifica el nombre del servidor de estádisticas. Si no dispone de ellas, puede omitir este valor.

set::help-channel <canal-ayuda>;
Canal de ayuda.

set::cloak-keys { "clave1"; "clave2"; "clave3"; };
Fija las claves de cifrado para generar los hosts virtuales. Deben ser las mismas en toda la red. Deben ser cadenas de 5 a 100 caracteres (con 10-20 es suficiente) alfanuméricas: a-z, A-Z y 0-9. Según el módulo de cifrado cargado, usará otras reglas.

set::hiddenhost-prefix <prefijo>;
Define el prefijo del host virtual. Suele ser un reflejo del nombre de la red.

set::hosts::local <vhost-locop>;
Define el host que se les asignará a los operadores locales si llevan +x. Puede especificar un user@host para este campo.

set::hosts::global <vhost-globop>;
Define el host que se les asignará a los operadores globales si llevan +x. Puede especificar un user@host para este campo.

set::hosts::coadmin <vhost-coadmin>;
Define el host que se les asignará a los co-admin si llevan +x. Puede especificar un user@host para este campo.

set::hosts::admin <vhost-admin>;
Define el host que se les asignará a los administradores si llevan +x. Puede especificar un user@host para este campo.

set::hosts::servicesadmin <vhost-admin-servicios>;
Define el host que se les asignará a los administradores de servicios si llevan +x. Puede especificar un user@host para este campo.

set::hosts::netadmin <vhost-admin-red>;
Define el host que se les asignará a los administradores de red si llevan +x. Puede especificar un user@host para este campo.

set::hosts::host-on-oper-up <yes/no>;
Si está en 'yes', recibirán el host automáticamente acompañado del modo +x si no lo tuvieran. Si no, deberán ponerse el modo +x manualmente.

set::ssl::egd <archivo>;
Especifica el archivo EGD (Entropy Gathering Daemon) para SSL. Si usa OpenSSL 0.9.7 o mayor, entonces se buscan por defecto las rutas /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool, y /etc/entropy y no es necesario especificarlo, simplemente dejándolo en blanco (set::ssl::edg).

set::ssl::certificate <archivo>;
Especifica la ubicación del archivo de certificado SSL.

set::ssl::key <archivo>;
Especifica la ubicación del archivo de llave privada SSL.

set::ssl::trusted-ca-file <filename>;
Especifica la ubicación del archivo de los CAs permitidos.

set::ssl::options::fail-if-no-clientcert;
Sólo acepta clientes con certificado.

set::ssl::options::no-self-signed;
Sólo acepta clientes con un certificado no propio.

set::ssl::options::verify-certificate;
Verifica la autenticidad del certificado SSL antes de la conexión.

set::throttle::period <tiempo>
Tiempo que debe esperar el usuario para volver a conectar si rebasa el número de intentos de conexión.

set::throttle::connections <nº>;
Número de veces que puede conectar con el mismo host sin que se le haga throttle.

set::ident::connect-timeout <segundos>;
Número de segundos que debe esperar a obtener respuesta del servidor ident. (por defecto: 10s).

set::ident::read-timeout <segundos>;
Número de segundos que debe esperar respuesta (por defecto: 30s).

set::anti-flood::unknown-flood-bantime <tiempo>;
Especifica el tiempo que debe estar bloqueado una conexión desconocida por flood.

set::anti-flood::unknown-flood-amount <kbs>;
Especifica la cantidad de tráfico (en kilobytes) que una conexión desconocida puede enviar antes de ser desconectada.

set::anti-flood::away-flood <veces>:<periodo>
Protección flood por away: límita el número de veces que puede usarse /away dentro de un periodo de segundos. Requiere tener activado NO_FLOOD_AWAY en config.h. Por ejemplo: away-flood 5:60s; significa podrán usar /away un máximo de 5 veces cada 60 segundos.

set::anti-flood::nick-flood <veces>:<periodo>
Protección flood por nick: límita el número de veces que se pueden cambiar el nick dentro de un periodo de segundos. Por ejemplo: nick-flood 4:90; significa que sólo podrán cambiarse el nick 4 veces cada 90 segundos. Por defecto: 3 cada 60s.

set::default-bantime <tiempo>
Tiempo por defecto en comandos como /kline, /gline, /zline, /shun, etc. sin parámetro. Por defecto es permanente (0).

set::modef-default-unsettime <valor>
Tiempo por defecto para quitar un modo que se ponga debido al efecto de +f. Por ejemplo: si especifica 10, se transformarán a +f [5j#i10]:15. Por defecto no hay tiempo para quitar el modo.

set::modef-max-unsettime <valor>
Máximo de minutos que pueden especificar en el modo +f (+f [5j#i<TIEMPO>]:15). Debe ser un valor entre 0 y 255. Por defecto 60 (1 hora).

set::ban-version-tkl-time <valor>
Especifica cuánto debe durar una acción como zline/gline/etc en ban version. Por defecto 86400 (1 día).

set::spamfilter::ban-time <valor>
Similar a la directriz anterior pero para filtros de spam.

set::spamfilter::ban-reason <razón>
Razón por defecto en los filtros de spam.

set::spamfilter::virus-help-channel <canal>
Canal usado para la acción viruschan en los filtros de spam.

set::spamfilter::virus-help-channel-deny <yes|no>
Si está en 'yes' (o '1') sólo los usuarios invitados por el filtro de spam pueden entrar en ese canal, a excepción de los operadores.

set::spamfilter::except <target(s)>
Estos "target(s)" se omiten del filtro de spam (no se toma ninguna acción). Puede especificar varios separándolos con comas. Ej: except "#help,#spamreport";.

5 – Archivos adicionales

Además de los archivos de configuración, Unreal tiene varios archivos como MOTD, OperMOTD, BotMOTD y Rules. Vea los usos que tiene cada uno.
Note que los archivos motd (todos los tipos) y rules pueden especificarse en el bloque tld. Sólo son los archivos por defecto (y para MOTD/RULE's remotos).

 
ircd.motd Se muestra cuando se usa /motd y (si ircd.smotd no está presente) cuando el cliente conecta
ircd.smotd Se muestra al conectar solamente (short MOTD, motd corto)
ircd.rules Se muestra cuando se usa /rules
oper.motd Se muestra cuando se usa /opermotd o cuando se identifican como operadores
bot.motd Se muestr cuando se usa /botmotd

6 – Modos de usuario y canal

Modo
Descripcción
Channel Modes
A
Sólo pueden entrar administradores
a <nick>
Hace de nick administrador del canal
b <nick!user@host>
Pone un ban
c
No se pueden enviar colores ANSI
C
No se permiten CTCP's
e <nick!user@host>
Exception ban – si alguien coincide, siempre podrá entrar al canal aunque esté baneado
f * <líneas:segundos>
Protección flood. Si se especifica * el usuario será baneado y expulsado si envía más de líneas en menos de segundos. Si no se usa *, sólo se expulsa
G
Marca el canal con la lista de "badwords"
M
Sólo pueden hablar los usuarios registrados (+r)
h <nick>
Da el estado de semi operador del canal a nick
i
Se precisa invitación
K
No se permite /knock
k <clave>
Se precisa clave para entrar
l <##>
Fija el número máximo de usuarios que puede haber en el canal
L <#canal>
Si se pasa el límite del +l, los usuarios son enviados directamente a este canal
m
Canal moderado: sólo +v y superiores pueden hablar
N
No se permiten cambios de nick en el canal
n
No se permiten mensajes externos
O
Sólo operadores pueden entrar
o <nick>
Da el estado de operador del canal a nick
p
Marca el canal como privado
q <nick>
Marca nick como fundador del canal
Q
Sólo los servidores uline pueden expulsar a los usuarios
R
Sólo pueden entrar usuarios registrados (+r)
S
Quita todos los colores
s
Hace el canal secreto
t
Sólo halfops y superiores pueden cambiar el tema del canal
T
No se permiten notices al canal
u
Auditorium – Sólo se muestran los operadores del canal en /names o /who #canal
V
No se permite /invite
v <nick>
Da voz a los usuarios (pueden hablar en canales +m)
z
Sólo pueden entrar usuarios conectados bajo SSL

 

Modo
Descripción
Modos de usuario
r
Identifica al nick como registrado
s
Puede escuchar las notificaciones del servidor
v
Rechaza los DCC infectados automáticamente
o
Operador de red global
O
Operador de red local
B
Es un bot
i
Invisible (no se muestra en /who)
A
Administrador de servidor
x
Da al usuario un host virtual
q
Sólo ulines pueden expulsarle (sólo administradores de servicios)
a
Administrador de servicios
g
Puede leer y escribir globops y locops
H
Oculta el estado de operador de red
S
Protege a los servicios de red
t
Nota que el usuario usa un host virtual
C
Co administrador
d
No recibe mensajes de canal
N
Administrador de Red
w
Puede recibir wallops
h
Disponible para ayuda (HelpOp)
G
Filtra las palabras con la lista "badwords"
W
Le permite ver cuando le hacen /whois
p
Oculta sus canales de /whois
R
Le permite recibir mensajes de usuarios registrados (+r)
V
Usuario WebTV
z
Cliente SSL
T
Le previene de recibir CTCPs

7 – Tabla de comandos para usuarios y operadores

NOTA: /helpop muestra información más actualizada. Use /helpop comando (o /helpop ?comando si es operador) para obtener más información sobre ese comando.

Comando
Descripcción
Quién
nick <nuevo_nick> Cambia tu nick. Alerta de ello a los demás usuarios.
Todos
whois <nick> Muestra información sobre el nick. Incluye el nombre completo, host, canales en los que está y el estado de operador, entre otros
Todos
who <patrón> Le permite buscar usuarios. El patrón incluye: nick, #canal, host (*.attbi.com)
Todos
whowas <nick> [max_respuestas] Muestra información sobre un nick desconectado. Puedes especificar un max_respuestas como máximo de entradas mostradas
Todos
ison <nick1 nick2 nick3 ...> Le permite comprobar si están conectados ciertos usuarios. Usado generalmente por scripts
Todos
join <canal1,canal2, ...> Le permite unirse en varios canales. Si usa /join 0 sale de todos Todos
cycle <canal1,canal2, ...> Reentra de los canales especificados. Es equivalente a usar PART y luego JOIN Todos
motd [servidor] Muestra el motd del servidor. Añadiendo un servidor, muestra el motd de ese servidor
Todos
rules [servidor] Muestra las reglas del servidor. Añadiendo un servidor, muestra las reglas de ese servidor Todos
lusers [servidor] Muestra los usuarios actuales y el número máximo de usuarios en la red, globales y locales. Añadiendo un servidor, muestra los usuarios de ese servidor
Todos
map Muestra el mapa de la red Todos
quit [razón] Le desconecta del servidor. Si incluye una razón, se mostrará en los canales en los que esté Todos
ping <usuario> Envía una petición PING a un usuario. Se usa para medir el lag. Entre servidores, se usa para verificar que todavía sigue conectado
Todos
version <nick> Envía un CTCP version a un usuario. Si pertoca, el cliente responderá a ella
Todos
links Muestra una lista de los servidores de la red Todos
admin [servidor] Muestra la información de contacto del servidor. Si se añade un servidor, muestra la información de ese servidor
Todos
userhost <nick> Muestra el userhost del nick dado. Generalmente se usa en scripts
Todos
topic <canal> [tema] Topic <canal> muestra el tema del canal. Topic <canal> <mensaje> fija como tema del canal ese mensaje
Todos
invite <nick> <canal> Invita a este nick a un canal (debe ser operador del canal)
Op Canal
kick <canal,canal> <user, user> [razón] Expulsa a un o varios usuarios de un canal o varios canales. Puede incluir un motivo
Op Canal
away <razón> Le marca como ausente. Puede incluir una razón
Todos
Watch +-<nick> +-<nick>
Watch es un sistema de notificaciones en UnrealIRCd, siendo más rápido ya que usa menos recursos de red que el viejo sistema. El servidor le envía un mensaje cuando un usuario de su lista watch se desconecta o se conecta. Esta lista no se conserva a cada sesión (su cliente o script deberá enviarla cada vez que se conecte) Todos
helpop ?<tema> or !<tema>
HelpOp es un nuevo sistema de ayuda. Puede usar /helpop ? <tema> o /helpop ! <tema>. Si usa "?" busca la ayuda en el propio programa. Si no obtiene ayuda, use "!" para mandarlo a los operadores de red. Si no usa ni "?" ni "!" primero consulta en la ayuda interna y si no la encuentra la manda a los operadores Todos
list <patrón> Si no incluye un patrón, se le manda la lista de canales sin filtrar. El patrón acepta estas opciones:
>n Lista los canales con más de n personas
<n Lista los canales con menos de n personas
C>n Lista los canales creados entre ahora y hace n minutos
C<n Lista los canales creados antes de hace n minutos
T>n Lista los canales cuyos topics son mas antiguos que n minutos (que no han cambiados hace n minutos)
T<n Lista los canales cuyos topics son mas nuevo que hace n minutos
*máscara* Lista los canales que concuerdan con *máscara*
!*máscara* Lista los canales que no concuerdan con *máscara*
Todos
Knock <canal> <mensajee>
Le permite hacer 'knock' en un canal para invitados preguntando por su invitación. No funcionará si el canal está en +V y +K, o si está baneado
Todo
setname Le permite cambiar su nombre completo sin necesidad de reconectar
Todos
vhost <login> <contraseña> Oculta su host usando un host virtual proporcionado por el servidor
Todos
mode <canal/nick> <modo>
Le permite cambiar los modos de un canal o sus propios modos. Vea Modos de usuario y canales para más información
Todos
credits Muestra los créditos de la gente que ha ayudado a crear UnrealIRCd
Todos
license Muestra la licencia GNU Todos
time [servidor] Muestra la fecha y la hora del servidor. Si añade un servidor, lo hace de ese servidor
Todos
botmotd [servidor]
Muestra el mensaje para bots del servidor. Si añade un servidor, muestra el de ese servidor Todos
identify <contraseña> Envía su contraseña a los servicios para identificarse como dueño de su nick
Todos
identify <canal> <contraseña> Envía su contraseña a los servicios para identificarse como fundador del canal Todos
dns <opción> Devuelve información sobre el caché DNS de los servidores. Muchos clientes llevan este comando incluído, por ello se recomienda usar /raw DNS. Los operadores pueden especificar una l en el primer parámetro para recibir la lista de entradas DNS Todos
oper <userid> <contraseña>
Comando para identificarse como operador de red
IRCop
wallops <mensaje> Envía un mensaje a los usuarios con +w IRCop
globops <mensaje> Envía un mensaje a todos los IRCops IRCop
chatops <mensaje> Envía un mensaje a todos los IRCops con +c IRCop
locops <mensaje> Envía un mensaje a todos los IRCops locales IRCop
adchat <mensaje> Envía un mensaje a todos los Administradores IRCop
nachat <mensaje> Envía un mensaje a todos los Administradores de Red IRCop
kill <nick> <razón> Desconecta a un usuario de la red IRCop
kline [+|-]<user@host | nick> [<duración> <razón>] Banea la máscara host del servidor. Una kline no es un ban global, tan sólo local.
duración es: a) un valor en segundos, b) un valor de tiempo como '1d' es un día o c) '0' par que sea permanente. La duración y razón son opcionales. Si no se especifican se toman los valores de set::default-bantime y razón como 'no reason'
Para quitar una kline use /kline -user@host
IRCop
zline [+|-]<*@ip> [<duración> <razón>] Banea una dirección IP del servidor local. Vea kline para más información. Use /zline -*@ip para quitarla IRCop
gline [+|-]<user@host | nick> [<duración> <razón>]
Añade un ban global. Vea kline para más información. Use /gline -user@host para quitarla
IRCop
shun [+|-]<user@host | nick> [<duración> <razón>]
Previene de que un usuario ejecute cualquier comando. Son globales. Vea kline para más información. Use /shun -user@host para quitarlo
IRCop
gzline [+|-]<ip> [<duración> <razón>]
Añade una zline global. Vea kline para más información. Use /gzline -*@ip para quitarla
IRCop
rehash <servidor> –<opciones> Refresca los archivos de configuración de los servidores. Añadiendo un servidor, lo hará en ese servidor. Puede pasarle varias opciones:
-motd - Sólo refresca todos los motd y rules (incluyendo el bloque tld)
-opermotd - Sólo el archivo opermotd
-botmotd - Sólo el archivo botmotd
-garbage - Fuerza un garbage collection
IRCop
restart <servidor <contraseña>
Reinicia el servidor. Se requiere una contraseña. Puede especificar qué servidor quiere reiniciar
IRCop
die <contraseña>
Cierra el servidor. Requiere contraseña IRCop
lag <servidor>
Este comando actúa como un trazado. Puede escribir /lag servidor y todos los servidores por los que pase este comando le responderán. Así verá qué puntos de la red hay más lag IRCop
sethost <nuevohost> Le permite cambiar su host al que quiera
IRCop
setident <nuevaident>
Le permite cambiar su ident a la que quiera IRCop
chghost <nick> <nuevohost>
Cambia el host de un usuario IRCop
chgident <nick> <nuevaident>
Cambia la ident de un usuario IRCop
chgname <nick> <nuevonombre>
Cambia el nombre de un usuario IRCop
squit <servidor>
Desconecta a un servidor de la red IRCop
connect <servidor> [[<puerto>] <servidor>] Si sólo se da un servidor, intentará conectar a ese servidor. Si especifica dos servidores, intentará conectarlos entre sí. Ponga primero el leaf y luego el hub
IRCop
dccdeny <archivo> <razón>
Prohibe el envío de un archivo o de archivos que coincidan con este
IRCop
undccdeny <archivo>
Quita una entrada anterior IRCop
sajoin <nick> <canal>, <canal>
Fuerza a un usuario a entrar en estos canales IRCop
sapart <nick> <canal>, <canal>
Fuerza a un usuario a salir de estos canales IRCop
samode <canal> <modos>
Permite a los Administradores de Red y Servicios cambiar los modos de un canal
IRCop
rping <servidor>
Calcula en milisegundos el lag entre servidores
IRCop
trace <servidor|nick>
Devuelve la clase y el lag. Si lo usa sobre un servidor, le devuelve la clase y versión
IRCop
opermotd
Le muestra el opermotd
IRCop
addmotd :<texto>
Añade el texto al final del motd
IRCop
addomotd :<texto>
Añade el texto al final del opermotd
IRCop
sdesc <descripción>
Introduce una nueva descripción del servidor sin reiniciar
IRCop
addline <texto>
Le permite añadir líneas al archivo unrealircd.conf
IRCop
mkpasswd <contraseña>
Encripta un texto para añadirlo en unrealircd.conf
IRCop
tsctl offset +/- <tiempo>
Ajusta el reloj interno del IRCD (no lo use si no sabe lo qué es)
IRCop
tsctl time
Le da el tiempo TS IRCop
tsctl alltime Le da el tiempo TS de todos los servidores IRCop
tsctl svstime <timestamp>
Fija el tiempo TS en todos los servidores (no lo use si no sabe lo qué es)
IRCop
htm <opción>
Controla el tráfico. En modo HTM básicamente deshabilita el uso de comandos como list, whois o who, puesto que ocupan mucho ancho de banda. Opciones:
-ON Servidor en HTM
-OFF Servidor fuera de HTM
-NOISY Informa a los usuarios administradores cuando se entra y sale del modo HTM
-QUIET No informa el caso anterior
-TO <valor> Especifica el ratio a usar
IRCop
stats <opción>
B - banversion - Lista de bans
b - badword - Lista de badwords
C - link - Lista del bloque link
d - denylinkauto - Lista del bloque deny link (auto)
D - denylinkall - Lista del bloque deny link (todo)
e - exceptthrottle - Lista del bloque except throttle
E - exceptban - Lista del bloque except ban
f - spamfilter - Lista de filtros de spam
F - denydcc - Lista del bloque deny dcc
G - gline - Lista gline
  Flags: [+/-mrs] [máscara] [razón] [autor]
    m Devuelve las glines que coincidan o no con la máscara
    r Devuelve las glines que coincidan o no con la razón
    s Devuelve las glines que coincidan o no con el autor
I - allow - Lista bloque allow
j - officialchans - Lista de canales oficiales
K - kline - Lista del bloque ban user/ban ip/except ban
l - linkinfo - Información de las uniones de servidores
L - linkinfoall - Toda la información anterior
M - command - Lista del uso de cada comando
n - banrealname - Lista del bloque ban realname
O - oper - Lista del bloque oper
S - set - Lista del bloque set
s - shun - Lista de shuns
  Flags: [+/-mrs] [máscara] [razón] [autor]
    m Devuelve las glines que coincidan o no con la máscara
    r Devuelve las glines que coincidan o no con la razón
    s Devuelve las glines que coincidan o no con el autor
P - port - Información sobre puertos
q - sqline - Lista sqline
Q - bannick - Lista del bloque ban nick
r - chanrestrict - Lista del bloque channel deny/allow
R - usage - Uso de los recursos
t - tld - Lista del bloque tld
T - traffic - Información del tráfico de datos
u - uptime - Uptime del servidor
U - uline - Lista del bloque ulines
v - denyver - Lista del bloque deny version
V - vhost - Lista del bloque vhost
X - notlink - Lista servidores que están separados de la red
Y - class - Lista del bloque class
z - zip - Información sobre la compresión zlib (si está compilado así)
Z - mem - Uso de memoria
Todos
module
Lista todos los módulos Todos
close
Cierra todas las conexiones desconocidas IRCop

8 – Consejos de seguridad

Si está preocupado por la seguridad (debería), esta sección le ayudará. Alternativamente puede usarlo como patrones a seguir en toda la red para afianzarla.

Esta lista está ordenada de mayor a menor riesgo.

8.1 Contraseñas

Escoja buenas contraseñas para los operadores, links, etc:
- Use contraseñas alfanuméricas ("Wfw9eAe") y/o palabras largas.
- No use estas contraseñas para aspectos como cuentas de email, foros, etc.

8.2 Vulnerabilidades no-IRCD

Hay varios aspectos que no están relacionados con el ircd pero que pueden ser puntos potenciales de ataque. Si por ejemplo usa servidores http, dns, smtp y ftp pueden ayudar al factor riesgo. Úselos en cuentas shells y utilice buenos permisos para utilizarlos.

8.3 Permisos y archivo de configuración

Cerciórese de que su directorio home y UnrealIRCd tienen los permisos correctos. Por otro lado, un usuario local puede coger su archivo para ver las contraseñas. Para evitar esto: chmod -R go-rwx /path/to/Unreal3.2 si no está seguro de ello.
Más aspectos. Nunca ponga su UnrealIRCd en un webroot o cualquier otro directorio compartido. Para las copias de seguridad, asegúrese de los permisos.

Use siempre que pueda contraseñas encriptadas. La mayoría de contraseñas de 1-8 caracteres se descifran en cuestión de horas o pocos días, sobretodo las contraseñas link::password-connect

8.4 Problemas de usuario

Muchos de estos problemas no están en esta temática.
Escoja siempre operadores y administradoers de confianza. Léase todo detenidamente. Nunca comparta sus discos mediante netbios/kazaa/morpheus/etc. puede coger troyanos. Está bajo su responsabilidad.

8.5 SSL/SSH y análisis de conexión

Use SSL entre servidores y entre clientes operadores para prevenir el "robo" de contraseñas mediante un espía de conexión ("sniffing"). Alguien que le espíe su conexión podrá ver todo su tráfico de datos, mirar las conversaciones privadas, coger las contraseñas (oper logins, nickserv, etc.). Por la misma razón use ssh en vez de telnet.

8.6 Ataques de Denegación de Servicio (DoS) [o: cómo proteger mi hub)

Muchos de las redes han experimentado con ataques (D)DoS. Puede reducir su efecto tomando algunas medidas. Muchas de ellas tienen un servidor hub, al que siempre atacan.
Detalladamente:
1. Ponga el nombre del servidor a un host que no exista ('hub.mi.red'), que no tenga subdominio. Así el atacante no podrá saber el host a atacar. Tan sólo tendrá que unir sus servidores al hub especificando la IP no pública.
    Ejemplo 1: link visibiblename.yournet.com { hostname 194.15.123.16; [etc] };.
    Ejemplo 2: link visibiblename.yournet.com { hostname thehostnamethatworks.yournet.com; [etc] };.
    Como nota, para el último ejemplo asegúrese que no permiten transferencia de zonas.
2. Otro punto importante es ocultar '/stats c' y otra información. De no ser así los atacantes tendrán a su disposición cuantiosa información de real valor. Si quiere despreocuparse por eso, use set { oper-onlye-stats "*"; }; para restringir este comando. Más información en el próximo apartado.

Por supuesto estas medidas son menos efectivas si se hacen después de meses de haber empezado, porque la IP puede ser conocida por varios atacantes. Obviamente pueden atacar a servidores leaf, pero requiere más esfuerzo para tumbar la red que no atacando uno o dos puntos vitales.

8.7 Información descubierta

STATS
El comando /stats proporciona numerosa información que posiblemente quiera restringir tanto como sea posible. Muchas de las redes prefieren que los usuarios no tengan acceso a este comando, otros prefieren ocultar '/stats g' o '/stats k'.
Es recomendable usar set { oper-only-stats "*"; };  para prohibir todos los /stat para usuarios no operadores. Por ejemplo:
- /stats o: da información sobre los operadores y sus hosts
- /stats c: da un aidea sobre las uniones entre servidores
- /stats g, /stats k: usado para banear proxis. Así el atacante puede tener una lista de proxis que puede usar
- /stats E, /stats e: información realmente importante
- /stats i, /stats y: puede permitir al atacante conocer muchos hosts de conexiones para atacar
- /stats P: muestra los puertos
etc etc...

MAP / LINKS
Mucha gente ha preguntado si hay alguna forma de deshabilitar /map o /links. Pensamos que es absurdo hacerlo y que da una idea errónea sobre seguridad. Ocultar los servidores no es útil si los usuarios ya están dentro de ellos. Para los servidores a los que no quiere que conecten directamente, vea la sección 8.6.
Para ello puede usar la opción flat-map (set::options::flat-map) para mostrar los servidores directamente unidos en /map y /link pero sin saber dónde están conectado. Puede ser una medida más para prevenir los ataques a los puntos clave de la red. Obviamente si ocurre un split alguien podrá darse cuenta qué servidores están conectados entre sí.

USUARIOS NORMALES Y SNOMASKS
Una característica no muy conocida es que los usuarios pueden ponerse snomasks limitados: sólo +s y +sk. Aun así pueden ver rehasehs, identificaciones de opers, kills y otros mensajes.
Para deshabilitarlo puede usar set::restrict-usermodes para usarlo con el modo s: set { restrict-usermodes "s";};.


Por supuesto toda esta información oculta no es altamente segura, pero dificulta su ataque.

8.8 Protección contra agujeros explotables

Existen varias actualizaciones para los sistemas operativos que hacen más difícil las vulnerabilidades del sistema. No suele ser lo más importante, pero es importante tenerlas al día por varias razones.

Use siempre la última versión de UnrealIRCd. Subscríbase a unreal-notify mailinglist para recibir las actualizaciones (unreal-notify es tan sólo para anuncios, 1 email cada X meses). Usualmente se explica detalladamente en el anuncio si contiene fallos de seguridad.

8.9 Sumario

Tal y como podrá entender, nunca se puede estar 100% seguro. Sin embargo, entre todos podemos ayudar a reducir los ataques. Tómese su tiempo para montar su red y enseñar a sus operadores. Mucha gente no se preocupa de la seguridad y luego pasa lo que pasa. Trate de evitarlo.

9 – Dudas más frecuentes (FAQ)

Tiene una FAQ disponible en este enlace