Configuration d’un serveur de messagerie Postfix

Installation

Vérifier si Postifx est installé :

rpm -qa | grep postfix

Si celui est installé, la version de postfix est indiqué

Installation des packages

# yum install postfix

Configuration basique

Il faut modifier le fichier de configuration de Postfix : /etc/postfix/main.cf

Les directives importantes à modifier sont :

myhostname = mail.paris.fr

mydomain = paris.fr

myorigin = $mydomain

inetinterface = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain

mynetworks_style = subnet

relay_domains = $mydestination

home_mailbox = Maildir/

mailbox_command = /usr/bin/procmail -a $DOMAIN -d $LOGNAME

myhostname => indique le nom d’hote du serveur

mydomain => indique le nom du domaine

myorigin => indique que le courier sortant sera uniquement composé du nom de domaine ( example@paris.fr )

inetinterface => indique toutes les adresses d’interface réseau sur lesquelles le serveur doit écouter

mydestination =>indique les domaines que le serveur gérera au lieu de le transmettre à une autre machine

mynetworks_style => indique que le serveur doit router le courier des clients SMTP connectés sur le même sous-réseau.

relay_domains => indique sur quelle destination, le serveur doit faire du relais SMTP

home_mailbox => indique ou le serveur doit déposer les messages, ici un répertoire Maildir dans le répertoire de l’utilisateur

mailbox_command => indique quelle commande, il doit éxecuter pour transmettre les messages

Mise en route

Points à vérifier

Maildir

Il faut créer le répertoire Maildir dans le répertoire de l’utilisateur

Procmail

Il faur vérifier que le fichier .procmail se trouve bien dans le répertoire utilisateur

SpamAssassin

Il faut vérifier que SpamAssassin est bien installé

Configuration avancée d’un serveur de messagerie

Prochainement, un article traitant de la configuration avancée d’un serveur de messagerie ( Procmail, SpamAssassin, Fetchmail, Dovecot, Squirrelmail )

A comme Advocaat

Abatis
Bas morceaux des volailles, comprenant la tête, le cou, les ailerons et les pattes, le gésier, le cœur et le foie, ainsi que les rognons et la crête du coq.

Abignades
Tripes d’oie landaises préparées avec le sang de l’animal.

Acra
Beignet salé, fait d’une boulette épicée de purée de légumes ou de poisson, mélangée avec de la pâte à beignets.

Advocaat
Liqueur onctueuse, d’origine hollandaise, faite de jaunes d’œuf battus, de sucre et d’alcool, et aromatisée à la vanille.

Aïgo boulido
Soupe provençale faite à partir d’eau bouillie et d’ail.

Aïoli
Sorte de mayonnaise provençale, dont le nom est formé de « ail » et de « oli » ( huile en provençal ), qui entrent dans sa préparation.

Andouillette
Charcuterie cuite, faite d’intestins de porc, souvent additionnées d’estomac de porc et de fraise de veau, précuits dans un bouillon ou dans du lait et embossés – introduits – dans un boyau.

Animelles
Testicules des animaux de boucherie, plus spécialement du bélier, de l’agneau et du taureau.

Appenzeller
Fromage suisse de lait de vache ( 50% de matières grasses ), à pâte pressée cuite et à croûte brossée.

Aquavit
Alcool à base de pomme de terre et de grain additionné de substances aromatiques.

Argan
Fruit de l’arganier, arbre épineux cultivé dans le Sud marocain, dont on extrait une huile à la suite d’opérations artisanales complexes.

Attereau
Hachis de foie et de gorge de porc, enrobé d’une crépine, préparé surtout en Bourgogne.

MRTG / RRD Tools

Installation

Il faut en premier aller rÈcupÈrer la librairie libpng et la librairie GD
pour gÈnÈrer des graphes au format libre et ensuite aller rÈcupÈrer l’ archive
de mrtg sur http://www.mrtg.org

Installation de la librairie GD

Installation de la librairie libpng

Installation de l’archive de MRTG

# tar xzvf mrtg-x.y.tar.gz
# cd mrtg-x.y
# ./configure –prefix=/usr
# make
# make install

Ensuite, il faut crÈer le rÈpertoire qui va hÈberger les graphes sur le serveur web :

# mkdir /var/www/html/mrtg

Fichiers de configuration

CrÈation avec configmaker

On va gÈnÈrer un premier fichier de configuration avec cfgmaker :

# cfgmaker –global
‘WorkDir: /var/www/html/mrtg’
–global ‘Options[_]: bits,growright’
–output /etc/mrtg/mrtg.cfg public@localhost

La variable Workdir indique l’emplacement o˘ seront stockÈs les fichiers
et les images qui seront gÈnÈrÈs par MRTG

Les variables Optionsindiquent que le dÈbit des interfaces sera donne en bits et non en octets et
que MRTG doit faire dÈfiler les graphes dans le temps, de droite ‡ gauche

La variable Output indique l’emplacement ou le fichier de configuration doit Ítre gÈnËre

public@localhostindique qu’on veut monitorer la machine locale et sa communautÈ public

CrÈation manuelle

On va documenter ici un fichier de configuration pour MRTG.
Dans la premiËre partie, on trouve les options globales :

### Global Config Options
Workdir: [rrdtool repository folder]
PathAdd: [path to the rrdtool 'bin' folder] /usr/local/rrdtool/bin/
LibAdd: [path to the rrdtool 'perl-shared' folder] /usr/local/rrdtool/lib/perl/
logformat: rrdtool
RunAsDaemon: Yes
Interval: 5 //SNMP read interval
Options[_]: growright, bits
Language: french
EnableIPv6: no

Et dans la seconde partie, on trouve les hÙtes et les services a monitorer :

Target[ping]: `a=\`ping -c3 62.4.16.80 | tail -1 |
cut -f5 -d/ | cut -f1 -d.\`;echo $a;echo $a`
Options[ping]: gauge,growright,nopercent,noinfo
MaxBytes[ping]: 150
Title[ping]: Ping Nerim
PageTop[ping]: Ping Nerim
YLegend[ping]: Latence
ShortLegend[ping]: ms
Legend1[ping]: Latence en ms
Legend2[ping]: Latence en ms
LegendI[ping]: Latence:
LegendO[ping]: Latence:

GÈnÈration des pages web et des graphes

Pour gÈnÈrer les graphes et la page html, on va utiliser la commande suivante :

# mrtg /etc/mrtg/mrtg.cfg –logging
/var/log/mrtg/mrtg.log

La page html et les graphes seront ainsi gÈnÈrÈs dans le rÈpertoire mrtg sur
le serveur web et le dÈroulement de l’opÈration sera inscrit dans le fichier de
log.

Automatisation des graphes MRTG ‡ l’aide de Cron

Pour cela, on va rajouter cette ligne dans le fichier /etc/crontab :

0/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtg.cfg >
/dev/null 2>&2

Ce qui gÈnÈrera toutes les 5 minutes des graphes

CrÈation des pages Web

Avec Indexmaker

Pour gÈnÈrer un index des pages web et des graphes, on va utiliser la
commande suivante :

# indexmaker –columns=1 –sort=descr –sidebyside /etc/mrtg/mrtg.cfg –output=/var/www/html/mrtg/index.html

Et pour automatiser cette tache on peut aussi l’ajouter au fichier /etc/crontab :

0,5 * * * * indexmaker –columns=1 –sort=descr
–sidebyside /etc/mrtg/mrtg.cfg –output=/var/www/html/mrtg/index.html >
/dev/null 2>&2

Utilisation de RRD Tool

RRD Tool va permettre de stocker les rÈsultats de MRTG dans une base de donnÈe

Installation de RRD Tools

Pour que RRD Tool soit connu dans Perl, il faut l’enregistrer :

# ppm install rrds.ppd

Configuration de MRTG avec RRD Tool

Il faut modifier le fichier de configuration crÈe avec cfgmaker :

### Global Config Options
Workdir: [rrdtool repository folder]
PathAdd: [path to the rrdtool 'bin' folder] /usr/local/rrdtool/bin/
LibAdd: [path to the rrdtool 'perl-shared' folder] /usr/local/rrdtool/lib/perl/
logformat: rrdtool
RunAsDaemon: Yes
Interval: 5 //SNMP read interval

Ensuite, on va gÈnÈrer les graphes et la page html :

# mrtg /etc/mrtg/mrtg.cfg –logging /var/log/mrtg/mrtg.log

Information sur une base RRD

Pour avoir des informations sur une base RRD, il faut taper la commande
suivante :

# rrdtool info mrtg.rrd

Redimensionnent d’une base RRD

Pour redimensionner une base RRD et l’Ètendre ‡ une sÈrie de valeur toutes
les 5 minutes pendant 1 an, il faut taper la commande suivante :

# rrdtool resize mrtg.rrd RRA[0] GROW 107136

Exemple d’un fichier de configuration de MRTG

WorkDir: /var/www/html/tech/mrtg
Options[_]: growright, bits
Language: french
EnableIPv6: no

Target[ping]: `a=\`ping -c3 62.4.16.80 | tail -1 | cut -f5 -d/ | cut -f1
-d.\`;echo $a;echo $a`
Options[ping]: gauge,growright,nopercent,noinfo
MaxBytes[ping]: 150
Title[ping]: Ping Nerim
PageTop[ping]: Ping Nerim
YLegend[ping]: Latence
ShortLegend[ping]: ms
Legend1[ping]: Latence en ms
Legend2[ping]: Latence en ms
LegendI[ping]: Latence:
LegendO[ping]: Latence:

Target[loadavg]: `echo \`cat /proc/loadavg | cut -f2 -d’ ‘\` \* 100 | bc | cut
-f1 -d.;echo \`cat /proc/loadavg | cut -f3 -d’ ‘\` \* 100 | bc | cut -f1 -d.`
Options[loadavg]:
gauge,growright,nopercent,noinfo,transparent,noborder,nolegend
MaxBytes[loadavg]: 100000
Title[loadavg]: Charge CPU
PageTop[loadavg]: Charge CPU
YLegend[loadavg]: Charge CPU
ShortLegend[loadavg]: loadavg
Legend1[loadavg]: Charge CPU sur 5 minutes
Legend2[loadavg]: Charge CPU sur 15 minutes
LegendI[loadavg]: Charge CPU:
WithPeak[loadavg]: ym
LegendO[loadavg]: Charge CPU:

Target[hda1]: `set \`df -m | grep hda1\`;echo $3;echo $4`
Options[hda1]: gauge,growright,nopercent,noinfo,transparent,noborder,nolegend
MaxBytes[hda1]: 1000000000
Title[hda1]: Espace disque hda1
PageTop[hda1]: Espace disque hda1
YLegend[hda1]: hda1
kMG[hda1]:Mo,Go,To,Po
Kilo[hda1]:1024
ShortLegend[hda1]:
Legend1[hda1]: Espace occupÈ
Legend2[hda1]: Espace libre
LegendI[hda1]: OccupÈ:
LegendO[hda1]: Libre:

Target[mem]: `set \`free -mo | grep -v total\`;expr $3 – $6 – $7;shift 8;expr
$2`;
Options[mem]: gauge,growright,nopercent,noinfo,transparent,noborder,nolegend
MaxBytes[mem]: 1000000000
Title[mem]: MÈmoire utilisÈe
PageTop[mem]: MÈmoire utilisÈe
YLegend[mem]: MÈmoire
ShortLegend[mem]: Mo
Legend1[mem]: MÈmoire
Legend2[mem]: Swap
LegendI[mem]: MÈmoire:
LegendO[mem]: Swap:

Target[hdb2]: `set \`df -m | grep hdb2\`;echo $3;echo $4`
Options[hdb2]: gauge,growright,nopercent,noinfo,transparent,noborder,nolegend
MaxBytes[hdb2]: 1000000000
Title[hdb2]: Espace disque hdb2
PageTop[hdb2]: Espace disque hdb2
YLegend[hdb2]: hdb2
kMG[hdb2]:Mo,Go,To,Po
Kilo[hdb2]:1024
ShortLegend[hdb2]:
Legend1[hdb2]: Espace occupÈ
Legend2[hdb2]: Espace libre
LegendI[hdb2]: OccupÈ:
LegendO[hdb2]: Libre:

LDAP

Installation

Il faut aller récupérer l’ archive sur http://www.openldap.org

Installation de l’archive

# tar xzvf openldap-x.y.tgz
# cd openldap-x.y
# ./configure –prefix=/usr –enable-crypt
# make depend
# make
# make install

DÈmarrage automatique du dÈmon LDAP

Pour dÈmarrer le dÈmon automatiquement, on va placer ce script d’initialisation dans /etc/init.d :

#!/bin/sh
#
# Reporting BUG : benj@xenux.net
#
if [ -f /var/run/slapd.pid ]; then
pid=`cat /var/run/slapd.pid`
status=`ps -ef | grep $pid | grep slapd`
else
status=”";
fi

case “$1″ in
start)
echo -n “Starting ldap services: ”
if [ "$status" == "" ]; then
/usr/sbin/slapd
echo “slapd”
else
echo “Already Started…”
fi
;;
stop)
echo -n “Shutting down SLAP services: ”
if [ "$status" == "" ]; then
echo “Already Stopped…”
else
kill -INT `cat /var/run/slapd.pid`
echo “stop.”
fi
;;
status)
if [ "$status" == "" ]; then
echo “Stopped…”
else
echo “Running…”
fi
;;
*)
echo “Usage: slapd {start|stop|status}”
exit 1
esac

Changement des permissions du script

# chown root.root /etc/init.d/slapd

# chmod 755 /etc/init.d/slapd

Créer un lien symbolique pour que le serveur se lance au démarage

# ln -s /etc/init.d/slapd /etc/rc5.d/S50slapd

# ln -s /etc/init.d/slapd /etc/rc3.d/S50slapd

Créer un lien symbolique pour que le serveur s’arrête quand l’ordinateur s’arrête

# ln -s /etc/init.d/slapd /etc/rc5.d/K94slapd

# ln -s /etc/init.d/slapd /etc/rc3.d/K94slapd

Configuration

CrÈation du rÈpertoire de l’annuaire

On va crÈer un rÈpertoire dans /var/ldap/ et il s’appelera vitry.org, il sera ensuite dÈfini dans la variable directory

# mkdir /var/ldap/vitry.org

DÈfinition du mot de passe Administrateur

On va dÈfinir le mot de passe administrateur ( manager ) de la base LDAP
Cet administrateur se nommera cn=manager,ou=people,o=vitry,dc=org
On va executer la commande suivante qui va nous demander un mot de passe, et elle nous retournera
une chaÓne de caractËres qui sera notre mot de passe cryptÈ :

# /usr/sbin/slappasswd
New password:
Re-enter new password:
{SSHA}REOG6TWIUben00tpKfYCi2JFS7/CwWD+
#

Cette chaÓne sera ‡ coller dans le fichier de configuration au niveau de la variable rootpw

Configuration de LDAP

Le fichier de configuration se trouve dans /etc/openldap et s’appelle slapd.conf

Dans ce fichier, on y trouve toute la configuration de LDAP, voici les directives les plus importantes :

Directives gÈnÈrales

Emplacement des diffÈrentes classes d’objets et d’attributs :

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema

DÈfinition du niveau de log et les chemins des fichiers pid et args :

loglevel 296
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args

DÈfinition de la structure du schÈma

database ldbm

DÈfinition du suffixe ( racine de l’organisation )

suffix “o=vitry,dc=org”

DÈfinition de l’administrateur

rootdn “cn=manager,ou=people,o=vitry,dc=org”

DÈfinition du mot de passe de l’administrateur obtenu avec la commande slappasswd

rootpw {SSHA}REOG6TWIUben00tpKfYCi2JFS7/CwWD+

DÈfinition de l’emplacement de l’annuaire, il a ÈtÈ crÈer auparavant

directory /var/ldap/vitry.org

Directives pour les index de l’annuaire

Ces directives permettent d’indexer l’annuaire :

index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub

Directives pour la sÈcuritÈ de l’annuaire

Ces directives permettent de dÈfinir la sÈcuritÈ avec des ACLs

access to *
by dn=”cn=manager,ou=people,o=spinfo,dc=org” write
by * read

CrÈation de l’annuaire

CrÈation de la racine

On va crÈer la racine de l’annuaire o=vitry,dc=org

Pour cela, on va crÈer un fichier racine.ldif qui contiendra les informations suivantes :

dn: o=vitry,dc=org
objectclass: top
objectclass: organization
o: vitry
description: Annuaire Vitry

Puis ensuite, on importe dans l’annuaire, le fichier racine.ldif
Pour cela, on va executer la commande ldapadd qui va nous demander le mot de passe du manager :

# usr/bin/ldapadd -x -D “cn=manager,ou=people,o=vitry,dc=org” -W -f racine.ldif

CrÈation des branches

Pour crÈer les branches de l’annuaire, on va crÈer un fichier branches.ldif :

dn: ou=people,o=vitry,dc=org
ou: people
objectClass: organizationalUnit

dn: ou=ressources,o=vitry,dc=org
ou: people
objectClass: organizationalUnit

Puis on importe dans l’annuaire, le fichier branches.ldif :

# usr/bin/ldapadd -x -D “cn=manager,ou=people,o=vitry,dc=org” -W -f branches.ldif

CrÈation de l’administrateur

Pour l’administrateur, on va crÈer le fichier manager.ldif :

dn: cn=manager,ou=people,o=vitry,dc=org
objectclass: top
objectclass: organizationalrole
objectclass: person
cn: manager
sn: manager
userpassword: {SSHA}REOG6TWIUben00tpKfYCi2JFS7/CwWD+

Puis on l’importe dans l’annuaire :

# usr/bin/ldapadd -x -D “cn=manager,ou=people,o=vitry,dc=org” -W -f manager.ldif

CrÈation d’une entrÈe

On va crÈer un fichier contact.ldif, qui contiendra les coordonnÈes d’une personne :

dn: cn=Sebastien Puechbroussoux,ou=people,o=vitry,dc=org
objectClass: inetOrgPerson
objectClass: person
cn: Sebastien Puechbroussoux
sn: Puechbroussoux
mail: seb.paris@google.com
mail: sp@vitry.org
street: 111 rue Camille Groult
postalCode: 94400
telephoneNumber: 01 45 75 30 90
mobile: 06 11 15 20 65

Puis on l’importe :

# usr/bin/ldapadd -x -D “cn=manager,ou=people,o=vitry,dc=org” -W -f contact.ldif

Indexation de l’annuaire

SÈcurisation de l’annuaire

Pour sÈcuriser l’annuaire, on utilise des ACLs comme celle utilisÈe dans le fichier slapd.conf

Cette ACL donne tous les droits ‡ l’administrateur :

access to *
by dn=”cn=manager,ou=people,o=spinfo,dc=org” write
by * read

Authentification LDAP

Outils d’administration graphique

Pour visualiser ou Èditer l’annuaire, on peux utiliser ces Èditeurs graphiques :

LDAP Navigator : http://sourceforge.net/projects/ldapnavigator/

LDAP Browser : http://www.iit.edu/~gawojar/ldap/

GQ Browser LDAP : http://biot.com/gq/

AwStats

Installation

Il faut aller récupérer l’ archive sur http://awstats.sourceforge.net/

Installation de l’archive

# tar xzvf awstats-x.y.tgz
# mv awstats-x.y /usr/local/awstats

Execution du script d’installation

Executer le script d’installation : /usr/local/awstats/tools/awstats_configure.pl

    - Indiquer le chemin du fichier de configuration d’Apache : /etc/httpd/conf/httpd.conf

    - Indiquer un nom de profil awstats : vitry

    - Indiquer l’emplacement des fichiers de configuration : /etc/awstats

Ensuite il faut créer le répertoire de la base de données de Awstats :

# mkdir /var/lib/awstats

Configuration d’un profil

Profil des statistiques Apache

Il a généré par le script d’installation et il se trouve là : /etc/awstats/awstats.vitry.conf

Quelques directives importantes

Traitement des fichiers journaux

Cette directive indique l’emplacement des journaux :

LogFile=”/var/log/httpd/access.log”

Cette directive indique le type de journal á analyser ( W pour Web, M pour Mail, F pour FTP ) :

LogType=W

Cette directive indique le format du journal, il peut être personnalisé :

LogFormat=1
# LogFormat = “%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot”

Cette directive indique le séparateur des valeurs du journal :

LogSeparator=” ”
Directives importantes

Cette directive indique le nom de la configuration :

SiteDomain=”vitry”

Cette directive indique les hôtes ou les alias du domaine à analyser :

HostAliases=”spinfo www.spinfo.org”

Cette directive indique si on fait un Reverse DNS Lookup sur l’adresse IP pour obtenir son nom :

DNSLookup = 1

Cette directive indique l’emplacement de la base de donnée de AwStats :

DirData=”/var/lib/awstats”

Cette directive indique les hotes à ignorer lors du traitement des journaux :

SkipHosts=”127.0.0.1 192.168.1.40 82.66.253.118 192.168.1.20″
D’autres directives peuvent être personnalisée dans le fichier de configuration

Pour les autres directives ou les autres options, il faut se reporter a la documentation officielle : http://awstats.sourceforge.net/

Profil des statistiques Mail ( Postfix )

Il faut copier le modèle :

# cp /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf /etc/awstats/awstats.mail.conf

Et modifier les directives suivantes :

LogFile=”perl /path/to/maillogconvert.pl standard < /pathtomaillog/maillog |"
LogType=M
LogFormat=”%time2 %email %email_r %host %host_r %method %url %code %bytesd”
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
LevelForFileTypesDetection=0
ShowMenu=1
ShowMonthStats=HB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=0
ShowHostsStats=HBL
ShowAuthenticatedUsers=0
ShowRobotsStats=0
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSessionsStats=0
ShowPagesStats=0
ShowFileTypesStats=0
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=1

Profil des statistiques FTP ( ProFTPd )

Il faut copier le modèle :

# cp /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf /etc/awstats/awstats.ftp.conf

Et modifier les directives suivantes :

LogFormat awstats “%t %h %u %m %f %s %b”
ExtendedLog /var/log/xferlog read,write awstats
TransferLog none
LogFile=”/var/log/xferlog”
LogType=F
LogFormat=”%time1 %host %logname %method %url %code %bytesd”
LogSeparator=”\t”
NotPageList=”"
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
ShowLinksOnUrl=0
ShowMenu=1
ShowMonthStats=UVHB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=HB
ShowHostsStats=HBL
ShowAuthenticatedUsers=HBL
ShowRobotsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=0

Automatisation des MAJ des statistiques

Il faut créer un script awstats dans le répertoire /etc/cron.daily/ pour mettre à jour les statistiques :

# cat /etc/cron.daily/awstats

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=vitry
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=mail
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=ftp

Affichage des statistiques

Il faut aller à la page suivante : http://127.0.0.1/awstats/awstats.pl?config=vitry

Le nom de la configuration doit être changée dans l’adresse HTML en fonction du nom donné dans le fichier de configuration

Problèmes rencontrés

ProFTPd

Installation

Vérifier si proftpd est installé :

rpm -qa | grep proftpd

Si celui est installé, la version de proftpd est indiqué
S’ il n’ est pas installé, il faut aller récupérer l’ archive sur www.proftpd.org

Installation de l’archive

# tar xzvf proftpd-xxx.tar.gz
# cd proftpd-xxxx
# ./configure –prefix=/usr –sysconfdir=/etc
# make
# make install
# ldconfig

Pré requis pour le lancement du serveur

Vérifier que l’utilisateur nobody et le groupe nobody existent, ainsi que l’utilisateur ftp et le groupe ftp , sinon il faut les créer
L’utilisateur ftp aura comme répertoire de base /var/ftp , et ce répertoire aura les permissions 755
Créer un fichier de log /var/log/ftp.log

Choix du lancement du serveur FTP

Lancement de ProFTPd à chaque démarrage en mode standalone

Copier le script de lancement proftpd.init.d qui se trouve dans les sources ( répertoire contrib/dist/rpm ) dans /etc/init.d/

# cp proftpd.init.d /etc/init.d/proftpd

Changement des permissions du script

# chown root.root /etc/init.d/proftpd
# chmod 755 /etc/init.d/proftpd

Créer un lien symbolique pour que le serveur se lance au démarage

# ln -s /etc/init.d/proftpd /etc/rc5.d/S94proftpd
# ln -s /etc/init.d/proftpd /etc/rc3.d/S94proftpd

Créer un lien symbolique pour que le serveur s’arrête quand l’ordinateur s’arrête

# ln -s /etc/init.d/proftpd /etc/rc5.d/K94proftpd
# ln -s /etc/init.d/proftpd /etc/rc3.d/K94proftpd

Lancement de ProFTPd à chaque démarrage en mode xinetd

Créer le fichier proftpd dans /etc/xinet.d/ avec les permissions 644 et comme propriétaire root.root
Contenu du fichier /etc/xinet.d/proftpd :

service ftp
  {
   disable = no
   flags = REUSE
   socket_type = stream
   instances = 10
   wait = no
   user = root
   server = /usr/sbin/in.proftpd
   log_on_success += HOST PID
   log_on_failure += HOST
  }

Ensuite modifier la directive ServerType en inetd dans le fichier de configuration
Relancer le service xinetd pour qu’il prenne en compte le service ftp

Gestion des utilisateurs

Les utilisateurs voulant se connecter doivent impérativement avoir un compte sur le système
Au niveau de la sécurité, il vaut mieux créer des utilisateurs sans shell
Le shell sera /bin/false mais il faut le valider dans le fichier /etc/shells , le serveur ftp vérifiera si les utilisateurs ont bien un shell valide en utilisant cette directive RequireValidShell
Pour simplifier l’administration, créer un groupe avec le shell false et y mettre les utilisateurs qui auront accès au serveur ftp

On peut définir les comptes qui n’auront pas accès au serveur dans le fichier /etc/ftpusers
Pour interdire l’accès anonyme sans modifier le fichier de configuration, on met l’utilisateur anonymous dans /etc/ftpusers

Configuration du serveur FTP

Configuration globale

Voici une liste des directives que l’ on peut modifier dans le fichier de configuration /etc/proftpd.conf:

ServerName            FTP Serveur
ServerType            standalone
DefaultServer         on
Port                  21
Umask                 022
MaxInstances          30
MaxLoginAttempts      3

ServerName => Nom du serveur qui s’affiche lors de la connexion du client

ServerType => Type du lancement du serveur ( standalone ou xinetd )

DefautServer => Directive pour les hotes virtuels

Port => Définition du port par défaut à utilisé

Umask => Permet aux fichiers téléchargés d’être lus et écrits par les clients mais pas éxécutés par le serveur

MaxInstances => Nombre maxi de processus fils

MaxLoginAttempts => Permet de limiter le nombre de tentative de logins

Autorise les clients à reprendre un téléchargement vers le serveur :

AllowStoreRestart on
AllowRetrieveRestart on

Utilisateur et groupe sur lequel le serveur tourne :

User nobody
Group nobody

Permet aux clients authentifiés de mettre à jour leurs fichiers donc « on » :

Directory /
AllowOverwrite on
/Directory

Limiter les possibilités d’écritures sur le serveur :

<Limit MKD RNFR RNTO DELE RMD STOR CHMOD SITE_CHMOD SITE XCUP WRITE XRMD XPWD>
DenyAll
</Limit>

Configuration du contexte global

Tout ce qui se trouvera dans le contexte global sera commun au serveur FTP, ce qui évitera de définir plusieurs fois les mêmes paramètres :

<Global>
DefaultRoot          ~
AllowOverwrite       yes
MaxClients           3
MaxClientsPerHost    1
ServerIdent          on "ProFTP Server Ready"
AccessGrantMsg       "Bienvenue %u sur le serveur FTP"
</Global>

DefaultRoot => Limite l’utilisateur à son répertoire personnel

AllowOverwrite => Permet d’écraser des fichiers sur le serveur

MaxClients => Nombre de client maximum autorisé à se connecter sur le serveur

MaxClientsPerHost => Limite le nombre de client par personne

ServerIdent => Affiche le premier message lors d’une connexion

AccessGrantMsg => Affiche le message d’accueil lorsqu’une connexion est réussite

Configuration du contexte Anonyme

Les utilisateurs anonymes ne peut lire que les fichiers qui sont dans /var/ftp/pub/
Créer un contexte anonyme à la fin du fichier /etc/proftpd.conf :

<Anonymous ~ftp>
User                ftp
Group               ftp
MaxClients    &nbsp,    10
UserAlias           anonymous ftp
DisplayLogin        welcome.msg
DisplayFirstChdir   .message
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>

Dans ce contexte :
Les clients qui se connectent en anonymous seront vus par le système en tant que l’utilisateur ftp
Le nombre de connexions anonymes est limitÈes ‡ 10
Il est affiche le message welcome.msg à chaque connexion et le message .message s’il existe dans le répertoire

L’écriture est limitée dans le répertoire pub

Création du contexte de configuration VirtualHost

Les VirtualHost permettent d’avoir un contexte pour un utilisateur ( permissions … ), une adresse internet, un port …
Ceux ci ne fonctionnent que si le serveur est en mode standalone :

<VirtualHost ftp.pfl.fr>
ServerName           "Mon serveur FTP virtuel"
Port                  25117
Maxclients            3
MaxClientsPerHost     1
DefaultRoot           ~
AccessGrantMsg        "Bienvenue %u sur le serveur virtuel de Vitry"
<Limit LOGIN>

AllowUser sp
DenyAll
</Limit>
</VirtualHost>

Dans ce contexte :
On indique qui peut se connecter au serveur

Pour que l’utilisateur se connecte, il doit indiquer deux paramètres : l’adresse internet et le port

On peut filtrer les accès grace aux adresses IP :

<Limit LOGIN>

Allow 172.16.18.5 192.168.10.
Deny all
</Limit>

On peut aussi gérer la bande passante :

MaxClientsPerHost 1
TransferRate RETR 12
TransferRate APPE,STOR 63

Commandes du serveur FTP

ftpcount : affiche le nombre actuel de connexions
ftpshut : arrête tous les serveurs proftpd à un moment donné
ftptop : affiche le status en cours des connexions
ftpwho : affiche les informations sur l’identifiant du processus pour chaque session
proftpd : daemon du serveur proftpd

Rotation des fichiers journaux

Il faut modifier la ligne ci dessous dans le fichier de configuration pour choisir l’emplacement des journaux :

ExtendedLog /var/log/proftpd/proftpd.log ALL

Il faut rajouter dans LogRotate, un script proftpd :

/var/log/proftpd {
  missingok
}

Outils de statistique

Voici les différents outils de statistiques :

  • Awstats
  • Webalizer
  • Http-analyse
  • Analog
  • Report Magic
  • Squid

    Installation

    Vérifier si Squid est installé :

    rpm -qa | grep squid

    Si celui est installé, la version de squid est indiqué
    S’ il n’ est pas installé, il faut aller récupérer l’ archive sur www.squid-cache.org

    Installation de l’archive

    # tar xzvf squid-xxx.tar.gz
    # cd squid-xxxx
    # ./configure –prefix=/usr –sysconfdir=/etc –enable-default-err-language=French –enable-snmp
    # make
    # make install

    Pré requis pour le lancement du serveur

    Créer un utilisateur squid et un groupe squid
    Créer le répertoire de cache de Squid :/var/spool/squid et lui donner comme propriétaire squid.squid
    Créer le répertoire de journaux : /var/log/squid et lui donner comme propriétaire squid.squid
    Avant d’ initialiser le cache, il faut impérativement modifier les directive suivantes dans le fichier de configuration /etc/squid/squid.conf :

    cache_effective_user               squid
    cache_effective_group              squid
    cache_dir                          /var/spool/squid
    http_port                          8080

    cache_effective_user => indique avec quel utilisateur le serveur se lance

    cache_effective_group => indique avec quel groupe le serveur se lance

    cache_dir => indique le répertoire ou sera situe le cache

    http_port => indique sur quel port tcp, le serveur fonctionne

    Initialisation du cache

    Pour initialiser le cache, il faut se connecter en root et lancer la commande suivante : squid -z

    Lancement du serveur

    Pour accéder au cache, il faudra modifier les ACLs qui dÈfinissent la sécurité
    Pour lancer le serveur en mode standalone, il faut se connecter en root et lancer la commande suivante : squid -D

    Configuration générale

    Voici une liste des directives que l’ on peut modifier dans le fichier de configuration /etc/squid/squid.conf:

    cache_mgr                     admin@site.com
    ftp_user                      admin@site.com
    minimum_objet_size            0 KB
    maximum_object_size           8192 KB
    connect_timeout               30 seconds
    request_timeout               30 seconds
    read_timeout                  2 minutes
    reference_age                 1 month
    forwarded_for                 off
    logfile_rotate                30
    client_netmask                255.255.255.0
    anomyse_headers               deny Referer Server From User-Agent
    fake_user_client              Microsoft Nescape/1.0 (CP/M; 8-bits)
    dns_children                  5
    positive_dns_ttl              24 hours
    negative_dns_ttl              5 minutes

    cache_mgr => Adresse email de l’ administrateur du serveur cache, elle apparaît sur la page en cas d’ erreur du serveur

    ftp_user => Adresse email qui est envoyée par défaut lors de connexion à un serveur FTP

    minimum_object_size => Taille minimum de l’ objet qui sera mis en cache

    maximum_object_size => Taille maximum de l’ objet qui sera mis en cache

    connect_timeout => Délai maximum d’ établissement d’ une connexion avant que ça soit un échec

    request_timeout => Délai maximum d’ envoi d’ une requête avant que le serveur considère que c’ est un échec

    read_timeout => Délai maximum pour la réception des résultats d’ une requête

    reference_age => Spécifie le nombre de jour ou un élément reste dans le cache avant qu ‘il soit effacé

    forwarded_for => Indique qu ‘il ne faut pas met e d’ adresses IP locales dans les journaux des hébergeurs web

    logfile_rotate => Indique une rotation des logs sur 30 jours

    client_netmaskMasque une partie des adresses sources des requêtes

    anomyse_headers => Masque l’ adresseélec onique

    fake_user_client => Masque l’ identification du client

    dns_children => Nombre de processus destinés au cache des requêtes DNS

    positive_dns_ttl => Temps de conservation en cache des résolutions DNS directes

    negative_dns_ttl => Temps de conservation en cache des résolutions DNS inverses

    Sécurité

    Contrôle des accès avec les ACLs ( Listes de Contrôle d’Accès )

    On va définir deux ACLs ainsi que leurs accès :

    acl Vitry src                     192.168.0.1 192.168.0.2
    acl all_src                       0.0.0.0/0.0.0.0
    http_access_allow                 Vitry
    http_access_deny                  all_src
    http_reply_access allow           Vitry

    acl Vitry src => Définition de l’ACL Vitry avec les adresses IP autorisées

    acl all_src => Définition de l’ACL all_src qui sont " les autres adresses "

    http_access_allow => Accès autorisé pour l’ACL Vitry

    http_access_deny => Accès refusé pour l’ACL all_src

    Con ôle des accès par authentification

    On va définir quelle personne est autorisée à aller sur Internet grâce à un annuaire LDAP, on va rajouter ces lignes dans le fichier de configuration :

    acl identification proxy_auth       required
    http_access allow                   identification
    authentificate_program              /usr/lib/squid/squid_ldap_auth -b $LDAP_USER -u uid SERVEUR_LDAP

    acl identification proxy_auth => Définition de l’ACL identification avec l’ authentification requise

    http_access allow => Accès autorisé pour l’ACL identification

    authentificate_program => LDAP va authentifier les utilisateurs, la variable $LDAP_USER est l’ou dans laquelle se trouve les clients ou=people,ou=vitry,c=fr

    Maintenance

    Ré initialisation du cache

    Pour ré-initialiser le cache, il faut relancer Squid avec l’ option suivante : squid -z

    Archivage des journaux

    Sécuriser les journaux qui sont dans /var/log/squid/ :

    # chmod 700 /var/log/squid/
    # chown squid /var/log/squid/
    # chgrp squid /var/log/squid/

    Pour forcer l’ archivage des journaux, il faut définir la directive logfile_rotatedans le fichier de configuration à 30 pour une sauvegarde sur un mois, à raison d’ une rotation par jour.
    Ensuite il faut lancer le démon squid avec l’ option suivante :

    squid -k rotate

    Le plus simple est de d’ automatiser la rotation avec cron, voici par exemple, la ligne à ajouter dans le fichier /etc/crontab :

    0 2 * * * squid /usr/local/squid/bin/squid -k rotate

    Options du serveur

    On peut démarrer le serveur à la ligne de commande, les options suivantes qui sont envoyées au serveur écrasent les directives du fichier de configuration :

    -h => Pour obtenir les options possibles

    -a => Pour indiquer un port particulier

    -f => Pour utiliser un autre fichier de conf à la place de squid.conf

    -i => Désactive le cache IP

    -u => Spécifie un port pour les requêtes ICP

    -v => Pour indiquer la version de Squid

    -z => Pour effacer le contenu du cache sur le disque ou pour créer le fichier de swap

    -k => Pour envoyer des instructions à Squid pendant son fonctionnement. Il faut faire suivre -k d’ une instruction rotate reconfigure shutdown interrupt kill debug check

    -D => Pour démarrer squid lorsque vous n’ êtes pas connecté en permanence à internet (évite de vérifier si le serveur DNS répond)

    Audit

    Interface Web de Squid

    Squid dispose d’ une interface web qui donne des informations sur l’ utilisation du cache
    Il faut que Apache soit installé et il faut placer la cgi suivante cachemgr.cgi dans /var/www/cgi-bin/
    Pour configurer complètement cachemgr.cgi il faut placer dans le fichier squid.conf la ligne suivante :

    cachemgr_passwd mot_de_passe shutdown

    Si cette ligne n’existe pas dans le fichier de configuration de Squid, alors toutes les fonctions sont permises sauf la modification du fichier squid.conf ainsi que l’arrêt du serveur proxy.