Tip of the day: Channel mode +H provides Channel history to modern clients. Optionally, it can be stored on-disk to be preserved between server restarts.

Spamfilter

From UnrealIRCd documentation wiki
Jump to navigation Jump to search
This page is a translated version of the page Spamfilter and the translation is 85% complete.
Outdated translations are marked like this.
Other languages:

Spamfilter est un système avancé de lutte contre le spam, les bots publicitaires, les worms et autres menaces sur IRC. Les filtres de Spamfilter peuvent être ajoutés via la commande /SPAMFILTER ou dans des blocs spamfilter { } dans le fichier de configuration.

Commande SPAMFILTER

Les filtres Spamfilter peuvent être ajoutés depuis IRC avec la commande /SPAMFILTER, qui utilise la syntaxe suivante :
/spamfilter [add|del] [match-type] [target] [action] [tkltime] [reason] [match string]

Élément Explication et options disponibles
add / del Indique si vous voulez ajouter (add) ou supprimer (del) un filtre
match-type Le type de correspondance ("matching") que vous voulez utiliser (voir les exemples ci-dessous). Pour le moment, vous avez deux ou trois choix :
  • simple indique un matching simple, avec le suport des jokers ? et *
  • regex utilise les expressions régulières (voir ci-dessous)
  • posix est l'ancienne méthode d'expression régulière utilisée par la version 3.2.x, et n'est incluse que pour conserver la compatibilité.
target Indique quelles cibles seront considérées par ce filter :
Caractère Élément de configuration Description
c channel Message sur un salon
p private Message privé (entre deux utilisateurs)
n private-notice Notice privée (entre deux utilisateurs)
N channel-notice Notice sur un salon
P part Message de /PART
q quit Message de /QUIT
d dcc Nom de fichier DCC
a away Message de /AWAY
t topic Sujet d'un salon (/TOPIC)
u user Ban utilisateur. Le filtre sera appliqué sur nick!user@host:realname

Vous pouvez indiquer plusieurs cibles : par exemple, cpNn

action Indique l'action à effectuer, comme par exemple une kline. Voir Actions pour la liste des actions possibles.
tkltime La durée des *line/shun ajoutés par le filtre. Utilisez '-' pour utiliser la valeur par défaut ou pour passr le paramètre (par exemple, pour l'action 'block')
reason Raison pour le blocage/*line/shun ... Vous ne pouvez pa utiliser des espaces dans la raison, mais les tirets bas ('_') seront remplacés par des espaces à l'affichage et les doubles tirets bas ('__') par des tirets bas ('_'). De même, utilisez '-' pour garder la raison par défaut.
match-string Ceci est la chaîne de caractères qui doit être bloquée ou déclencher une action. La syntaxe de cette chaîne dépend du 'match-type' utilisé. Voir les exemples ci-dessous.

Scroll down for examples of the /SPAMFILTER command.

Blocs Spamfilter

Vous pouvez aussi ajouter des filtres Spamfilter dans le fichier de configuration, voir la page sur les blocs Spamfilter. Pour plus d'information sur la signification des champs, voir le tableau ci-dessus.

Exemples

Bloquer des spams simples

Prenons l'exemple d'un utilisateur qui spamme sur de nombreux salons et en messages privés. Dans tous les cas, cet utilisateur dit : "Bonjour <Pseudo>, viens me voir sur ma webcam ! Connecte-toi via http://1.2.3.4:80/". Le message ressemble toujours à ça, mais l'IP ou l'URL peuvent changer. Vous voulez que n'importe quel utilisateur disant ça soit GLINE pour 1 jour.

En commande IRC :

/SPAMFILTER add -simple pc gline 1d Vous_spammez_ou_vous_avez_un_virus_! *Bonjour*viens me voir sur ma webcam*

Ou dans le fichier de configuration :

spamfilter {
        match-type simple;
        target { private; channel; };
        action gline;
        ban-time 1d;
        reason "Vous spammez ou vous avez un virus !";
        match "*Bonjour*viens me voir sur ma webcam*";
}

Expression régulière pour bloquer les exploits mIRC

Les expressions régulières (regex) sont bien plus puissantes que la méthode "simple". Il y a quelques années, mIRC avait un bug : il était possible de faire crasher n'importe quel client mIRC v6.12 en lui envoyant un message DCC SEND avec un nom de fichier d'au moins 255 caractères. Avec la méthode "simple", vous ne pouvez pas bloquer ceci, mais avec les regex, vous le pouvez. Et c'est même facile.

En commande IRC :

/SPAMFILTER add -regex pc kill - Possible_tentative_d'exploit_mIRC \x01DCC (SEND|RESUME).{225}

Ou dans le fichier de configuration :

spamfilter {
        match-type regex;
        target { private; channel; };
        action kill;
        reason "Possible tentative d'exploit mIRC";
        match "\x01DCC (SEND|RESUME).{225}";
};

Pour en savoir plus sur les regex, lisez l'introduction aux regex (PCRE).

Slow Spamfilter Detection

Spamfilters often consist of complex regular expressions. There is a very small chance that if a regular expression is too complex that it would slow down the IRCd too much, causing issues with responsiveness.

Slow spamfilters are very exceptional but they are possible, so UnrealIRCd has a safety mechanism for this. They are set::spamfilter::detect-slow-warn and set::spamfilter::detect-slow-fatal. If a single spamfilter takes longer than detect-slow-warn then the IRC Server will warn about this spamfilter to IRCOps. If it takes longer than detect-slow-fatal it will remove the spamfilter. The default values for these are 250ms and 500ms respectively (so a quarter of a second and half a second).

Target of spamfilter bans

When a spamfilter is hit by a user, it will by default place ban on *@ip if the ban type is a *LINE (of course not for other actions such as warn). This should be fine for most people. You can, however, change this via the set::automatic-ban-target setting.

Exempting users from spamfilters

IRCOps will not trigger spamfilters by default (they are exempt). That is, if they use an operclass with the immune:server-ban:spamfilter permission.

You can also exempt specific targets by name, such as channels or nicks, via set::spamfilter::except.