P3scan

P3scan permet de scanner a l'aide d'un antivirus les messages entrants d'un client email. Il est en outre possible de l'utiliser avec un client antispam (tel spamassassin).

Intérêt ?

Si vous utilisez conjointement Thunderbird sous Ubuntu et Windows, que vous ne voulez pas infecter d'autres ordinateurs en renvoyant des messages reçus, ou tout simplement si vous êtes parano. De plus cela ne touche en rien votre configuration de client email et est valable pour tous les utilisateurs du système sans qu'ils ne le sachent. C'est pourquoi il peut être très utile pour un réseau domestique.

Fonctionnement

P3scan va s'intercaler entre le client (par exemple Thunderbird) et le serveur (par exemple pop.free.fr). Il se fait passer du coté client pour le serveur et du coté serveur pour le client. Ainsi il peut traiter les mails de manière transparente pour le serveur et le client (aucun des deux ne se rend compte qu'il y a P3scan entre les deux). Explication simple :

  • Le client demande au serveur les mails
  • Grace au pare-feu, on renvoie tout ce qui rentre du port pop3 vers le port où attend p3scan.
  • P3scan se fait alors passer d'un coté pour le serveur et de l'autre pour le client.
  • Il sauvegarde dans un dossier sur votre disque les messages pour les traiter avec l'antivirus.
  • Si aucun message n'est infecté alors il renvoie les messages au travers du port pop3 vers votre client.
  • Si un message est infecté, il remplace le corps du message par un message d'information et le renvoie.

Pré-requis

Installation

Commencez par installer une antivirus, par exemple Clamav. Mais d'autres antivirus sont supportés par P3scan.

Puis Installez le paquet p3scan.

Configuration

éditer le fichier /etc/p3scan/p3scan.conf.

Configuration commune

  • Explication simple du fichier de configuration :
Pour la configuration du réseau
pidfile Endroit où inscrire le fichier indiquant le fonctionnement du programme
maxchilds Connexion maximum du programme (10 scans à la fois)
ip Adresse réseau sur laquelle attendre le mail
port Port où le mail doit arriver au programme
Pour la configuration du système
user Nom que le démon utilise pour travailler (utile pour les permissions)
notifydir Répertoire où le programme inscrit les notifications et repertoire temporaire de travail
virusdir Répertoire de sauvegarde des fichiers infectés
justdelete Effacement du fichier infecté sans sauvegarde
Pour la configuration de l'antivirus
scannertype Type de programme antivirus
scanner Endroit où se situe l'exécutable de l'antivirus
viruscode Expression du résultat du scan
virusregexp Nom du virus à inclure dans la notification
demime Scanner en fonction du type de fichier (zip,jpg,…) et pas tel que recu par le client
Pour la configuration de l'antispam
checkspam Vérifier le spam
spamcheck Endroit où se situe l'exécutable de l'antipsam
Pour la configuration des notifications dans le mail
template Fichier à renvoyer à la place du fichier infecté
subject Sujet du message à la place du fichier infecté
notify Notification dans le message avec l'option justdelete
  • Exemple concret :
pidfile = /var/run/p3scan.pid
maxchilds = 10
ip = 0.0.0.0
port = 8110
user = p3scan
notifydir = /var/spool/p3scan/notify
virusdir = /var/spool/p3scan
justdelete
template = /etc/p3scan/p3scan-fr.mail
subject = [virus] dans un message pour vous:
notify = Pour information, le message a été détruit.

Exemple avec Clamav

scannertype = basic
scanner = /usr/bin/clamscan --no-summary -i
virusregexp = .*: (.*) FOUND

Exemple avec Clamav-daemon

Installez le paquet clamav-daemon.

scannertype = basic
scanner = /usr/bin/clamdscan --no-summary -i
virusregexp = .*: (.*) FOUND

Vous devez ajouter clamav au groupe p3scan pour pouvoir lire dans les fichiers temporaires de P3scan :

sudo adduser clamav p3scan

Avec cette méthode, le scan des mails est légèrement plus rapide.

Exemple pour F-Prot Antivirus :

scannertype = basic
scanner = /usr/bin/f-prot -archive -ai
viruscode = 3,8
virusregexp = (?=Infection\:)[[:space:]]*(.*)$
demime

Exemple de filtrage de spam

checkspam
spamcheck = /usr/bin/spamc     ## avec le démon spamassassin

Le fichier de configuration est bien détaillé, d'autres exemples sont indiqués.

Configuration du pare-feu

Pour de plus amples informations sur le pare feu par défaut, je vous renvoie sur la page iptables

Pour que p3scan puisse fonctionner, il faut rediriger les mails entrants sur le port 110 (port par défaut) vers le port ou p3scan attend.

Ça c'est très bien mais comment fait-on ? Ma messagerie ne fonctionne plus maintenant!!!!!!!!!!!

Avec Iptables

sudo iptables -t nat -A OUTPUT  -p tcp --dport pop3 -m owner --uid-owner <UID> -j ACCEPT
sudo iptables -t nat -A OUTPUT  -p tcp --dport pop3 -j REDIRECT --to 8110

En mettant l'UID que votre système a attribué à P3scan, pour l'obtenir :

sudo id p3scan


Pour ceux qui utiliseraient encore Firestarter, pour la persistance des règles, il suffit de copier les 2 règles iptables dans le fichier user-pre de Firestarter. Faites au préalable les tests à l'aide de telnet décrit plus bas.

sudo vi /etc/firestarter/user-pre

Pour obtenir le contenu suivant :
iptables -t nat -A OUTPUT -p tcp –dport pop3 -m owner –uid-owner <UID> -j ACCEPT
iptables -t nat -A OUTPUT -p tcp –dport pop3 -j REDIRECT –to 8110

Avec Shorewall

Shorewall est un pare-feu basé sur iptables , seul la manière de le paramétrer diffère.

Éditer le fichier /etc/shorewall/rules :

REDIRECT fw 8110 tcp pop3 - - - !p3scan

Test de fonctionnement

Pour cela on va utiliser une console telnet qui est un protocole de communication entre internet et son ordinateur dépourvu d'interface graphique.

  1. On demande une connexion telnet au serveur de messagerie sur le port 110
  2. On indique son login et son mot de passe.
  3. On recherche ses message.
  4. On télécharge le premier message.
telnet pop.votrefournisseur.fr 110
user votrelogindemessagerie
pass votremotdepassedemessagerie
list
retr 1

Si tous se passe bien vous devriez avoir en réponse quelque chose comme :

retr 1
+OK P3Scan'ing...

pour quitter :

quit

Ressources externes

  • p3scan.txt
  • Dernière modification: Le 28/04/2018, 11:17
  • (modification externe)