UnrealIRCd es un daemon IRC de código abierto, originalmente basado en DreamForge, y está disponible para sistemas operativos tipo Unix y Windows, lo instalare concretamente en un VPS con Debian 9.4 stretch. Si vas a enlazar con nosotros abajo del todo tienes lo que debes tener en tu configuración pero antes debes de seguir los pasos basicos:

Lo primero que necesitamos es instalar las dependencias para que soporte conexiones SSL y herramientas de compilación:

sudo apt install libssl-dev build-essential

Descargamos la última versión del UnrealIRCd y nos preparamos para compila:

wget https://www.unrealircd.org/downloads/unrealircd-latest.tar.gz
tar xzvf unrealircd-latest.tar.gz
cd unrealircd*

Ahora vamos a configurar lo que queremos activar o no del servidor haciendo uso del script según convenga, en mi caso le di a todo a la tecla ENTER:

./Config

Al terminar de configurar terminamos compilando UnrealIRCd:

make -j8
make -j8 install

Despúes de un tiempo que depende del ordenador que tengamos tendremos instalado por defecto el UnrealIRCd en ~/unrealircd, crearemos nuestra fichero de configuración que debe ser unrealircd.conf copiado previamente de uno de ejemplo para posteriormente modificarlo:

cd ~/unrealircd/conf
cp examples/example.conf unrealircd.conf

Por ultimo para acabar con la configuración del servidor de iRC editaremos el archivo unrealircd.conf según convenga.

Instalamos letsencrypt:

sudo apt install git
cd /opt
sudo git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
sudo chmod g+x letsencrypt-auto

Ahora crearemos el certificado y copiaremos los archivos al UnrealIRCd, en mi caso para el subdominio irc.chatlatino.org:

sudo ./letsencrypt-auto certonly --standalone --preferred-challenges http-01 -d irc.latinochat.org
cp /etc/letsencrypt/live/irc.latinochat.org/fullchain.pem ~/unrealircd/conf/ssl/server.cert.pem
cp /etc/letsencrypt/live/irc.latinochat.org/privkey.pem ~/unrealircd/conf/ssl/server.key.pem

(Nota que los archivos de destino deben ser server.cert.pem para el certificado y server.key.pem para la clave privada ya que es lo que espera encontrar UnrealIRCd por defecto, de lo contrario tendremos que indicarlo en al unrealircd.conf en las opciones set::ssl::certificate y set::ssl::key respectivamente).

Si tenemos varios subdominios podemos añadirlos todos seguidos con -d subdominio1 -d subdominio2 (...).

Suponiendo que vamos a aceptamos conexiones al puerto 6697 por SSL en el archivo unrealircd.conf deberemos tener algo parecido a esto:

listen {
     ip *;
     port 6697;
     options { ssl; };
 };

En los bloques Link's si tuviéramos deberemos tener al menos lo siguiente suponiendo que el puerto usado para enlazar con servidores sea el 6900:

listen {
     ip ip_servidor;
     port 6900;
     options { ssl; serversonly; };
 };
 
 link irc.latinochat.org {
     incoming {
         mask *;
     };
     outgoing {
         bind-ip *;
         hostname ip_remoto;
         port 6900;
         options { ssl; autoconnect; };
     };
     verify-certificate yes;
     password "unaclave";
     hub *;
     class servers;
 };

Donde:

  • verify-certificate yes indica al demonio que compruebe si el certificado es válido, de lo contrario no enlazara, esto nos da un plus de seguridad en los servidores para evitar suplantaciones o ataques.
  • password Clave que debe estar en todos los nodos para validar.

Solo falta iniciar UnrealIRCd y comprobar posibles fallas en la configuración

./unrealircd start

En sucesivos cambios del certificado podemos actualizar así:

./unrealircd reloadtls

O desde el iRC si disponemos de los permisos:

/REHASH reloadtls

 Una de las pegas de usar letsencrypt es que cada 3 meses hay que renovar el certificado ya que caduca por lo que creamos una tarea programada en cron, antes crearemos el script:

#!/bin/bash
#
 
CERT="/etc/letsencrypt/live/irc.latinochat.org/fullchain.pem"
KEY="/etc/letsencrypt/live/irc.latinochat.org/privkey.pem"
 
UNREALIRCD="/home/ircd/unrealircd"
 
ACCOUNT="ircd"
 
UNREALCERT_DEST="$UNREALIRCD/conf/ssl/server.cert.pem"
UNREALKEY_DEST="$UNREALIRCD/conf/ssl/server.key.pem"
 
/opt/letsencrypt/certbot-auto renew
 
# Now exit if the certificate is unchanged:
if cmp $CERT $UNREALCERT_DEST >/dev/null 2>1; then
    exit 0
fi
 
echo "Certificate changed"
 
rm -f $UNREALCERT_DEST $UNREALKEY_DEST
cp $CERT $UNREALCERT_DEST || exit 1
cp $KEY $UNREALKEY_DEST || exit 1
 
chown --no-dereference $ACCOUNT $CERT || exit 1
chown --no-dereference $ACCOUNT $KEY || exit 1
 
echo "Certificate and keys succesfully installed."
 
su -s /bin/sh -c "cd $UNREALIRCD; ./unrealircd reloadtls" - $ACCOUNT

Modificamos las rutas segun convenga y lo guardamos en /usr/local/bin/renew_cert.

sudo chmod +x /usr/local/bin/renew_cert
sudo crontab -e
1 0 * * *   /usr/local/bin/renew_cert 1>/dev/null 2>1/usr/local/bin/renew_cert

Esto ejecutara todos los días el script a las 0:01 comprobando si hay cambios en el certificado, si los hay se actualiza, así no nos tenemos que preocupar de esto ;).

 

Cambios para enlazar con LatinoCHaT

 Para establecer una conexión con la red debes tener o cambiar lo siguiente en tu archivo unrealircd.conf empezaremos de arriba a abajo, nota que todo lo que este en mayúsculas tenemos que completar con nuestros datos mientras que los que contienen '?' debemos preguntar al administrador de la red a enlazar:

Bloque me:

me {
    name "TUNUDO";
    info "PEQUEÑA DESCRIPCION";
    sid "?";
};
 
allow {
   ip *@*;
   class clients;
   maxperip 20;
};

Bloque oper (O:Line):

oper TUNICK {
   class opers;
   mask *@IP;
   password "CODIGO" { bcrypt; };
   operclass netadmin;
   swhois "Es un administrador de TUNUDO";
   vhost TUNICK.admin.TUNUDO;
};

El password en este caso es recomendable usar bcrypt, el CODIGO lo podemos generar usando el script de unrealircd:

cd ~/unrealircd
./unrealircd mkpasswd bcrypt

Bloque listen, donde nuestro servidor de iRC escuchara las peticiones nuevas de los clientes y servidores:

 
listen {
    ip TUIP;
    port 6667;
    options { clientsonly; };
};
 
listen {
    ip TUIP;
    port 6697;
    options { ssl; clientsonly; };
};
 
listen {
    ip TUIP;
    port 7000;
    options { ssl; serversonly; };
};

Bloque LINK el mas importante, este contendrá el nudo por el que vamos a establecer conexión sin olvidarnos del bloque uline que son los servicios:

link ? {
        incoming {
        mask *;
    };
 
    outgoing {
        bind-ip *;
        hostname ?;
        port 7000;
       options { ssl; };
    };
 
    password "?";
    hub *;
    class servers;
};
 
ulines { services.latinochat.org; };

Y para finalizar modifica/añade lo siguiente en el bloque SET:

set {
    network-name "LatinoCHaT";
    services-server "services.latinochat.org";
    hiddenhost-prefix "Clk";
    cloak-keys {?};
    level-on-join "none";
 
    options {
        hide-ulines; /* hide U-lines in /MAP and /LINKS */
        show-connect-info; /* show "looking up your hostname" messages on connect */
        dont-resolve;
        flat-map;
    };    
};

Para completar los campos con el símbolo '?' enviar un email a Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. con el asunto "Enlazar latinochat" y dinos tu nombre de nudo que quieres usar así como la IP del servidor, te responderemos con los datos que necesitas para completar el enlace que son el SID, el servidor donde conectar, la contraseña y las cloak-keys.

 

¿Alguna duda?

 
 

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado