Le serveur Pégase héberge deux serveurs applicatifs :
- un serveur Apache contenant les pages publiques de la société ACME,
- un serveur de messagerie permettant l’émission et la réception de messages depuis Internet.
L’installation du serveur Apache hébergé par le serveur Pégase est décrite au paragraphe 8.2.6.B - . Ce serveur hébergeant les données publiques accessibles à tous il ne comprend pas d’interface sécurisée SSL.
La lecture des messages s’effectue suivant le protocole IMAP dans sa version sécurisée IMAPS (IMAP over SSL) qui consiste à monter un tunnel SSL entre serveur et client avant de permettre la lecture des messages.
L’installation du serveur « courier-imap-ssl » (version 1.4.3-3) permettant de remplir cette fonctionnalité s’effectue sans problèmes particuliers en effectuant les manipulations suivantes :
è Installation du package courier-imap-ssl :
- apt-get install courier-imap-ssl
è Ce package dépend des packages suivants :
- exim ou mail-transport-agent ;
- courier-imap (version >= 1.3.7-3) ;
- courier-ssl (version >= 0.37.3) ;
- openssl ;
- libc6 (version >= 2.2.4-4) ;
- libgdbmg1 ;
- courier-base (version >= 0.37.3) ;
- courier-authdaemon (version >= 0.37.3) ;
- perl ;
- debconf ;
- libpam0g (version >= 0.72-1).
Le logiciel « courier-imap-ssl » se paramètre à l’aide du fichier de configuration « /etc/courier/imapd-ssl ». Le fichier correspondant au serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de parametrage du serveur courier en mode SSL
# Serveur : Pegase
# Copyright : marc.boget@gendarmerie.org
#
# Definition des repertoires de travail de courier-imap-ssl
prefix=/usr
exec_prefix=/usr
# Port d'ecoute du protocole IMAPS
SSLPORT=993
# Adresse d'ecoute du serveur
# Cette addresse peut aussi etre de la forme SSLADDRESS=10.1.2.2
SSLADDRESS=0
# Fichier de stockage du PID courant
SSLPIDFILE=/var/run/courier/imapd-ssl.pid
# Passe la main au démon authdaemon pour la partie authentification
# des utilisateurs
AUTHMODULES="authdaemon"
# Demarre le mode SSL et TLS
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES
# force l'emploi de STARTTLS
IMAP_TLS_REQUIRED=0
COURIERTLS=/usr/bin/couriertls
# Utilisation du SSLv3 et du protocole TLSv1
# Les versions possibles sont SSL2, SSL3 et TLS1
TLS_PROTOCOL=SSL3
TLS_STARTTLS_PROTOCOL=TLS1
# Emplacement des différents certificats
TLS_CERTFILE=/etc/courier/pegase.pem
TLS_TRUSTCERTS=/etc/courier/ac.pem
# Demande la presentation obligatoire d'un certificat client
# Ceci n'est pas possible avec les clients Outlook qui n'offrent
# pas cette possibilité
# Cette variable peut etre mise a :
# - NONE
# - PEER : verification du certificat client si présenté
# - REQUIREPEER : requiert un certificat client
TLS_VERIFYPEER=NONE
Le logiciel « courier-imap-ssl » s’appuie sur le démon d’authentification « authdaemon » dont le paramétrage s’effectue à l’aide du fichier de configuration « /etc/courier/authdaemonrc ». Le fichier correspondant du serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de parametrage du démon authdaemon
# permettant l'authentification des clients courier
# Serveur : Pegase
# Copyright : marc.boget@gendarmerie.org
#
# The term "authentication" is used in the following documentation to
# refer to either one of these two functions. The library contains
# several alternative authentication implementations, that may be
# selected at runtime.
#
# authdaemon authenticates through a background daemon proxy. This is
# now the installation default. Unless otherwise specified, the
# authdaemon module will always be installed. authdaemon is installed
# instead of the other authentication modules. Those modules are
# instead compiled into a separate executable program, authdaemond that
# is initialized at system start, and runs in the background. The
# authdaemon authentication module forwards the authentication requests
# to authdaemond, which forwards the authentication request to the real
# authentication module, and the result of the request is eventually
# returned back to the application. Because the real authentication
# process runs as a persistent background process, it is possible for
# the authentication process to open and hold permanent connections to
# the back-end authentication database (be it an LDAP directory, a
# MySQL or a PostgreSQL server), instead of connecting and
# disconnecting for every request. Obviously, this tremendously
# improves the authentication performance.
#
# authpam authenticates using the system's PAM library (pluggable
# authentication module). This is, essentially, a way to use existing
# PAM modules for authentication functionality. Note, however, that the
# authenticated account's home directory, userid and groupid are still
# read from the /etc/passwd file, since PAM functionality is limited to
# validating account passwords.
#
# authpwd authenticates from the /etc/passwd file.
#
# authshadow like authpwd except passwords are read from /etc/shadow.
#
# authuserdb authenticates against the userdb(8) database.
#
# authvchkpw supports existing vpopmail/vchkpw virtual domains.
#
# authcram authenticates against the userdb(8) database using the
# challenge/response authentication mechanism (CRAM), instead of the
# traditional userid/password.
#
# authmysql authenticates against a list of mail accounts stored in an
# external MySQL database. The /etc/courier/authmysqlrc configuration
# file defines the particular details regarding the MySQL database and
# the schema of the mail account list table.
#
# authpgsql authenticates against a list of mail accounts stored in an
# external PostgreSQL database. The authpgsqlrc configuration file
# defines the particular details regarding the PostgreSQL database and
# the schema of the mail account list table.
#
# authldap authenticates against a list of mail accounts stored in an
# external LDAP directory. The /etc/courier/authldaprc configuration
# file defines the particular details regarding the LDAP directory
# layout.
#
# authcustom this is a stub where custom authentication code can be
# added. This authentication module is just a stub that doesn't really
# do anything. It's purpose is to serve as a placeholder where custom
# authentication code can be easily added.
#
# This is a complete list of available authentication modules. The
# actual installed authentication modules are determined by the
# resources on the server. For example, the authmysql authentication
# module will be installed only if the system provides MySQL support
# libraries.
# La liste des modules d'authentification disponibles est celle ci
# dessous. On peut definir dans la directive "authmodulelist" la liste
# des modules a employer
authmodulelistorig="authcustom authcram authuserdb authldap authmysql authpam"
# Nombre de démons a lancer au demarrage
daemons=5
# On peut specifier la version du démon a employer quand il existe plusieurs
# demons tournant en meme temps sur la machine
version=""
# Ne surtout pas enlever la ligne ci dessous sous peine de tout faire
# planter !
authdaemonvar=/var/run/courier/authdaemon
NB : De manière à permettre au logiciel « courier-imap-ssl » de lire les messages d’un utilisateur et compte tenu du fait que ce logiciel utilise le format de boites aux lettres « Maildir » situé sous le répertoire racine de l’utilisateur, la création de la boite aux lettres d’un utilisateur devra être effectuée à l’aide de la commande « maildirmake » lancée depuis le répertoire racine du dit utilisateur.
Le principe de fonctionnement général mis en place dans le cadre de la maquette est le suivant :
- réception d’un message par le serveur « Postfix » sur le port TCP 25 ;
- envoi du message pour analyse à l’anti-virus sur le port TCP 10024 ;
- réception du message par le serveur « Postfix » sur le port TCP 10025 ;
- en cas de messages destiné à un utilisateur local traitement du message par le démon « procmail » pour analyse de SPAM par l’outil « SpamAssassin » puis dépose dans la boite aux lettres de l’utilisateur ;
Il est à noter que l’émission de messages s’effectue à l’aide du protocole SMTP dans sa version sécurisée (TLS over SMTP) qui consiste à envoyer des messages SMTP au contenu chiffré (et non des messages clairs au sein d’une session SSL).
L’installation du serveur « postfix » (version 1.1.11-0.woody2) permettant de remplir cette fonctionnalité s’effectue en effectuant les manipulations suivantes :
è Installation des packages nécessaires :
- apt-get install postfix postfix-tls
è Ces packages dépendent des packages suivants :
- libc6 (version >= 2.2.4-4) ;
- libdb3 (version >= 3.2.9-16) ;
- libgdbmg1 ;
- netbase ;
- adduser ;
- debconf ;
- dpkg (version >= 1.8.3) ;
- postfix-ldap (version = 1.1.11-0.woody2) ;
- postfix-pcre (version = 1.1.11-0.woody2) ;
- libsasl7;
- libssl0.9.6.
Le logiciel « Postfix » se paramètre à l’aides des deux fichiers de configuration suivants :
- « /etc/postfix/main.cf »,
- « /etc/postfix/master.cf »
Les deux fichiers correspondants du serveur « Pégase » sont donnés ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration serveur Postfix
# Serveur : Pegase
# Copyright : marc.boget@gendarmerie.org
#
# Definition des repertoires PostFix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix
# Definition du type de boites aux lettres. Par defaut Postfix
# ecrit dans /var/spool/mail. Le fait de preciser la directive
# home_mailbox permet d'indiquer a Postfix d'ecrire dans le repertoire
# Maildir situé sous la racine du repertoire de l'utilisateur. C'est
# indispensable dans le cas présent car courier-imap utilise ce type
# de boites aux lettres.
home_mailbox=Maildir/
# Banniere SMTP a presenter
smtpd_banner = Site protege - Ne pas penetrer sans autorisation
setgid_group = postdrop
biff = no
append_dot_mydomain = no
myhostname = Pegase
# Definition de la table contenant les alias de messagerie
# Une modification de ce fichier doit etre suivie du lancement
# de la commande "newaliases" pour regenerer la base de données
# interne Postfix
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = Pegase, localhost.localdomain, , localhost
relay_domains = dauphin
mynetworks = 127.0.0.0/8
# Delivrance du courrier
# On passe la main a procmail de manière à pouvoir faire jouer la
# détection de SPAM avec SpamAssassin
# Pour une question de sécurité il faut savoir que cette commande
# est désactivée si l’utilisateur de destination est « root »
mailbox_command=/usr/bin/procmail
mailbox_size_limit = 0
recipient_delimiter = +
loglevel=3
# Mise en place des parametres TLS pour la partie serveur (smtpd)
# qui est la partie qui recoie les messages en provenance des clients
# et la partie client (smtp) qui est la partie qui envoie les messages
# vers un autre MTA
smtpd_use_tls=yes
smtpd_tls_cert_file = /etc/postfix/pegase-server.crt
smtpd_tls_key_file = /etc/postfix/pegase-server.key
smtpd_tls_CAfile = /etc/postfix/ac.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_ask_ccert = yes
smtpd_tls_session_cache_timeout = 3600
smtp_use_tls = yes
smtp_tls_cert_file = /etc/postfix/pegase-client.crt
smtp_tls_key_file = /etc/postfix/pegase-client.key
smtp_tls_CAfile = /etc/postfix/ac.pem
smtp_tls_loglevel = 1
smtp_tls_session_cache_timeout = 3600
smtp_tls_note_starttls_offer = yes
# Definition du répertoire de spool temporaire
queue_directory = /cages/postfix
# Pour se passer de l'interrogation DNS-MX
# Ce fichier contient les deux lignes suivantes :
# dauphin smtp:52.30.184.1:25
# dauphin.sga.def smtp:[52.30.184.1]
# A l'issue de la modification de ce fichier, il faut passer la
# commande "postmap /etc/postfix/transport" de maniere a regenerer
# la base de données postfix
transport_maps = hash:/etc/postfix/transport
# Permet de definir si la connexion TLS est obligatoire ou non pour un
# site donné. Ce fichier contient la ligne suivante :
# dauphin MUST
smtp_tls_per_site = hash:/etc/postfix/tls_per_site
# Permet de passer la main au demon anti-virus sur le port 10024
content_filter = smtp-amavis:[127.0.0.1]:10024
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration des services Postfix
# Serveur : Pegase
# Copyright : marc.boget@gendarmerie.org
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ==========================================================================
smtp inet n - - - - smtpd
pickup fifo n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr fifo n - - 300 1 qmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
flush unix n - - 1000? 0 flush
smtp unix - - - - - smtp
showq unix n - - - - showq
error unix - - - - - error
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
# Interfaces vers des logiciels externes
cyrus unix - n n - - pipe
flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
# Interface avec l'anti-virus
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
# Mise en place d'une ecoute supplémentaire sur le port 10025 en localhost
# uniquement pour reception des messages renvoyés apres analyse par l'anti-virus
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
L’outil de détection des messages spam choisi est l’outil « SpamAssassin ». Il permet grâce à des scripts tous situés dans le répertoire « /etc/spamassassin » de donner une « note » aux différents messages stockée dans son entête et permettant par la suite un traitement des dits messages (déplacement dans le dossier « SPAM » dans le cadre de la maquette).
Le principe de l’outil d’analyse de « SPAM » est le suivant :
- lors de la réception de messages destinés à un utilisateur local, traitement du message par le démon « procmail » (grâce à la directive « mailbox_command » du fichier « main.cf » du serveur « Postfix ») ;
- gestion du message par le démon « Procmail » (liste des directives données dans le fichier « /etc/procmailrc » ou dans le fichier utilisateur « $HOME/.procmailrc ») ;
- analyse du résultat de l’analyse de « SPAM » contenu dans la balise d’entête SMTP « X-Spam-Status » et dépose dans le dossier SPAM de la boite aux lettres de l’utilisateur.
L’installation de l’outil « SpamAssassin » (version 2.20-1woody) s’effectue en réalisant les manipulations suivantes :
è Installation du package spamassassin :
- apt-get install spamassassin
è Ce package dépend des packages suivants :
- perl (>= 5.6.0-16);
- perl-modules;
- dpkg (>= 1.8.1).
è Installation du package procmail (version 3.22-4):
- apt-get install spamassassin
è Ce package dépend des packages suivants :
- exim ou mail-transport-agent ou fetchmail.
L’outil « SpamAssassin » peut être paramétré en modifiant les fichiers contenus dans le répertoire « /etc/spamassassin » et notamment le fichier « /etc/spamassassin/10_misc.cf » dont le contenu sur le serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration de l'outil d'analyse de SPAM
# : Voir man Mail::SpamAssassin::Conf pour tous les details
# Serveur : Pegase
# Copyright : marc.boget@gendarmerie.org
#
# Definition de l'entete a afficher en cas de SPAM
# ......................................................................
clear-report-template
report -------------------- Resultats de l'analyse de SPAM ------------------
report Ce message apparait etre un message SPAM.
report
report Detail de l'anayse : (_HITS_ hits, _REQD_ required)
report _SUMMARY_
report ---------------------- Fin de l'analyse de SPAM ----------------------
# ......................................................................
# Definition du message que l'on peut envoyer a l'emetteur du SPAM
clear-spamtrap-template
spamtrap Sujet: Adresse indisponible
spamtrap [Ce message a ete automatiquement généré]
spamtrap
spamtrap Bien vouloir noter que cette adresse n'est plus disponible et que
spamtrap de plus elle recoit des messages non désirés. C'est pourquoi, tous
spamtrap les messages envoyés à cette adresse sont systématiquement détruits.
spamtrap
spamtrap Le message envoyé est reproduit ci dessous pour vous permettre de le
spamtrap réemettre à une adresse correcte.
spamtrap
spamtrap [-- L'outil d'analyse de SPAM]
spamtrap
###########################################################################
# Terse report template.
#
# ......................................................................
clear-terse-report-template
terse-report ---- Start SpamAssassin results
terse-report _HITS_ hits, _REQD_ required;
terse-report _SUMMARY_
terse-report ---- End of SpamAssassin results
# ......................................................................
# Valeur à partir de laquelle le message est considéré comme du SPAM
required_hits 5
# Nombre de messages avant que l'adresse emetteur soit envoyé à un service de blacklist.
# Attention à bien vérifier qu'il s'agit d'une adresse de SPAM !!!
auto_report_threshold 30
# Language préférentiel
ok_locales fr
# Il est possible de redéfinir les options suivantes :
# rewrite_subject 1
# report_header 0
# subject_tag *****SPAM*****
# use_terse_report 0
# defang_mime 1
# skip_rbl_checks 0
# check_mx_attempts 3
# check_mx_delay 5
Le démon « ProcMail » est lui paramétré grâce notamment au fichier « /etc/procmailrc » dont le contenu sur le serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration du démon ProcMail
# : Voir man procmailrc pour tous les details et la syntaxe
# Serveur : Pegase
# Copyright : marc.boget@gendarmerie.org
#
VERBOSE=Yes
SHELL=/bin/sh
PATH=/usr/bin:/bin
MAILDIR=$HOME/Maildir/
LOGFILE=$HOME/log_procmail
DEFAULT=$MAILDIR/new
:0fw
| /usr/bin/spamassassin -P
:0:
* ^X-Spam-Status: Yes
$MAILDIR/.SPAM/
Le logiciel d’anti-virus choisi est le logiciel « clamav ». La procédure décrite dans le présent paragraphe peut également s’appliquer aux anti-virus suivants :
- File::Scan ;
- OpenAntiVirus ScannerDaemon ;
- Kaspersky Antivirus ;
- Bitdefender ;
- F-Prot ;
- F-Secure ;
- H+BEDV Antivir ;
- MKS-Vir ;
- Network Associates uvscan ;
- Panda Antivirus ;
- Sophie ;
- Sophos ;
- Trend Filescan ;
- Trophie.
L’installation de l’outil « ClamAv » (version 0.60-1) s’effectue en réalisant les manipulations suivantes :
è Modification du fichier /etc/apt/sources.list pour crise en compte de la version testing (le package « clamav-daemon » ne fait pas encore partie des packages stables)
è Installation du package clamav-daemon :
- apt-get install clamav-daemon
è Ce package dépend des packages suivants :
- debconf (version >= 0.5) ;
- libbz2-1.0 ;
- libc6 (version >= 2.3.1-1) ;
- libclamav1 ;
- zlib1g (version >= 1:1.1.4) ;
- clamav;
- clamav-base (version = 0.60-1) ;
- clamav-freshclam ;
- cron ;
- debianutils (version >= 1.6);
- ucf.
Cet outil se paramètre à l’aide du fichier « /etc/clamav.conf » donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration permettant l'interaction entre les
# : modules PAM et le serveur LDAP
# : Voir meme fichier sur serveur GrandeOurse pour tous les details
# Serveur : Dauphin
# Copyright : marc.boget@gendarmerie.org
#
#This file is created using debconf, don't modify it by hand!
#To reconfigure clamd run #dpkg-reconfigure clamd
LocalSocket /var/run/clamd.ctl
ScanMail
ScanArchive
ArchiveMaxRecursion 5
ArchiveMaxFiles 1000
ArchiveMaxFileSize 10M
FollowFileSymlinks
ThreadTimeout 180
MaxThreads 5
MaxConnectionQueueLength 15
LogSyslog
PidFile /var/run/clamd.pid
DataDirectory /var/lib/clamav/
L’interface entre l’anti-virus et le serveur de messagerie « Postfix » s’effectue à l’aide du paramétrage de « Postfix » décrit plus haut et du logiciel « amavis-ng ».
Cet outil s’installe de la façon suivante :
è Installation du package amavis-ng (version 0.1.6.2-1):
- apt-get install amavis-ng
è Ce package dépend des packages suivants :
- logrotate ;
- perl (version >= 5.6.0-16) ;
- libnet-perl
- libfile-mmagic-perl (version >> 1.15) ;
- libconfig-inifiles-perl ;
- libmime-perl (version >=5.313) ;
- libmime-base64-perl ;
- libconvert-tnef-perl (version >=0.06) ;
- libconvert-uulib-perl ;
- libcompress-zlib-perl (version >=1.14) ;
- libarchive-tar-perl;
- libarchive-zip-perl;
- suidmanager;
- perl-suid;
- nomarch;
- debconf (version >= 0.5).
Le fichier de configuration « /etc/amavis/amavisd.conf » doit être modifié sur les trois lignes suivantes :
…
$mydomain = 'dauphin';
…
$daemon_user = 'amavis';
$daemon_group = 'amavis';
L’installation du serveur SSH est décrite dans le paragraphe 8.2.3.E - .
Le paramétrage du déport des logs est décrit dans le paragraphe 8.2.3.C - .
Le paramétrage de l’authentification des utilisateurs sur l’annuaire GrandeOurse est décrit au paragraphe 8.2.6.D - .