----------------------------------------------------------------------[ 07 ]

 			    .: IRC Servers :.
		            --=[ sicario ]=--


Este articulo tiene la finalidad de orientar en la implementacion de un
servidor de IRC, antes de eso explicaremos algunos conceptos relacionados, 
como temas introductorios.

Temas a tratar :
1. IRC
2. Redes de IRC.
3. Clientes de IRC.
4. Daemons para IRC Servers
5. Instalando Bahamud IRC Server
6. Seguridad

1. IRC ( Internet Relay Chat )
------------------------------
El IRC es un medio escrito de comunicacion en tiempo real. Su creador fue
Jarkko Oikarinen en 1988, es un sistema multi-usuario de  comunicacion,
donde las personas se reunen en salones o canales virtuales, usando una
identificacion llamado Nickname, ademas de permitirte el conversar con varios
usuarios a la vez, puedes estar en varios canales al mismo tiempo, inclusive
permite el intercambio de software. Originalmente fue usado generalmente por
hackers, encontrando en el IRC un medio de intercambio de informacion en tiempo
real, aun lo sigue siendo.
El IRC gano fama y se convirtio en software de uso comun, durante el conflicto
armado del Golfo Persico ( 1991 ), donde era usado para obtener reportes en
linea de la guerra.
Hoy el IRC, no solo es un medio de intercambio de informacion, usada por gente
relacionada con el underground, tambien es usada para relaciones sociales e
intercambio cultural.
El IRC esta basado en el modelo cliente/servidor, usando el protocolo TCP/IP,
donde los usuario corren un cliente para conectarse a un servidor de irc en
internet. Los servidores son el backbone del IRC, siendo el punto al cual los
usuarios se conectan para intercambiar texto con otros.
La estructura basica de una red de irc es la de arbol, como se grafica a
continuacion :

			[ Server 15 ]  [ Server 13 ] [ Server 14]
                                 /                \         /
                                /                  \       /
        [ Server 11 ] ------ [ Server 1 ]       [ Server 12]
                              /        \          /
                             /          \        /
                  [ Server 2 ]          [ Server 3 ]
                    /       \                      \
                   /         \                      \
           [ Server 4 ]    [ Server 5 ]         [ Server 6 ]
            /    |    \                           /
           /     |     \                         /
          /      |      \____                   /
         /       |           \                 /
 [ Server 7 ] [ Server 8 ] [ Server 9 ]   [ Server 10 ]

                                  :
                               [ etc. ]
                                  :



2. Redes de IRC
---------------
Las redes de IRC, son grupos de servidores corriendo un mismo daemon, los
cuales se encuentran unidos permitiendo la comunicacion de los diversos
usuarios a traves de ellos, uno puede estar conectado por decir a
irc.miserver.server1.net y podra ver a los usuarios de irc.miserver.server2.net
si es que pertenecen a la misma red, virtualmente se convierten en un solo
servidor.

Como redes de IRC podemos mencionar :
- EFNet :
          Es la primera red de irc creada, el nombre proviene de Eris Free
          Network, fue llamada asi a partir de Agosto de 1990.
	  www.efnet.org
- UnderNet :
	  www.undernet.org
- DALnet
	  Red que aparecio en el ao 1994, fue la red que dio origen a los
          servicios aproximadamente por el ao 1995, como el NickServ 
          ( Servicio para registro y mantenimiento de un Nickname ), MemoServ
          ( Servicio para almacenamiento de mensajes ) y ChanServ ( Servicio
          para registro, mantenimiento y administracion de canales ).
	  www.dal.net
- IRC Hispano
	  www.irc-hispano.org
- RED Latina
	  www.red-latina.org

3. Clientes de IRC
------------------
Un cliente de IRC es el software o aplicacion que se utiliza para poder
conectarte a un servidor de irc y usar este protocolo de comunicacion.

Como clientes de IRC podemos mencionar :
- Windows :
  - mIRC, indudablemente es el mejor cliente para esta plataforma, hoy en dia
    su desarrollo esta muy avanzado, creado por Khaled Mardam-Bey. El uso de
    scripts en este cliente es muy potente, facilitandote de gran manera el uso
    del mIRC y por ende el estar en el IRC, la orientacion de todo programa
    en windows, es la de proporcionar al usuario la forma mas amigable de uso.
    Existen infinidad de scripts para el mIRC, pero debes tener en cuentas
    muchos aspectos para escoger uno, y el mas importante es la seguridad. Si
    vas a usar mIRC, solo recomendaria un script sin dudarlo; el aIRC, un script
    para usuarios avanzados, y sobre todo seguro de usar.
    mIRC -> www.mirc.co.uk
    aIRC -> www.airc.ws
- Unix/GNU Linux :
  - ircII, es el primer cliente para IRC usado ampliamente, solo es en modo texto, 
    se ejecuta en maquinas corriendo UNIX o clones, como sistema operativo. Este
    cliente dio origen a otros muy conocidos hoy en dia, como el BitchX o el Epic.
  - BitchX
    Cliente en modo texto, existiendo una version actual llamada gtkBitchX,
    que incluye un entorno basico con librerias GTK y otra llamada PMBitchX, que
    es una version con interfas grafica para OS/2, tambien existen versiones para
    Winbug9x/NT, OS2 y Mac-Os. Creado por Colen Edwards o panasync en EFnet,
    BitchX es una modificacion del ircII. Es uno de los mas usados por los que
    usan Linux como SO. Dentro de sus principales caracteristicas estan :
	.Estructura en color ANSI.
	.Posee muchos aliases de comandos, para su facil manejo.
	.Posee notify, protecciones, puede funcionar como un robot y manejo de
         shit lists.
	.Extension de comandos para DCC y ofrece una estructura de CDCC.
	.Existen muchos scripts.
    www.bitchx.org
  - kVirc :
    Cliente de irc para sistemas Unix con X-Window, esta basado en el toolkit Qt
    GUI.
    Su creador es Szymon Stefanek ( Pragma ). Su instalacion requiere de las
    siguientes librerias : 
	.Qt versiones superiores al 2.2.2
	.Pthreads
    Sus caracteristicas mas resaltantes son :
	.Configuracion basada en GUI.
	.DCC Chat y Send, soportando resume.
	.Estructura de scripts, aliases, popups y eventos.
	.Uso de plugins como : fileserver, control de xmms.
    www.kvirc.net
  - xChat :
    Es un cliente de irc para sistemas operativos Unix, usando entorno grafico,
    corre sobre un sistema X usando el toolkit GTK+, puede ser compilado para
    ser usado sobre entorno Gnome y KDE.
    Ha sido probado en Linux, FreeBSD, NetBSD, OpenBSD, Solaris, AIX, IRIX,
    MacOS X entre otros SO.
    www.xchat.org

2. Daemos para IRC Servers
--------------------------
- IRCd :
    Es el original daemon para IRC, usado por IRCnet. Licencia GPL.
    http://www.irc.org/
- IRCd Hybrid :
    Es el IRC daemon usado en EFNET, a partir de este estan creados otros daemons.
    Licencia GPL.
    http://www.ircd-hybrid.org
- Bahamud :
    IRC daemon que se utiliza en la red DALnet, esta basado en el IRCd Hybrid de
    EFNET y el DreamForge. Licencia GPL.
    http://bahamut.dal.net/
- Conference Room :
    Es un IRC daemon que posee una integracion de WEB para la conexion de clientes
    y una administracion basada en WEB. Es un software comercial.
    http://www.conferenceroom.com
    

3. Instalando Bahamud IRC Server
--------------------------------
Se recomienda no instalar como root.
Lo primero que necesitamos es el source, lo podemos descargar de :
  ftp://ftp.bahamut.net/pub/bahamut/bahamut-1.4.32-release.tar.gz

. Procedemos a descomprimirlo :
[nebula@localhost nebula]#tar -zxvf ....

. Creamos un directorio para los ejecutables compilados y los archivos de
configuracion, puede ser el que tu creas conveniente, usaremos ircserver :
[nebula@localhost nebula]#pwd
/home/nebula
# este es nuestro directorio actual.

[nebula@localhost nebula]#mkdir ircserver
# creamos el directorio ircserver, dentro de nuestro home directory.

. Procedemos a configurar el software :
[nebula@localhost nebula]#./configure
# recuerda que tienes que entrar al directorio que se creo al descomprimir el
# tar.gz

. Ejectutamos el script para configurar nuestro servidor, donde te hara una
serie de preguntas para personalizar tu server :
[nebula@localhost nebula]#./config

What are the maximum File Descriptors that the IRCD can use?
[1024] - 256
# Cual sera el numero maximo de archivo descriptor que podra usar el ircd, 
# puedes dejar el que te muestra por defecto.

What are the maximum number of Users you
intend to allow on your IRC server?
Note that you can now change this number
on the fly with with /set command.
[1000] - 236
# Cual sera el numero maximo de usuarios que podran conectarse a tu server.
# Este parametro puede ser cambiado luego con el comando /set

What is the maximum connection buffer amount?
Note, this CANNOT exceed the number of file descriptors
minus the maximum clients.
[24] - 20
# Cual es la cantidad maxima del buffer intermedio de conexion. Este parametro
# no debe exeder del numero de archivo descriptor menos la cantidad maxima de
# clientes.

What directory are all the server configuration files in?
Note, this directory name needs to end with a /
[/home/docz/bahamut-1.4.3.release/] - /home/nebula/ircserver/
# Cual sera el directorio donde estaran los archivos de configuracion y los
# ejecutables.
# Ten cuidado en poner un / al final. Estoy usando /home/nebula/ircserver/
# como directorio.


What is the explicit path to where the ircd binary will be
installed? This should point to a file, not a directory.
[/home/docz/bahamut-1.4.3.release/src/ircd] - /home/nebula/ircserver/ircd
# Cual es la ruta donde el binario sera instalado, es decir el archivo dentro
# del directorio ircserver.

Would you like to see when a /stats is requested?
This only applies for +y users.
[Yes] - 
# Linea que indica si va mostrar informacion cuando se ejecute el comando
# /stats , solo es aplicable a usuarios con el flag +y.

There are clients out there ignoring the MOTD numeric, so
there is no point forcing MOTD on connecting clients. Instead of
sending the MOTD, enabling this will just send a short notice to the
connecting client asking them to read the MOTD.
To change the notice, you may edit ircd.smotd in the same directory 
as your ircd.motd file.
[Yes] - 
# Indicas si deseas que el server envie un mensaje antes de mostrar el MOTD.

Would you like to compile as a HUB?
[No] - Yes
# Si tu servidor sera un servidor principal, tendras que poner Yes.

Would you like connecting users to be sent a notice regarding
wingate and socks scans? This must be defined if you
intend to run your server on DALnet.
[Yes] - 
# Si vas a utilizar un scann de socks y wingates, pones Yes.

What host does your wingate bot run from?
This is only a default and may be overridden with a T: line
See doc/example.conf for more information on T: lines
[some.bot.host] - sockscann.sicario.net
# Aqui indicas donde estara corriendo tu bot para scann de socks y wingates.

What address can users affected by k-lines ask for help?
This is displayed to all LOCALLY k-lined users upon connect.
This should be the address of the local administrator.
This should _NOT_ be kline@dal.net!
[admin@poorly.configured.server.com] - kline@irc.sicario.net
# Aqui especificas una direccion de correo a donde se dirigiran usuarios
# afectados por k-lines.

What address can users affected by autokills ask for help?
This is displayed to all globally autokilled users upon connect.
This should be the address of the network administrator.
On dalnet, this should be kline@dal.net.
[admin@poorly.configured.server.com] - kline@irc.sicario.net
# Aqui especificas una direccion de correo a donde se dirigiran usuarios
# afectados por autokills.

Would you like to use syslog for server logging?
This is STRONGLY reccomended, many errors can be caught by syslog.
[Yes] - Yes
# Si deseas usar el syslog para guardar logs del servidor.

What sendq length do you wish to have?
[5050000] - 
# La longitud del sendq.

What size of a bufferpool do you wish to have?
A bufferpool is a total of ALL sendq's in use
[(4 * MAXSENDQLENGTH)] - 
# Tamao de bufferpool a usar, es decir el total del sendq en uso.

Do you want your server to hide U:lined servers in a /links?
If you are planning to link to DALnet, this MUST be defined.
[Yes] - 
# Indicas si deseas ocultar tu servidor, del comando /links

Do you want to use the poll system call?
If you are on a solaris machine, this is mandatory.
Linux machines should use select until poll() is ironed out.
Poll works nicely on freebsd machines.
Select is more economical for small networks.
[Yes] - No
# Si estas instalando sobre Linux, es recomendable poner No.

If you have network services and would like to make use of 
the built in secure services aliasing features, type in the 
name of your network services server here. If you are a 
DALnet admin, you would type in "services.dal.net" below.
[services.dal.net] - services.sicario.net
# Si vas a usar servicios, aqui indicas el nombre.

. Una vez personalizado tu server, procedes a compilarlo :
[nebula@localhost nebula]#make

. Al finalizar la compilacion, instalas el daemon :
[nebula@localhost nebula]#make install

Una vez finalizo la instalacion ingresas al directorio donde se almacenaron
los archivos de configuracin y el binario, en este caso se encuentra en :
	/home/nebula/ircserver/
Dentro de este directorio existe un archivo llamado ircd.conf el cual tienes
que editar y hacer algunos cambios, antes de proceder a ejecutar el demonio.

Parametros a configurar en el ircd.conf :

# M: [MANDATORY]. Linea para setear el nombre del servidor, su descripcion, 
# puerto por defecto, y la direccion IP de la mquina.
#
# M:hostname:IP:Description Of Your Server:7000
#
M:irc.sicario.net:*:Sicario IRC Server:7000

#
# A: [MANDATORY]. Linea para mostrar informacion administrativa, como nombre
# del administrador del server, direccion de contacto, ETC.
A:IRC Server:Admin sicario:sicario@phreaker.net

#
# Y: [SUGGESTED]. Linea que define las clases de conexiones. 
# Las clases te permiten estar a tono con tu cliente y las conexiones del 
# servidor. Se sugiere que clientes y servidores sean colocados en clases 
# separadas,  y si se tienes un monton de servidores, cada set de servidores 
# ( definido arbitrariamente por ti) deberia tener su propia clase. En caso
# de que tengas clientes realizando conexiones de muchos sitios diferentes, 
# seria mejor separarlos en clases. Es mas, seria mejor  poner a los usuarios
# locales en una clase y usuarios lejanos en otra clase.
#
# Los numeros de clase no deben ser arbitrarios. Para los servidores de 
# autoconexion, aquellos que poseen un numero de puerto  (e.g. 6667) al final 
# de la linea C: (ver abajo) , mientras mas alto sea el numero mas alta la 
# prioridad  de autoconexion.
#
# Los campos en orden son: numero de clase, frecuencia de ping (en segundos), 
# frecuencia de conexion (en segundos), numero maximo de links ( que se usa 
# para autoconexiones y para limitar el numero de clientes en esa clase),
# y sendq (esto reemplaza cualquier valor configurado en include/config.h para
# la linea #define MAXSENDQLENGTH).
#
# 
# En este caso la frecuencia de conceccion es 0 indicando que es un clase 
# cliente  (los servidores nunca se conectan a los clientes, es al reves).
Y:1:90:0:20:100000
#
# Estas son las Y: lines de servidor que se recomienan para conectarse a 
# DALnet. Ademas de esto se debe tener por lo menos una clase cliente y una 
# clase oper (ver 0: lines ). DALnet ha convenido en enumerarlas del 5 al 10
#
# Clase 50 - Hub a hub, autoconexin
Y:50:90:60:1:15000000
#
# Clase 51 - Hub a hub, no autoconexin
Y:51:90:60:0:12000000
#
# Clase 30 - Hub a leaf server en US
Y:30:90:0:0:5000000
#
# Clase 32 - Hub a leaf server en EU
Y:32:180:0:0:5000000
#
# Clase 34 - Hub a leaf server en AU
Y:34:300:0:0:5000000
#
# Clase 40 - Leaf server en US a hub, autoconexin
Y:40:90:90:1:5000000
#
# Clase 41 - Leaf server en US a hub, no autoconexin
Y:41:90:90:0:5000000
#
# Clase 42 - Leaf server en EU a hub
Y:42:180:90:1:5000000
#
# Clase 44 - Leaf server en AU a hub
Y:44:300:120:1:5000000

#
# I: [MANDATORY]. Las I: lines son linead de autorizacion para clientes. Sin
# esta linea, los clientes no podran conectarce a tu servidor. Se permite el 
# uso de comodines ("*") y passwords.
# 
# Tambien puede ser usado el Ident ( para mas informacion sobre esto, ver el 
# rfc1413) para colocar el simbolo @ en los campos apropiados.
#
# Los campos son como sigue:
# I:IP-address-mask:password opcional:domain-mask::clase de conexion(opcional)
#
# 

#
# O: [OPTIONAL]. Linea que define los accesos de operador. No necesitas 
# ser un operador para correr un servidor de IRC. Un server bien configurado
# no necesita un operador en linea, el administrador del server puede usar 
# kill -HUB para recargar el archivo de configuracin.
# Los parametros de configuracion son los siguientes :
# O:hostname (ident "@" permitido):password:NickName:AccessFlags:class
# Si la persona definida en "Nickname" no se conecta desde el hostname 
# indicado en el primer parametro, recibira un error con el mensaje :
# "No O: lines for your host". 
# Nota: Si los passwords seran encriptados se definen en include/config.h, 
# revisar ircd/crypt/README para mas informacion.
#
# Los flags de acceso son los siguientes ( Si se deja en blanco o con *
# indicas que tiene acceso completo) :
# r = acceso a /rehash el server
# R = acceso a /restart el server
# D = acceso a /die el server
# g = operador puede enviar /globops
# w = operador puede enviar /wallops
# l = operador puede enviar /locops
# c = acceso local a /squits y /connects
# C = acceso remoto a /squits y /connects
# k = acceso local a /kills
# K = acceso global a /kills
# b = operador puede hacer /kline a los users del server
# B = operador puede hacer /unkline a los users del server
# n = operador puede enviar notices locales (/notice $servername message)
# N = operador puede enviar notices globales (/notice $*.dal.net message)
# A = puede configurar los modos +Aa para mostrar los accesos de admin en
#     el server al hacer un /whois
# a = puede configurar el modo +a para mostrar los accesos de admin en los
#     servicios al hacer un /whois
# u = operador puede configurar /umode +c
# f = operador puede configurar /umode +f
# s = operador puende enviar /chatops
# o = operador local, flags incluidos: rhgwlckbBnuf
# O = operador global, flags incluidos: oCKNs
#
# Nota: Los flags RD deben ser manualmente incluidos si deseas tener acceso
# a los comandos /restart o /die.
#Ejemplos :
#
# Una configuracion simple, seria de la siguiente manera:
O:*.edu.pe:nopassword:sicario:*:10
#
# La siguiente configuracion obliga el ident:
O:gnr@uni.edu.pe:nopassword:sicario::10
# 
# La siguiente configuracion da al nickname "GunsNr" con el password 
# "tuputamadre", el nivel de operador local, con esto tendra acceso a
# hacer /kill /squid y /connect, solo en el servidor donde este como
# operador.
O:*.edu.pe:tuputamadre:GunsNr:o:10
#

# U: [OPTIONAL]. Esta linea define los servidores que el irc reconoce
# como permitidos de hacer  varios cambios en el ambiente de irc ( 
# cambios de modo, por ejemplo ) sin obstruir el funcionamiento de la
# red. Por ejemplo, DALnet requiere de la siguiente linea:
U:services.dal.net:*:*

#
# X: [SUGGESTED]. Linea que define el password que un operador debe usar
# para reiniciar o dar de baja el IRC server. Por motivo de seguridad 
# deben tener el flag de R y D en su configuracin de O:line, para evitar
# la ejecucin de manera accidental de los comandos /die o /restart.
#
# X:<password para /DIE>:<password para /RESTART>
X:diepass:restartpass

# C: [NETWORKED]. Linea que indica con que servidores realizara una conexion 
# tu servidor.
# N: [NETWORKED]. Linea que indica a que servidores autorizas una conexion.
# C/N lines trabajan en conjunto, no puede existir una linea sin la otra. 
#
# C: lines tiene la siguiente sintaxis:
# C:hostname del server remoto:password:nombre del server remoto:port:clase
#   conexion:source ip
# N: lines tiene la siguiente sintaxis:
# N:hostname del server remoto:password:nombre del server remoto:host mask:
#   soporte de encriptacion y/o compresion:clase de conexion
#

#
# K: [OBSOLETE].  Ahora los bans son almacenados en el archivo kline.conf.
# Esta linea indica un user@host a ser baneado de un servidor, ademas de un
# campo adicional que indica el tiempo.
# Los K: lines no son globales, es decir que el usuario podra usar otro
# server para conectarce.
# El campo para el tiempo, es solo usado si has definido el parametro #define
# TIMED_KLINES en el archivo config.h
# Los campos son definidos de la siguiente manera :
# K:hostmask:razon:username
# EL uso de comodines esta permitido en los campos.
# El uso de espacios en el campo de la razon del K: line, esta permitido.
K:*.gob.pe:Acceso no autorizado para su dominio:*
# Esta linea de K: line, coloca un ban a cualquier maquina que pertenesca
# al gobierno, con cualquier username.
#
K:*.gob.pe:0800-1200,1300-1700:*
# Este k: line, coloca un ban a cualquier maquina del gobierno, con cualquier 
# username, indicando dos rangos de tiempo, entre las 08 - 12 horas y entre las
# 13 - 17 horas.
#

#
# Q: [OPTIONAL]. Mediante estas lineas puedes proteger ciertos nicks para 
# que no puedan ser usados en el servidor, o lo que se conoce como nicks 
# reservados.
# La sintaxis es como sigue:
# Q:*:razon de la proteccion:nickname
#
# En DALnet, por ejemplo usan las siguientes lineas:
Q::Reserved for services:ChanServ
Q::Reserved for services:NickServ
Q::Reserved for services:MemoServ
Q::Reserved for services:OperServ
Q::Reserved for services:HelpServ
#
Q::Reserved for operators:DALnet
Q::Reserved for operators:IRCop

# 
# Z: [DISCOURAGED]. Linea utilizada para bloquear todas las conexiones
# entrantes, de una cierta direccion IP. 
# El Z-Line es mas poderoso que un K-Line, por que puede detener a los
# usuarios antes de que se registren.
# NOTA 1: Z-lines no trabaja en host names, solo en direcciones IP.
# NOTE 2: EL :* al final de la linea es requerida.
#
# Sintaxis:
# Z:IP adress:razn del zapping:*
Z:127.0.0.1:Please don't log on from the local machine:*

#
# H: [OPTIONAL]. Linea que define si puedes actuar como HUB.
# El primer campo de la sintaxis, puede ser un comodin, el tercer campo tiene
# tiene que ser exactamente el nombre de un servidor, NO el hostname del
# server, que es muy distinto al nombre.
# Los campos son como siguen:
# H:servers que son permitidos de conectar al HUB::HUB server
#
H:*::sicario.us.dal.net
# Permite la conexion de cualquier servidor hacia el HUB sicario.us.dal.net

#
# P : [SUGGESTED]. Linea donde se indica que puertos estan disponibles para
# las conexiones.
# La sintaxis es la siguiente : 
# direccion ip desde donde permite conecciones, segundo campo no usado, puertos
#
P:*:::6665
# Permite la conexion de cualquier direccion hacia el puerto 6665.
P:128.32.*:::6665
# Permite la conexion solo de la red 128.32.* hacia el puerto 6665.

#
# E : [OPTIONAL]. Utilizado para permitir el paso de K: lines de algunos 
# clientes.  EL primer argumento es el hostmask, el segundo argumento no es
# usado, el tercer argumento username, es opcional.
# cada operador de un servidor debe tener una linea de estas.
#
E:shell3.ba.best.com::jrsE:*.concentric.net::*

# T : [OPTIONAL]. Linea donde muestras el host o la URL de tu Proxy
# monitor.
# Esta linea T: configura el host de tu proxy-monitor y la URL es por
# defecto.
T:proxy-checker.sicario.net 
# Esta linea T: configura el host por defecto y la URL.
T:www.sicario.net/proxies/


Nota : Muchas de las lineas antes mencionadas solo seran usadas si es que
tu servidor estara linkado a la red de DALnet, asi que si deseas tan solo
correr un server propio, tendras que obviar algunas de esas lineas.

Una vez finalizada la configuracion del ircd.conf procedemos a ejecutar el
binario.

[nebula@localhost nebula]#./ircd

Comandos basicos de administracion :

. chatops :<mensaje>
  Envia un <mensaje> a todos los operadores que tengan el modo +b.

. close
  Cierra todas las conexiones de los clientes que no se encuentren
  registrados
  
. connect <server> <port>
  Establece un enlace a un determinado servidor <server> por un puerto
  especifico <port>

. die
  Finaliza la ejecucion del daemon, para confirmar te pide una contrasea.

. globops <mensaje>
  Envia un mensaje <mensaje> a todos los operadores que tengan el modo +g.

. kill <nick>,<nick> ... (18) :<razon>
  Finaliza la conexion de un usuario determinado <nick> al servidor de irc,
  con una razon <razon>. Se puede especificar 18 nicks, separados por comas.

. kline <minutos> <mascara> :<razon>
  Aade un ban del servidor para un especifico user@host, el cual expira de
  acuerdo al tiempo especificado o el que esta por defecto en la configuracion,
  en caso no se especifique el tiempo, <mascara> puede tambin ser un nick.

. locops :<mensaje>
  Envia un mensaje a todos los operadores del servidor.

. mode <nick> <+-modos>
  Aade o quita atributos <modos> a un determinado nick.

  Modos :
		A = Administrador del servidor ( Server admin )
		a = Administrador de servicios ( Services admin )
		b = Para poder leer los mensaje de chatops.
		c = Para poder ver las conecciones/desconecciones de los
                    usuarios.
		e = Para poder visualizar el trafico DCCALLOW.
		f = Para visualizar los floods de mensajes al servidor.
		g = Para visualizar los mensajes de globops.
		h = Helper.
		m = Para visualizar las advertencias del SpamBot.
		n = Para visualizar el envio de notices.
		o = Operador global.
		O = Operador local.
		y = Para visualizar las peticiones de Stats y los Links.

. oper <usuario> <clave>
  Para identificarte como operador.

. privmsg #<mascara> :<mensaje>
  Permite enviar un mensaje a todos los usuarios que cumplan con la mascara.

. privmsg $<mascara> :<mensaje>
  Permite enviar un mensaje a todos los usuarios en todos los servidores, que
  cumplan con la mascara.

. rehash <opcion>
  Para volver a cargar las configuracion del servidor. Opciones disponibles :
	DNS 	= Llena el cache de DNS y vuelve a leer el /etc/resolv.conf
	SZLINES = Limpia todos los services-set Z Lines.
	TKLINES = Limpia todos los KLINES temporales.
	MOTD 	= Vuelve a cargar el mensaje del dia.
	IP 	= Recarga la tabla de IPs.
	AKILLS 	= Recarga la tabla de autokills.

. restart <clave>
  Reinicia el servidor, es necesario ingresar la clave.

. samode <canal> <mode>
  Se utiliza este comando para poner modos a un canal, si necesidad de ser
  operador de dicho canal.

. set <opcion> <numero>
  Muestra o cambia los parametros del servidor. Las opciones disponibles son :
	MAX 	   = maximo numero de clientes.
	SPLITDELAY = Split delay, tiempo de espera para obtener op en un canal,
                     cuando hay split.
	FLOODNUM   = El numero de CTCP floods
	FLOODTIME  = El rango de tiempo para el CTCP flood.
	FLOODBLOCK = El rango de tiempo que sera bloqueado el flood.
	SPAMNUM    = Numero de join/parts para considerarlos spamers.
	SPAMTIME   = Rango de tiempo para el join/part.
	
. squit <mascara>
  Desconecta el primer servidor que cumpla con la mascara especificada.

. stats <flag> <destino>
  Devuelve estadisticas del servidor, <destino> se utiliza para especificar un
  servidor.
  Flags disponibles :
	c|C 	- Muestra C:lines y N:lines configurados.
	D	- Muestra Z:lines configurados.
	d	- Muestra Z lines aadidos por los servicios.
	e|E	- Muestra E:lines configurados.
	f|F	- Muestra F:lines configurados.
	h|H	- Muestra H:lines configurados.
	k	- Muestra K:lines temporales.
	K	- Muestra K:lines configurados.
	t|T	- Muestra estadisticas de trafico.
	U	- Muestra U:lines configurados.
	z|Z	- Muestra memoria utilizada.

. unkline <mascara>
  Remueve de la lista de baneados a la mascara que cumpla el criterio.

. wallops :<mensaje>
  Envia un mensaje a todos los usuarios que esten con el modo +w.

. zline <ip> :<razon>
  Aade un ban en el servidor, al ip especificado en <ip>.



4. Seguridad
------------
A continuacion tocaremos algunos aspectos de seguridad que tienes que afrontar
al poner un servidor de irc.

DoS / "Nukes"
------------
Quizas el problema mas comun que tendras, es el hacer frente a los ataques de
DoS ( Denegacion de Servicio ) o "Nukes", este ataque no solo se aplica a
servidores de IRC, tambien es el problema de Servidores Web, Correo, Proxys,
y de cualquier maquina en general conectada a Internet.
El objetivo del ataque es hacer que la victima deniegue cualquier servicio,
bien por conseguir un crash del SO, aplicacion, del enlace a internet o
simplemente volverlo muy lento.
El DoS puede ser contra el software o contra la red.
- Ataque al software :
  Cuando utilizamos algun bug del software corriendo en un servidor, para
  conseguir el DoS, estos pueden ser exploits remotos o locales.
  La solucion esta en actualizar el software que utilizas, con versiones que
  parchen el bug existente.

- Ataque a la red.
  Cuando se utiliza un flood de peticiones hacia el servidor o cualquier
  maquina conectada a internet, saturando su enlace. La solucion parcial a
  este problema seria la implementacion de un firewall.

Entre las variantes del ataque DoS, tenemos :
- Bonk : 
  Tambien conocido como teardrop2, este ataque afecta a maquinas corriendo
  Win95 y NT4, versiones actuales como win98, ME, 2000, XP no se ven
  afectadas. Este ataque genera un pantallaso azul y el posterior reboot del
  sistema para poder reanudar el funcionamiento.
- Land :
  Afecta a win95 y NT4, versiones de win 98, ME, 2000, XP no se ven afectadas.
  Genera un congelamiento del sistema.
- Teardrop :
  Es un bug de los SO al recibir paquetes fragmentados de TCP/IP, afecta a
  Win95, NT4 y Linux con kernel anterior al 2.1.63. Genera un colgado del
  sistema y su posterior reboot para reanudar el sistema.
- WinNuke :
  O tambien conocido como OOB bug, afecta a Win95 y NT4, genera un patallaso
  azul con un error de Virtual Device Driver, el funcionamiento del sistema
  se recupera, pero para reanudar la conexion a internet es necesario el
  reboot del equipo.

Los ataques antes mencionados son en muchos casos ya obsoletos, debido a que
versiones actuales de los sistemas operativos ya solucionaron el problema con
esos bugs, ya sea con parches, service pack o nuevas versiones, pero queria
mencionarlos como resea historica.

- Click :
  Es un ataque de ICMP flood hacia usuarios conectados al irc, generando la
  desconexion de dicho usuario del servidor, con el tipico mensaje de error
  "Connection reset by peer", la solucion esta en usar un personal firewall,
  para filtrar las peticiones de PING u otro tipo. En un articulo de
  A. Gonzales, puede usted tener una comparativa de muchos firewalls
  personales, con lo cual podra tener una ayuda en escoger un firewall
  personal.
  Aqui un enlace donde podras encontrar este articulo :

  http://www.freewebz.com/nebula/


- sPING, Syn Flood, ICMP Flood.
  Consiste en enviar una serie de peticiones a la victima, saturandolo con
  trafico de entrada y de salida al tratar de responder a las peticiones.
  El ataque se hace aun mas sofisticado si se usa varias maquinas, controladas
  por una maestra, a este tipo de ataque se le conoce como Denegacion de
  Servicio Distribuido o DDoS.
  Como atacante, al hacer uso de este metodo, tambien seras afectado, debido
  a que recibiras respuestas de la victima, para evitar eso se usa la tecnica
  de IP Spoofing, para ocultar tu verdadera direccion y evitar el echo.
  El DDoS, usa una maquina principal para coordinar el ataque a un objetivo,
  se aplica cuando quieres afectar por ejemplo a una red o una maquina que use
  un ancho de banda superior.
  Para este ataque se requiere ademas de tener el control de otros hosts, el
  instalar un software. Algunos de los programas que se utilizan para el DDoS
  tenemos : TFN, Trinoo, TFN2K.
  Aqui una grafica para comprender mejor :

              ...........>[ maquina 1 ]......   
              .                             ...
        [ maestro ]......>[ maquina 2 ].............>[ victima ]
              .                             ... 
              ...........>[ maquina 3 ]......   
       

  No existe una solucion definitiva contra este problema, aun si usaramos un
  firewall, por que este solo te filtrara las peticiones para no generar
  un echo, pero aun seguiras recibiendo el flood y por lo tanto tendras mucho
  trafico de entrada. Lo unico que te queda es rastrear el ataque, identificar
  al agresor y denunciarlo, cosa que se hace muy dificil si  se usa IP Spoofing
  y servidores crackeados para este fin.

Cualquier comentario, duda o sugerencia escribir a sicario@phreaker.net
