[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Implémentation simple d'une liste grise (greylist)



Les spams peuvent finir par écrouler un serveur SMTP pour un petit
domaine voire même un serveur local. Je me suis largement inspiré du
script smtpwrap pour faire un système de liste grise (greylist) pour un
serveur SMTP lancé par inetd (donc ne tournant pas en démon). Cela
donne un paquet (smtpwrap) qui une fois installé gère une liste grise.
Concrètement, le programme se compose de 3 utilitaires et un fichier de
configuration /etc/smtpwrap

/etc/smtpwrap est de la forme
Code:
wait_time  360
local 192.168.0.2
local 192.168.1.0

wait_time est le temps d'attente en secondes
local 192.168.0.2 indique que le réseau 192.168.0.0/24 est local.

smtpwrap se met comme intermédiare dans /etc/inetd.conf (il faut que
exim ou postfix ou autre soit lancé par inetd donc ce qui signifie un
petit serveur)). Lorsqu'un gus veut envoyer un courrier, il reçoit une
erreur 421 Temporary failure (192.168.1.251 please wait 360 seconds)
puis si il se reconnecte, le temps diminue: 421 Temporary failure
(192.168.1.251 please wait 124 seconds)

au bout de 360s soit 6 minutes, il a accès au serveur. Cela ne pose pas
de pbms aux serveurs normaux mais les spammeurs n'ont pas la patience
d'attendre en général.

Le programme met des logs dans /var/log/syslog
Code:

Nov  5 15:07:51 cerbere smtpwrap[8298]: fatal error: Transport endpoint
is not connected Nov  5 15:09:12 cerbere smtpwrap[9089]: fatal error:
Transport endpoint is not connected Nov  5 15:09:20 cerbere smtpwrap
[9091]: ip=<70.103.162.31> net=<70.103.162> now=<1162735760>
allow=<1162735478> Nov  5 15:09:20 cerbere smtpwrap[9091]:
70.103.162.31 connection accepted after 0:4:42 hours Nov  5 15:09:28
cerbere smtpwrap[9168]: ip=<201.3.12.72> net=<201.3.12>
now=<1162735768> allow=<> Nov  5 15:09:28 cerbere smtpwrap[9168]:
201.3.12.72 connection deferred for 360 seconds Nov  5 15:09:31 cerbere
smtpwrap[9201]: ip=<201.3.12.72> net=<201.3.12> now=<1162735771>
allow=<1162736128> Nov  5 15:09:31 cerbere smtpwrap[9201]: 201.3.12.72
connection deferred for 357 seconds Nov  5 15:09:34 cerbere smtpwrap
[9254]: ip=<201.3.12.72> net=<201.3.12> now=<1162735774>
allow=<1162736128> Nov  5 15:09:34 cerbere smtpwrap[9254]: 201.3.12.72
connection deferred for 354 seconds smtpwrap-list permet de voir la
base de données. Code:

Entrée 61.34.147 datant de 10:34 heures soit 0 jours
Entrée 84.120.243 datant de 15:16 heures soit 0 jours
Entrée 72.67.21 datant de 20:45 heures soit 0 jours
Entrée 72.235.43 datant de 10:35 heures soit 0 jours
Entrée 85.152.188 datant de 13:14 heures soit 0 jours
Entrée 201.217.94 datant de 16:17 heures soit 0 jours
Entrée 62.163.249 datant de 20:51 heures soit 0 jours
Entrée 71.31.11 datant de 18:27 heures soit 0 jours

smtpwrap-clean vire les entrées n'ayant pas servi depuis plus de 35
jours.

Sans être associé à des listes RBL (je suis hostile aux principes des
RBL, en différant d'une heure un nouveau serveur SMTP on laisse le
temps aux RBLs de réagir ce qui complète le dispositif mais je n'aime
pas), cela a divisé le nombre de spams par 4 et ils sont tous filtrés
par la suite par spamassassin. L'avantage indénbiable est de libérer de
façon très notable la charge du serveur.

Voilà: paquet smtpwrap
dépendances: perl et libgdbm (1 ou 3)
C'est un script perl donc le paquet est pour n'importe quelle
architecture/distribution. 
deb http://boisson.homeip.net/sarge/ ./
deb http://boisson.homeip.net/woody/ ./
deb http://boisson.homeip.net/amd64/ sarge ./
deb http://boisson.homeip.net/amd64/ etch ./
deb http://boisson.homeip.net/ubuntu/ dapper ./
deb http://boisson.homeip.net/ubuntu/ edgy ./

ou bien http://boisson.homeip.net/sarge/sarge/smtpwrap_1.0_all.deb

François Boisson



Reply to: