Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Astuces
Ajout d'une imprimante
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Installer un LAMP sous mandriva
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Rsync
Nessus
Divers
Elisa, le multimédia facile
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Graver en ligne de commande
Graver un fichier avi pour un dvd de salon
Récupérer des fichiers effacés
Liens
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 5 visiteurs connectés sur le site !

Google

Installer un serveur courrier sécurisé sous debian : Postfix , clamav, spamassassin et amavis
Installer un serveur courrier sécurisé sous debian : Postfix , clamav, spamassassin et amavis

 

Introduction
Postfix
Configuration de Postfix
qpopper
Spamassassin
Amavis
Test de spamassassin
Clamav
Test de clamav

 

Introduction

La première chose à faire est de vérifier que le MX de vos dns pointe sur votre serveur de courrier :
Par exemple chez moi:
host linux-pour-lesnuls.com :
linux-pour-lesnuls.com has address 82.216.76.50
linux-pour-lesnuls.com mail is handled by 0 linux-pour-lesnuls.com.

Postfix

On ne présente plus Postfix ,qui sert à livrer des messages électroniques et que nous avons
choisi pour sa facilité de configuration et pour la sureté de ses réglages par défaut .
telecharger postfix et l'installer
apt-get install postfix

Configuration de Postfix

Les deux fichiers importants à configurer sont main.cf et master.cf
Voici les lignes importantes de mon main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
#
# Mail virus filtering
#Pour dire à amavis de filtrer le courrier :
content_filter = smtp-amavis:[127.0.0.1]:10024

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
#exige la commande helo et peut-etre decouragera quelques serveurs de spam
smtpd_helo_required = yes
# ne pas mettre une bannière avec des indications sur le nom de votre serveur de courrier
smtpd_banner = bienvenue sur mon serveur courrier: spammeur éconduit !
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
#éviter les messages trop volumineux
message_size_limit=4096000
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
myhostname = linux-pour-lesnuls.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux-pour-lesnuls.com
relayhost =
#permet de relayer les mails en provenance du reseau
mynetworks = 127.0.0.0/8, 192.168.1.0/24, localhost, localhost.localdomain
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#ne pas autoriser le relaying
smtpd_recipient_restrictions = permit_mynetworks,check_relay_domains
relay_domain = linux-pour-lesnuls.com
smtpd_client_restrictions = reject_unknown_client, permit_mynetworks,
check_client_access hash:/etc/postfix/access, reject_maps_rbl
smtpd_sender_restrictions = reject_unknown_sender_domain,
check_sender_access hash:/etc/postfix/access,
reject_non_fqdn_sender, reject_maps_rbl

Ensuite c'est au tour du fichier master.cf ou l'on va notamment dire à Postfix de fonctionner avec amavis-new et spamassasin
voici le master.cf

# avec spamassassin
# -----------------------------------------------------------------------------------
smtp inet n - n - - smtpd
-o content_filter=spamassassin
# -----------------------------------------------------------------------------------


# Amavisd-new
#

smtp-amavis unix - - n - 2 smtp -o
smtp_data_done_timeout=12000 -o
disable_dns_lookups=yes
#127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o
local_recipient_maps= -o relay_recipient_maps= -o
smtpd_restriction_classes= -o smtpd_client_restrictions= -o
smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o
smtpd_recipient_restrictions=permit_mynetworks,reject -o
mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o
smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o
smtpd_hard_error_limit=1000


#suite de spamassassin: ne pas oublier un espace avant spamassassin
spamassassin unix - n n - - pipe
user=nobody argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Qpopper

On va ensuite installer un utilitaire pop3 qui va nous permettre de récupérer nos mails
afin de les lire dans notre client mail favori , mozilla-mail ou qmail
apt-get install qpopper
Il est temps maintenant de vérifier ,après avoir démarré nos serveurs postfix et qpopper si les ports 110 et 25 sont ouverts et les services disponibles :

debian:/etc/postfix# telnet 192.168.0.2 25
Trying 192.168.0.2...
Connected to 192.168.0.2.
Escape character is '^]'.
220 bienvenue sur mon serveur courrier: spammeur éconduit !
quit
221 Bye
Connection closed by foreign host.
debian:/etc/postfix# telnet 192.168.0.2 110
Trying 192.168.0.2...
Connected to 192.168.0.2.
Escape character is '^]'.
+OK Qpopper (version 4.0.5) at debian starting. <4529.1143541577@debian>

Il me faut ajouter ici que les ports 25 et 110 de mon firewall sont redirigés sur mon poste
192.168.0.2 pour éviter de mettre mon serveur de courrier directement accessible au web par les lignes
suivantes de mon iptables :

/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 110 -j DNAT --to 192.168.0.2:110
/sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.2 --dport 110 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 25 -j DNAT --to 192.168.0.2:25
/sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.2 --dport 25 -j ACCEPT

Spamassassin

Spamassassin est un logiciel qui va nous permettre de neutraliser les spams en les filtrant d'après des règles préétablies.
installer spamassassin
apt-get install spamassassin spamc
le paramétrage dans postfix a déjà été fait
Pour la configuration de spamassassin ,j'utilise cette utilitaire en ligne : http://www.yrex.com/spam/spamconfig.php
et je copie le fichier généré dans /etc/spamassassin/local.cf
Ensuite éditez /etc/default/spamassassin et fixez ENABLED=1 pour que spamd se lance au démarrage
spamc sera lancé grace a la ligne que nous avons rajoute dans le master.cf de postfix
Relancer postfix et spamd , et envoyez-vous un simple message de test
:vérifier alors que dans les headers de votre message de test vous avez bien les lignes similaires :
X-Spam-Checker-Version: SpamAssassin on server.com
X-Spam-Level:
X-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_01,
DATE_IN_PAST_96_XX,HTML_MESSAGE autolearn=no

Amavis

Amavis est un antivirus qui s'installe comme suit:
apt-get install amavis-new
La configuration se passe dans le fichier : /etc/amavis/conf.d/50.user
qui provient du fichier exemple dans usr/share/doc/amavisd-new/examples/amavisd.conf-default

voici les lignes importantes :

## GENERAL
Les lignes qui indiquent le nom de domaine et l'utilisateur
$myhostname = 'linux-pour-lesnuls.com';
$mydomain = 'linux-pour-lesnuls.com';
$daemon_user = 'amavis';
$daemon_group = 'amavis';
$MYHOME = '/var/amavis';

Pour renvoyer les mails scannés sur le serveur
$forward_method = 'smtp:127.0.0.1:10025'; # where to forward checked mail
$notify_method = $forward_method; # where to submit notifications

Pour que le serveur supporte la charge
$max_servers = 5; # number of pre-forked children (default 2)
$max_requests = 15; # retire a child after that many accepts (default 10)

$child_timeout=10*60; # abort child if it does not complete each task in n sec
# (default: 8*60 seconds)

Ne pas permettre le relais
$relayhost_is_client = 0; # (defaults to false)

Bloquer les connections à l'interface locale
$inet_socket_bind = '127.0.0.1'; # limit socket bind to loopback interface
# (default is '127.0.0.1')
@inet_acl = qw( 127.0.0.1 ); # allow SMTP access only from localhost IP
# (default is qw( 127.0.0.1 ) )

$relayhost_is_client = 0; # (defaults to false)

Si on trouve un virus remplacer le mail par un autre
(configuré selon la locale dans le répertoire de configuration de amavisd-new),
si c'est une adresse émail bannie, on renvoi un mail d'erreur,
si c'est un spam ou un mauvais en-téte le mail continue normalement sa trajectoire
mais son sujet est changé( on verra plus tard comment ) :

$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested

On veut que la personne qui a envoyé le mail soit avertie :
$warnvirussender = 1; # (defaults to false (undef))
On veut que celui qui a envoyé un mail et qui est banni soit aussi averti :
$warnbannedsender = 1; # (defaults to false (undef))

On veut que ceux a qui étaient destinés les mails recoivent des mails d'avertissement :

$warnvirusrecip = 1; # (defaults to false (undef))
$warnbannedrecip = 1; # (defaults to false (undef))

On indique un admin qui recevra un avertissement pour tous les mails refusé sur le serveur :

$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default

On indique les tags a rajouter dans les mails scannés par l'antivirus :

# Add X-Virus-Scanned header field to mail?
$X_HEADER_TAG = 'X-Virus-Scanned'; # (default: undef)
# Leave empty to add no header # (default: undef)
$X_HEADER_LINE = "by $myversion (Debian) at $mydomain";

On n'enléve pas les en-tétes comme quoi le mail a déjà été scanné si c'est le cas :

$remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone
$remove_existing_spam_headers = 0; # remove existing spam headers if

On indique qu'il n'y a pas de fichiers bannis,
comme cela cela permet l'envoi de fichiers .exe, .com, .bat,
mais ils restent quand meme scannes :

$banned_filename_re = new_RE(
# qr'^UNDECIPHERABLE$', # is or contains any undecipherable components
# qr'\.[^.]*\.(exe|vbs|pif|scr|bat|cmd|com|dll)$'i, # some double extensions
# qr'[{}]', # curly braces in names (serve as Class ID extensions - CLSID)
# qr'.\.(vbs|pif|scr|bat|cmd|com)$'i, # banned extension - basic
# qr'.\.(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js|
# jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb|
# vbe|vbs|wsc|wsf|wsh)$'ix, # banned extension - long
# qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip? vulnerab.
# qr'^\.(zip|lha|tnef|cab)$'i, # banned file(1) types
# qr'^\.exe$'i, # banned file(1) types
# qr'^application/x-msdownload$'i, # banned MIME types
# qr'^application/x-msdos-program$'i,
# qr'^message/partial$'i, qr'^message/external-body$'i, # block rfc2046
);

On indique les quotas pour SpamAssassin :

$sa_tag_level_deflt = 0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 5.0; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 99; # triggers spam evasive actions

SpamAssassin doit changer le sujet du message si il dépasse $sa_tag2_level_deflt, et ajouter *SPAM* :

$sa_spam_subject_tag = '*SPAM* '; # (defaults to undef, disabled)

Maintenant on indique les scanners antivirus :

@av_scanners = (
['Clam Antivirus-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);

@av_scanners_backup = (

# http://www.clamav.net/
['Clam Antivirus - clamscan', 'clamscan',
"--stdout --no-summary -r {}", [0], [1],
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);

Test de spamassassin

Ensuite on teste spamassassin:
Télécharger cet exemple de spam
http://www.y0m.net/tutos/qmail-debian/spam
et lancer la commande
deny@debian:~$ spamc -c < spam.eml 17.3/5.0
Le message obtient la note faramineuse de 17.3

Clamav

Ensuite on procéde à l'installation de l'antivirus clamav ainsi que de ses listes :
apt-get install clamav-daemon clamav-testfiles
voici mon clamav.conf

LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket
User clamav
AllowSupplementaryGroups
ScanMail
ScanArchive
ArchiveMaxRecursion 5
ArchiveMaxFiles 1000
ArchiveMaxFileSize 10M
ArchiveMaxCompressionRatio 200
MaxDirectoryRecursion 100
ReadTimeout 0
MaxThreads 12
MaxConnectionQueueLength 30
LogFile /var/log/clamav/clamav.log
LogTime
LogFileMaxSize 0
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav/
SelfCheck 3600
ScanOLE2
ScanRAR
ScanPE
DetectBrokenExecutables
ScanHTML
ArchiveBlockMax

Et le freshclam.conf pour faire des mises-à-jour régulières

DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogFileMaxSize 0
MaxAttempts 5
# Check for new database 24 times a day
Checks 1
DatabaseMirror db.fr.clamav.net
DatabaseMirror database.clamav.net
DatabaseDirectory /var/lib/clamav/
NotifyClamd
DNSDatabaseInfo current.cvd.clamav.

Clamtest

Pour tester clamav :
telecharger ce virus à l'adresse :
http://www.y0m.net/tutos/qmail-debian/virus
ensuite scanner-le à l'aide de la commande :
# clamdscan /home/deny/virus.eml

/home/deny/virus.eml: Worm.SomeFool.P FOUND

----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.066 sec (0 m 0 s)

On voit ici que notre virus a été bien détecté.
N'oubliez pas de redemarrer les services affèrents.

Sources de l'article


 

Blog
Le blog
La radio
La Radio
Boutique
La boutique du Geek
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Le fichier php.ini
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Jeu
Webtarot
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Redimentionner une image avec GIMP
Redimentionner une photo pour en faire un cadre avec gimp
Morphing avec gimp
Détourer avec gimp
Réduire le poids d'une image avec gimp
Caricature avec gimp
Humour
Ensemble
Divers