Configuración del sistema de listas

En esta sección realizaremos el despliegue de nuestro sistema de listas. Para ello instalaremos el software necesario, configuraremos los orígenes de forma que se actualicen automáticamente y definiremos la relación entre dichos orígenes junto a la lógica a nuestro servicio.

Recuerde que tiene a su disposición todos los ficheros de configuración de esta guía en https://github.com/luids-io/docs/blob/master/es/modules/guide-advanced-dns-sinkhole/examples/.
Este proceso está probado únicamente en un sistema Ubuntu 20.04LTS server. Los binarios están compilados estáticamente y las rutas empleadas son las de una distribución estándar, por lo que el instalador debería funcionar en cualquier distribución.

Instalación del paquete xlist

Instalar xlist es muy sencillo, basta descargar el instalador ya existente y ejecutarlo. Para ello puede dirigirse a https://github.com/luids-io/xlist/releases y descargar la última versión del instalador (fichero installer_linux.sh). También puede simplemente copiar y pegar lo siguiente en una consola de comandos.

DOWNLOAD_URL=$(wget -O - https://api.github.com/repos/luids-io/xlist/releases/latest| grep download.*installer | grep -v sha256 | cut -d '"' -f4)
wget ${DOWNLOAD_URL} -O installer_xlist.sh
chmod 755 installer_xlist.sh
sudo ./installer_xlist.sh
Si está instalando el software en una arquitectura diferente a la amd64 (como en el caso de una Raspberry) deberá definirla en una variable de entorno al lanzar el instalador. Ejemplo: sudo ARCH=arm64 ./installer.sh. Las arquitecturas disponibles son: amd64, arm, arm64, mips, mips64, mips64le, ppc64 y s390x.

Descarga de la base de datos xlist

Para descargar la base de datos xlist, bastará ejecutar el comando xlist_database como administrador. El script descargará o actualizará dicha base de datos en el directorio /usr/local/share/xlist-database.

$ sudo xlist_database
Clonando en '/usr/local/share/xlist-database'...
remote: Enumerating objects: 973, done.
remote: Counting objects: 100% (973/973), done.
remote: Compressing objects: 100% (244/244), done.
remote: Total 973 (delta 850), reused 851 (delta 728), pack-reused 0
Recibiendo objetos: 100% (973/973), 161.50 KiB | 879.00 KiB/s, listo.
Resolviendo deltas: 100% (850/850), listo.
La base de datos se va actualizando con nuevas fuentes y va corrigiendo posibles cambios que se produzcan en las ya existentes: cambios de url, formato e incluso si la fuente deja de existir. Por ello, es más que recomendable que actualicemos regularmente la base de datos con el comando xlist_database.

Si lo preferimos, podemos hacer que se actualice diariamente de forma automática. Para ello, basta con que habilitemos el timer que crea el instalador para esta tarea.

sudo systemctl enable --now luids-xlist-updatedb.timer
Para que la actualización automática funcione es necesario que hayamos ejecutado el comando xlist_database previamente.

Configuración de xlget

Tras descargar la base de datos, es necesario en primer lugar configurar los orígenes de las listas que vamos a utilizar. para ello lo mejor es realizar enlaces simbólicos en /etc/luids/xlist/sources.d. De este modo, si un origen cambiase de url, formato, etc, nuestro sistema estará actualizado gracias a tener sincronizada la base de datos xlist.

Como administradores, ejecutaremos la siguiente secuencia de comandos.

mkdir -p /etc/luids/xlist/sources.d
cd /etc/luids/xlist/sources.d
DBDIR=/usr/local/share/xlist-database
ln -s $DBDIR/sources/abuse-ch-urlhaus.json .
ln -s $DBDIR/sources/abuse-ch-ssl.json .
ln -s $DBDIR/sources/alienvault-com.json .
ln -s $DBDIR/sources/blocklist-site-abuse.json .
ln -s $DBDIR/sources/blocklist-site-ads.json .
ln -s $DBDIR/sources/blocklist-site-crypto.json .
ln -s $DBDIR/sources/blocklist-site-malware.json .
ln -s $DBDIR/sources/blocklist-site-phishing.json .
ln -s $DBDIR/sources/blocklist-site-ransomware.json .
ln -s $DBDIR/sources/blocklist-site-redirect.json .
ln -s $DBDIR/sources/blocklist-site-scam.json .
ln -s $DBDIR/sources/blocklist-site-tracking.json .
ln -s $DBDIR/sources/emergingthreats-net.json .
ln -s $DBDIR/sources/interserver-net.json .
ln -s $DBDIR/sources/myip-ms.json .
ln -s $DBDIR/sources/phishing-army.json .
ln -s $DBDIR/sources/spamhaus-org-drop.json .
ln -s $DBDIR/sources/zerodot1-coinblockerlists.json .

Editaremos el fichero de configuración de xlget para incluir el directorio como fuentes.

Contenido de /etc/luids/xlist/xlget.toml
[xlget]
outputdir = "/var/lib/luids/xlist"
cachedir  = "/var/cache/luids/xlist"
statusdir = "/var/lib/luids/xlist/status"

[xlget.source]
dirs     = [ "/etc/luids/xlist/sources.d" ]

Una vez creados dichos ficheros podemos chequear su correcta sintaxis mediante el comando xlget_check.

# xlget_check
INFO[0000] xlget (version: c76a683 build: 2020-12-17T06:39:34+0100)
configuration ok
needs update: 'abuse.ch-ssl' 'abuse.ch-urlhaus' 'alienvault.com' 'blocklist.site-abuse' 'blocklist.site-ads' 'blocklist.site-crypto' 'blocklist.site-malware' 'blocklist.site-phishing' 'blocklist.site-ransomware' 'blocklist.site-redirect' 'blocklist.site-scam' 'blocklist.site-tracking' 'emergingthreats.net' 'interserver.net' 'myip.ms' 'phishing.army' 'spamhaus.org-drop' 'zerodot1-coinblockerlists'

Tras la validación, vamos a realizar la descarga de las listas. Para ello utilizaremos el comando xlget_update.

# xlget_update
INFO[0000] xlget (version: c76a683 build: 2020-12-17T06:39:34+0100)
INFO[0000] getting 'abuse.ch-ssl'
INFO[0000] summary 'abuse.ch-ssl': updated=true ip4=83 ip6=0 domain=0 md5=98 sha1=3650 sha256=0
INFO[0000] getting 'abuse.ch-urlhaus'
INFO[0000] summary 'abuse.ch-urlhaus': updated=true ip4=0 ip6=0 domain=861 md5=0 sha1=0 sha256=0
INFO[0000] getting 'alienvault.com'
INFO[0000] summary 'alienvault.com': updated=true ip4=707 ip6=0 domain=0 md5=0 sha1=0 sha256=0
INFO[0000] getting 'blocklist.site-abuse'
...
INFO[0034] summary 'zerodot1-coinblockerlists': updated=true ip4=0 ip6=0 domain=93947 md5=0 sha1=0 sha256=0
INFO[0034] xlget finished
En la salida pueden mostrarse algunos warnings que podremos ignorar si son de formato.

Tras finalizar el proceso, podemos ver que las listas se han descargado correctamente en el directorio /var/lib/luids/xlist también podemos ver en el directorio /var/lib/luids/xlist/status información adicional sobre el estado de actualización del contenido de las listas.

Para despreocuparnos completamente de la actualización del contenido de las listas, inicializaremos el servicio xlget para que chequee automáticamente y actualice las listas si es necesario. Además lo habilitaremos para que se inicie con el sistema.

systemctl start luids-xlget
systemctl enable luids-xlget

Podremos verificar que se inicia correctamente con el correspondiente systemctl status luids-xlget.

Obtención de la API KEY para Google Safebrosing

Para poder incluir la api de Google Safe Brosing es necesario que previamente tengamos un token de acceso. La obtención de dicho token se encuentra fuera del alcance de este documento, ya que existen numerosas guías sobre cómo obtenerlo.

Configuración de xlistd

La configuración de xlistd se divide en dos partes:

  • Definición del servicio.

  • Parámetros de configuración del servidor.

La definición del servicio la realizaremos utilizando múltiples ficheros para que se entienda mejor. Empezaremos por realizar enlaces simbólicos a las listas que vamos a utilizar, para lo que ejecutaremos como administrador la siguiente secuencia de comandos.

mkdir -p /etc/luids/xlist/services.d/file
cd /etc/luids/xlist/services.d/file
DBDIR=/usr/local/share/xlist-database
ln -s $DBDIR/services/file/abuse-ch-urlhaus.json .
ln -s $DBDIR/services/file/abuse-ch-ssl.json .
ln -s $DBDIR/services/file/alienvault-com.json .
ln -s $DBDIR/services/file/blocklist-site-abuse.json .
ln -s $DBDIR/services/file/blocklist-site-ads.json .
ln -s $DBDIR/services/file/blocklist-site-crypto.json .
ln -s $DBDIR/services/file/blocklist-site-malware.json .
ln -s $DBDIR/services/file/blocklist-site-phishing.json .
ln -s $DBDIR/services/file/blocklist-site-ransomware.json .
ln -s $DBDIR/services/file/blocklist-site-redirect.json .
ln -s $DBDIR/services/file/blocklist-site-scam.json .
ln -s $DBDIR/services/file/blocklist-site-tracking.json .
ln -s $DBDIR/services/file/emergingthreats-net.json .
ln -s $DBDIR/services/file/interserver-net.json .
ln -s $DBDIR/services/file/myip-ms.json .
ln -s $DBDIR/services/file/phishing-army.json .
ln -s $DBDIR/services/file/spamhaus-org-drop.json .
ln -s $DBDIR/services/file/zerodot1-coinblockerlists.json .

Para incorporar las listas de la API Safebrosing ejecutaremos la siguiente secuencia.

mkdir -p /etc/luids/xlist/services.d/sblookup
cd /etc/luids/xlist/services.d/sblookup
DBDIR=/usr/local/share/xlist-database
ln -s $DBDIR/services/sblookup/safebrowsing-malware.json .
ln -s $DBDIR/services/sblookup/safebrowsing-phishing.json .

Crearemos un directorio /etc/xlist/services.d/local y dentro de dicho directorio, los siguientes ficheros que contendrán la definición de nuestras listas locales.

Contenido de /etc/luids/xlist/services.d/local/whitelist.json
[
  {
    "id": "local-whitelist",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/whitelist.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-whitelist'"
    }
  }
]
Contenido de /etc/luids/xlist/services.d/local/blacklist.json
[
  {
    "id": "local-malware",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/blacklist-malware.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-malware'"
    }
  },
  {
    "id": "local-phishing",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/blacklist-phishing.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-phishing'"
    }
  },
  {
    "id": "local-crypto",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/blacklist-crypto.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-crypto'"
    }
  },
  {
    "id": "local-reputation",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/blacklist-reputation.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-reputation'"
    }
  },
  {
    "id": "local-tracking",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/blacklist-tracking.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-tracking'"
    }
  },
  {
    "id": "local-ads",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/blacklist-ads.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-ads'"
    }
  },
  {
    "id": "local-redirect",
    "class": "file",
    "resources": [ "ip4", "ip6", "domain" ],
    "source": "local/blacklist-redirect.xlist",
    "opts": {
      "autoreload": true,
      "reloadseconds": 5,
      "reason": "found in 'local-redirection'"
    }
  }
]

Y crearemos los ficheros referenciados con nuestras listas locales.

touch /var/lib/luids/xlist/local/whitelist.xlist
touch /var/lib/luids/xlist/local/blacklist-malware.xlist
touch /var/lib/luids/xlist/local/blacklist-phishing.xlist
touch /var/lib/luids/xlist/local/blacklist-crypto.xlist
touch /var/lib/luids/xlist/local/blacklist-reputation.xlist
touch /var/lib/luids/xlist/local/blacklist-tracking.xlist
touch /var/lib/luids/xlist/local/blacklist-ads.xlist
touch /var/lib/luids/xlist/local/blacklist-redirect.xlist

Finalmente daremos forma a nuestro servicio de agregación creando los siguientes ficheros.

Contenido de /etc/luids/xlist/service.json
[
  {
    "id": "root",
    "class": "wbefore",
    "resources": [ "ip4", "ip6", "domain" ],
    "contains": [
      { "id": "local-whitelist" },
      {
        "id": "blacklist",
        "class": "selector",
        "resources": [ "ip4", "ip6", "domain" ],
        "contains": [
          { "id": "service-ip4"    },
          { "id": "service-ip6"    },
          { "id": "service-domain" }
        ]
      }
    ],
    "wrappers": [
      { "class": "logger" }
    ]
  }
]
Contenido de /etc/luids/xlist/services.d/domain.json
[
  {
    "id": "domain-malware",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=medium" } }
    ],
    "contains": [
      { "id": "local-malware"             },
      {
        "id": "safebrowsing-malware",
        "wrappers": [ { "class": "cache", "opts": { "ttl": 60 } } ]
      },
      { "id": "blocklist.site-malware"    },
      { "id": "blocklist.site-ransomware" },
      { "id": "abuse.ch-urlhaus"          }
    ]
  },
  {
    "id": "domain-phishing",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=medium" } }
    ],
    "contains": [
      { "id": "local-phishing"          },
      {
        "id": "safebrowsing-phishing",
        "wrappers": [ { "class": "cache", "opts": { "ttl": 60 } } ]
      },
      { "id": "blocklist.site-phishing" },
      { "id": "phishing.army"           }
    ]
  },
  {
    "id": "domain-crypto",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=info" } }
    ],
    "contains": [
      { "id": "local-crypto"              },
      { "id": "blocklist.site-crypto"     },
      { "id": "zerodot1-coinblockerlists" }
    ]
  },
  {
    "id": "domain-reputation",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=info" } }
    ],
    "contains": [
      { "id": "local-reputation"      },
      { "id": "blocklist.site-scam"   },
      { "id": "blocklist.site-abuse"  }
    ]
  },
  {
    "id": "domain-tracking",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=none" } }
    ],
    "contains": [
      { "id": "local-tracking"          },
      { "id": "blocklist.site-tracking" }
    ]
  },
  {
    "id": "domain-ads",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=none" } }
    ],
    "contains": [
      { "id": "local-ads"          },
      { "id": "blocklist.site-ads" }
    ]
  },
  {
    "id": "domain-redirect",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=check,event=info" } }
    ],
    "contains": [
      { "id": "local-redirect"          },
      { "id": "blocklist.site-redirect" }
    ]
  },
  {
    "id": "service-domain",
    "class": "sequence",
    "resources": [ "domain" ],
    "opts": { "first": true },
    "contains": [
      { "id": "domain-malware"    },
      { "id": "domain-phishing"    },
      { "id": "domain-crypto"     },
      { "id": "domain-reputation" },
      { "id": "domain-tracking"   },
      { "id": "domain-ads"        },
      { "id": "domain-redirect"   }
    ]
  }
]
Contenido de /etc/luids/xlist/services.d/ip4.json
[
  {
    "id": "ip4-malware",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=medium" } }
    ],
    "contains": [
      { "id": "local-malware"          },
      { "id": "blocklist.site-malware" },
      { "id": "abuse.ch-ssl"           },
      { "id": "emergingthreats.net"    },
      { "id": "interserver.net"        }
    ]
  },
  {
    "id": "ip4-phishing",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=medium" } }
    ],
    "contains": [
      { "id": "local-phishing" }
    ]
  },
  {
    "id": "ip4-crypto",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=info" } }
    ],
    "contains": [
      { "id": "local-crypto" }
    ]
  },
  {
    "id": "ip4-reputation",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=info" } }
    ],
    "contains": [
      { "id": "local-reputation"  },
      { "id": "alienvault.com"    },
      { "id": "myip.ms"          },
      { "id": "spamhaus.org-drop" }
    ]
  },
  {
    "id": "ip4-tracking",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=none" } }
    ],
    "contains": [
      { "id": "local-tracking" }
    ]
  },
  {
    "id": "ip4-ads",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=none" } }
    ],
    "contains": [
      { "id": "local-ads" }
    ]
  },
  {
    "id": "ip4-redirect",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=return,event=info" } }
    ],
    "contains": [
      { "id": "local-redirect" }
    ]
  },
  {
    "id": "service-ip4",
    "class": "sequence",
    "resources": [ "ip4" ],
    "opts": { "first": true },
    "contains": [
      { "id": "ip4-malware"    },
      { "id": "ip4-phishing"    },
      { "id": "ip4-crypto"     },
      { "id": "ip4-reputation" },
      { "id": "ip4-tracking"   },
      { "id": "ip4-ads"        },
      { "id": "ip4-redirect"   }
    ]
  }
]
Contenido de /etc/luids/xlist/services.d/ip6.json
[
  {
    "id": "ip6-malware",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=medium" } }
    ],
    "contains": [
      { "id": "local-malware" }
    ]
  },
  {
    "id": "ip6-phishing",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=medium" } }
    ],
    "contains": [
      { "id": "local-phishing" }
    ]
  },
  {
    "id": "ip6-crypto",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=info" } }
    ],
    "contains": [
      { "id": "local-crypto" }
    ]
  },
  {
    "id": "ip6-reputation",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=info" } }
    ],
    "contains": [
      { "id": "local-reputation"  },
      { "id": "myip.ms"           },
      { "id": "spamhaus.org-drop" }
    ]
  },
  {
    "id": "ip6-tracking",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=none" } }
    ],
    "contains": [
      { "id": "local-tracking" }
    ]
  },
  {
    "id": "ip6-ads",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=nxdomain,event=none" } }
    ],
    "contains": [
      { "id": "local-ads" }
    ]
  },
  {
    "id": "ip6-redirect",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "wrappers": [
      { "class": "response", "opts": { "preffixid": true } },
      { "class": "policy", "opts": { "value": "dns=return,event=info" } }
    ],
    "contains": [
      { "id": "local-redirect" }
    ]
  },
  {
    "id": "service-ip6",
    "class": "sequence",
    "resources": [ "ip6" ],
    "opts": { "first": true },
    "contains": [
      { "id": "ip6-malware"    },
      { "id": "ip6-phishing"    },
      { "id": "ip6-crypto"     },
      { "id": "ip6-reputation" },
      { "id": "ip6-tracking"   },
      { "id": "ip6-ads"        },
      { "id": "ip6-redirect"   }
    ]
  }
]

Editaremos el fichero de configuración del servidor xlistd para que utilice nuestra nueva definición de servicio.

Contenido de /etc/luids/xlist/xlistd.toml
[xlistd]
certsdir   = "/etc/luids/ssl"
datadir    = "/var/lib/luids/xlist"

[xlistd.service]
dirs  = [ "/etc/luids/xlist/services.d/local",
          "/etc/luids/xlist/services.d/file",
          "/etc/luids/xlist/services.d/sblookup",
          "/etc/luids/xlist/services.d" ]

files = [ "/etc/luids/xlist/service.json" ]

[xlistd.plugin.sblookup]
apikey  = "PON_AQUI_TU_API_KEY"

Comprobaremos que la configuración es correcta, como se muestra a continuación.

# su luxlist -m -c 'xlistd --config /etc/luids/xlist/xlistd.toml --dry-run'
INFO[0000] xlistd (version: c76a683 build: 2020-12-17T06:39:21+0100)
INFO[0000] registrando builder con config: { tokenname  false  []}
configuration seems ok

Inicializaremos y habilitaremos el servicio xlistd.

systemctl start luids-xlistd
systemctl enable luids-xlistd

Podremos probar el correcto funcionamiento del servidor utilizando el comando xlistc para hacerle consultas.

$ xlistc
[ip4 ip6 domain] (1.19093ms)
$ xlistc www.google.com
domain,www.google.com: false,"",0 (351.626µs)

Publicación del servicio de listas

Con el servidor ya configurado, publicaremos el servicio en apiservices.json para que el resto de servicios lo puedan utilizar.

Contenido final de /etc/luids/apiservices.json
[
  {
    "id": "dnsutil-archive",
    "api": "luids.dnsutil.v1.Archive",
    "endpoint": "tcp://127.0.0.1:5821"
  },
  {
    "id": "event-archive",
    "api": "luids.event.v1.Archive",
    "endpoint": "tcp://127.0.0.1:5821"
  },
  {
    "id": "event-notify",
    "api": "luids.event.v1.Notify",
    "endpoint": "tcp://127.0.0.1:5851"
  },
  {
    "id": "xlist-check",
    "api": "luids.xlist.v1.Check",
    "endpoint": "tcp://127.0.0.1:5801"
  }
]