35
1 DOCUMENTATION TECHNIQUE : Installer des applications sous Linux Description de la ressource Propriétés Description Intitulé long Fiches techniques de manipulation d’outils sous Linux Formation concernée BTS SIO 1ère année Matière MTI Présentation Vous trouverez dans cette documentation de l’assistance pour manipuler les outils suivants : Généralités sur Linux (Version Ubuntu basée sur Debian) Serveur DNS Serveur Web Apache SGBD MySQL Serveur FTP ProFTPd Cryptage SSL/TLS avec Open SSL Chaque fiche (hormis Linux) propose une procédure à appliquer pour la mise en place de l’outil technique, ainsi qu’un bref descriptif des principaux fichiers de configuration à manipuler. Cette procédure décrit les étapes à respecter pour installer, paramétrer et mettre en activité les services. Elle ne prend pas en compte les spécificités d’un contexte et ne fournit pas d’explications techniques une partie plus explicative sur les directives, fichiers de configuration et mode opératoire. Mots-clés DNS, DHCP, FTP, HTTP, SSL/TLS Bind, ProFTP, MySQL, Apache Version v 1.2 Date de publication Septembre 2012

Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

Embed Size (px)

Citation preview

Page 1: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

1

DOCUMENTATION TECHNIQUE Installer des applications sous Linux

Description de la ressource

Proprieacuteteacutes Description

Intituleacute long Fiches techniques de manipulation drsquooutils sous Linux

Formation concerneacutee

BTS SIO 1egravere anneacutee

Matiegravere MTI

Preacutesentation Vous trouverez dans cette documentation de lassistance pour manipuler les outils suivants

Geacuteneacuteraliteacutes sur Linux (Version Ubuntu baseacutee sur Debian) Serveur DNS Serveur Web Apache SGBD MySQL Serveur FTP ProFTPd Cryptage SSLTLS avec Open SSL

Chaque fiche (hormis Linux) propose une proceacutedure agrave appliquer pour la mise en place de loutil technique

ainsi quun bref descriptif des principaux fichiers de configuration agrave manipuler Cette proceacutedure deacutecrit les eacutetapes agrave respecter pour installer parameacutetrer et mettre en activiteacute les services Elle ne prend pas en compte les speacutecificiteacutes dun contexte et ne fournit pas dexplications techniques

une partie plus explicative sur les directives fichiers de configuration et mode opeacuteratoire

Mots-cleacutes DNS DHCP FTP HTTP SSLTLSBind ProFTP MySQL Apache

Version v 12

Date de publication

Septembre 2012

2

ContenuDOCUMENTATION TECHNIQUE Installer des applications sous Linux1

Description de la ressource 1FICHE 1 LINUX QUELQUES GENERALITES3

PRESENTATION 3UTILISATION DU SHELL 3ARBORESCENCE DES FICHIERS3CONFIGURATION RESEAU51 Configuration de ladressage statique (IP fixe) 52 Configuration de ladressage dynamique (DHCP) 53 Configuration du routage 54 Configuration du client DNS5PAQUETAGES ET SERVICES5UTILISATION DES FICHIERS DE CONFIGURATION6EDITEUR VI7

FICHE 2 DNS 8PRESENTATION 8PROCEDURES8CONFIGURATION SERVEUR DNS 81 Serveur Autoriteacute 92 Serveur secondaire ou esclave 113 Serveur de zone deacuteleacutegueacute 114 Test des configurations12CLIENT ET TEST12Source 13

FICHE 3 SERVEUR WEB APACHE 14PRESENTATION 14PROCEDURES14SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES151 - Installation et reacutepertoires 152 - Fichier apache2conf 15SECURISATION DES ACCES (htaccess) 18Sources internet 19

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL 20PRESENTATION 20PROCEDURES20MYSQL SANS INTERFACE GRAPHIQUE 20MIGRATION DE BASE DE DONNEES21

FICHE 5 SERVEUR FTP (ProFTP)23PRESENTATION 23PROCEDURES23CONFIGURATION DE BASE 24Configuration du service 25Configuration des partages25PROFTP ET AUTHENTIFICATION DEPORTEE 27CLIENT FTP27ANNEXE Script pour la creacuteation de la base28Source internet29

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS 30PRESENTATION 30PROCEDURE 31MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL32CONFIGURATION DAPACHE AVEC SSLTLS33CONFIGURATION DE ProFTP AVEC SSLTLS 34Sources35

3

FICHE 1 LINUX QUELQUES GENERALITES

PRESENTATION

Lutilisation de lenvironnement Linux passe par la maicirctrise des eacuteleacutements suivants lutilisation du shell larborescence des fichiers du SGF (etc var hellip) la configuration des options reacuteseau (IP DHCP DNS RoutagePasserelle) linstallation et la gestion du fonctionnement des services (apt) lutilisation et le parameacutetrage de fichiers de configuration

PrincipesAvant toute installation vous devez

mettre agrave jour les paquetages lors de la premiegravere utilisation de lOS apt-get update utiliser un compte systegraveme sudo commande | sudo su avant tout parameacutetrage faire une copie de sauvegarde des fichiers de configuration qui

seront modifieacutes

Apregraves toute modification vous devez recharger le service (service nom_service reload) ou le redeacutemarrer complegravetement ce qui interrompt les connexions eacutetablies sur le serveur (service nom_service restart)

UTILISATION DU SHELL

Environnement shellSous Linux lutilisation de la ligne de commande se fait dans un environnement riche (le shell) qui propose des fonctions de compleacutetion (il complegravete) gracircce agrave la touche tabulation

Mode administrateurLes commandes dadministration qui doivent ecirctre exeacutecuteacutees en mode administrateur seront preacutefixeacutees par la commande sudoOn peut aussi passer complegravetement en mode superutilisateur en tapant sudo su Il y a un risque car les manipulations opeacutereacutees le sont sans demande de confirmation

Lancement dun processus autonomeLorsquon lance un processus (par exemple un eacutediteur) depuis le shell ce processus fils prend la main et on ne pourra utiliser le shell quapregraves avoir fermeacute le processus fils

On peut lancer un processus autonome deacuteconnecteacute du shell en finissant la commande par amp rootmonLinux gedit etcresolvconf amp

Aide sur une commandeOn obtient de laide ponctuelle en utilisant loption --help (ex mkdir --help) ou de laide deacutetailleacutee en consultant le manuel (man nomCommande)

ARBORESCENCE DES FICHIERS

Contrairement agrave Windows Linux ne propose pas un ensemble de lettres de lecteur pour les diffeacuterentes partitionsAgrave la place on trouve une arborescence unique () agrave laquelle sont rattacheacutes les diffeacuterentes partitions lecteurs physiques (disquette CDROM etc) et lecteurs USB Pour qursquoun lecteur soit visible dans cette arborescence il faut qursquoil y ait eacuteteacute raccrocheacute (monteacute) par la commande mount Ce terme de monter un lecteur vient de lrsquoeacutepoque ougrave il fallait drsquoabord installer physiquement le disque avant de le mettre en route Lrsquooutil de navigation en interface graphique est nommeacute nautilus Pour manipuler les droits et proprieacutetaires on peut lrsquoutiliser en mode superutilisateur

4

LarborescenceOn trouvera principalement dans cette arborescence

Lieu Contenu

etc programmes et fichiers de configuration principaux

initd Endroit ougrave se trouvent les principales applications (un peu eacutequivalent au Program Files de Windows)

dev drivers de peacuteripheacuteriques

media Montage des reacutepertoires pointant sur des uniteacutes de stockage et lecteurs disque amoviblesApparaicirct parfois sous le nom mount ou mnt dans dautres distributions

home Stockage des reacutepertoires de travail des utilisateurs (eacutequivalent de cDocuments and settings)

bin Contient les principales commandes en ligne

var Fichiers et donneacutees variables (donneacutees dynamiques fichiers temporaires pages web etc) pour les applications

usr Fichiers de configuration propres agrave la session de lutilisateur

Navigation dans larborescenceVoici quelques commandes pour naviguer dans les reacutepertoires et explorer le systegraveme de fichiers

Action Commande Options

Afficher le contenu dun reacutepertoire

ls -l affiche lutilisateur et le groupe proprieacutetaires ainsi que les droits daccegraves-R affiche le contenu du reacutepertoire et des sous-reacutepertoires-all comme -l y compris pour les fichiers cacheacutes

Creacuteer un reacutepertoire mkdir nomRepertoire

Supprimer un reacutepertoire rmdir nomRepertoire Le reacutepertoire doit ecirctre vide

Supprimer un fichier rm nomFichier

Se deacuteplacer dans larborescence

cd retourne agrave la racine remonte dun niveau dans larborescencenomRepertoire descend agrave linteacuterieur de larborescence

Fichiers droits daccegraves proprieacutetaireCommandes pour deacutefinir ces autorisations et deacuteterminer le proprieacutetaire dun fichier ou reacutepertoire

action commande remarques

Visualiser les droits dun eacuteleacutement ls -lls -all

Affiche les fichiers courantsAffiche les fichiers courants et systegraveme (cacheacutes)

Modifier le proprieacutetaire (change owner)

chown Usage chown nom_utilisateur nom_fichier

Modifier les droits chmod Usage chmod nvx_droits nom_fichierles nvx_droits sont une valeur numeacuterique de trois nombres repreacutesentant en binaire les droits pour lutilisateur son groupe et les autres Par exemple 7= (111)2 tous les droits (RWX)4 = (100)2 droit de lecture seule (RWX)

5

CONFIGURATION RESEAU

1 Configuration de ladressage statique (IP fixe)

La configuration de ladresse IP du masque ou lactivation deacutesactivation de la carte reacuteseau se fait par la commande ifconfigifconfig nom_carte [adresse_ip] [netmask valeur_masque] [up|down]

2 Configuration de ladressage dynamique (DHCP)

Pour obtenir une adresse IP dun serveur DHCP ou pour renouveler un bail on utilisera la commandedhclient nom_carte

3 Configuration du routage

La configuration du routage (et donc de la passerelle par deacutefaut pour un poste) utilise la commande route

Ajouter une ligne dans la tableroute add adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Ajout dune route par deacutefaut (donc dune passerelle)route add default [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Supprimer une ligne dans une tableroute del adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Afficher la table de routage route ndashe

4 Configuration du client DNS

La configuration des serveurs DNS que le client devra interroger se fait dans le fichier etcresolvconf

On y ajoute les adresses des serveurs sous la forme ci-contre

PAQUETAGES ET SERVICES

Gestion de paquetagesLinstallation dapplications systegraveme (DNS DHCP serveur Web etc) sous Linux neacutecessite les droits administrateur La commande laquo apt-get raquo est le gestionnaire de paquetages (on pourra aussi utiliser leacutequivalent aptitude ou le logiciel en interface graphique synaptic) Il permet diverses manipulations selon les options utiliseacutees parmi lesquelles

update met agrave jour les deacutepocircts de paquetages install paquetage1[paquetage2 paquetage3 hellip] installer un ou plusieurs paquetages remove paquetage1[paquetage2 paquetage3 hellip] supprime un ou plusieurs paquetages Les

fichiers ne sont pas supprimeacutes y compris les configurations de linstallation autoremove supprime les paquetages installeacutes automatiquement et qui nont plus dutiliteacute

ou les eacuteleacutements supprimeacutes par loption remove et qui sont encore preacutesents dans le systegraveme

6

Gestion des servicesUne fois les paquetages installeacutes les applications systegravemes (ou services) preacutesents dans etcinitdpeuvent ecirctre

deacutemarreacutes start arrecircteacutes stop re-deacutemarreacutes (ils sont dabord arrecircteacutes puis deacutemarreacutes) restart leurs fichiers de configuration peuvent ecirctre rechargeacutes (eacutevite linterruption du service pour les

utilisateurs deacutejagrave connecteacutes) reload

Exemple etcinitdapache2 restart etcinitdbind9 reload

On peut aussi connaicirctre le statut (running failed stopped etc) dun service en utilisant loption status etcinitdmysql status

Beaucoup de services peuvent ecirctre geacutereacutes avec la commande service service apache2 restart service bind9 reload service mysql status

UTILISATION DES FICHIERS DE CONFIGURATION

Contrairement agrave Windows ougrave les configurations des services se passent par interface graphique et sont stockeacutees dans la base de registres Linux utilise encore des fichiers texte Voici quelques eacuteleacutements pour comprendre leur fonctionnement et utiliser au mieux une approche modulaire

ContenuSyntaxeUn fichier de configuration est eacuteditable agrave partir dun utilitaire en mode texte (vi vim nano pico ou autre voir annexe pour quelques commandes) ou un eacutediteur plus complet si on dispose dune interface graphique (par exemple gedit sous Ubuntu)Les eacuteleacutements de syntaxe suivants sont tregraves courant

Eleacutement Usage

Commentaire textuel qui donne des explications sur les options

Commente une ligne de parameacutetrage A deacute commenter si on veut activer loption

ltintituleacutegthellipltintituleacutegt

Encadre une description complexe (mecircme principe que pour les balises HTML ou la structure denregistrement en algorithmique)

On seacutepare diffeacuterentes valeurs par des espaces

Approche modulairePour eacuteviter dencombrer un fichier de configuration on a recours agrave une externalisation (comme on le fait pour le CSS qui sort la mise en page du HTML) On creacutee donc des fichiers externes qui ne prennent en compte quune partie de la configuration et on y fait appel dans un fichier central gracircce agrave la clause include

Exemple pour apache2conf inclue les fichiers de configuration contenus dans le sous-dossier confdinclude confd inclue les deacuteclarations dhocirctes virtuels contenus dans le sous-dossier sites-enabledinclude sites-enabled Inclue la liste des ports deacutecoute contenue dans le fichier portsconf include portsconf

7

Exemple pour DNSLe fichier de base du service Bind est namedconf dont le contenu est include etcbindnamedconfoptions options de configuration du serveurinclude etcbindnamedconflocal zones geacutereacutees par le serveurinclude etcbindnamedconfdefault-zones zones par deacutefaut (localhost reacutesolution inverse etc)

Nettoyage des fichiers et VersionningPour rendre la lecture des fichiers de configuration aiseacutee on eacutepure leur contenu en supprimant toute option non utiliseacutee tout commentaire inutileDe maniegravere agrave pouvoir revenir agrave la situation initiale on a coutume de faire une copie dun fichier de configuration avant de le modifier On utilise la commande cp pour copier un fichier vers un double avec un nouveau nom cp etcapache2apache2conf etcapache2apache2old1

EDITEUR VI

Pour manipuler les fichiers systegravemes qui sont des fichiers texte il est neacutecessaire de recourir agrave un eacutediteur de texte Mecircme quand aucune interface graphique nest disponible (et les linuxiens purs de durs diront quen toute circonstance) un outil rudimentaire bien quoffrant dinnombrables possibiliteacutes permet toute manipulation sur un fichier texte leacutediteur vi Le mode commande (auquel on revient en appuyant Echap) propose diverses actions dont les plus utiles sont preacutesenteacutees ci-dessous

action commande remarques

inseacuterer du texte i Passe leacutediteur en mode insertion Taper agrave nouveau i (ou Echap) pour repasser en mode commandeattention les flegraveches sont deacutesactiveacutees pour les deacuteplacements

supprimer une ligne dd Ces commandes ne marchent pas si on est en mode insertion

supprimer le caractegravere sous le curseur

x

supprimer le caractegravere agrave gauche du curseur

X

enregistrer les modifications w

quitter vi q

enregistrer et quitter wq

quitter sans enregistrer q Il ny a pas dinvite agrave confirmer

Rechercher du texte vers le bas du fichier

texte_chercheacute On tapera agrave nouveau pour chercher la prochaine occurrence

Rechercher du texte en arriegravere texte_chercheacute On tapera agrave nouveau pour chercher loccurrence preacuteceacutedente

Des versions un peu plus riches sont disponibles qui proposent des menus accessibles agrave partir du clavier vim nano pico

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 2: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

2

ContenuDOCUMENTATION TECHNIQUE Installer des applications sous Linux1

Description de la ressource 1FICHE 1 LINUX QUELQUES GENERALITES3

PRESENTATION 3UTILISATION DU SHELL 3ARBORESCENCE DES FICHIERS3CONFIGURATION RESEAU51 Configuration de ladressage statique (IP fixe) 52 Configuration de ladressage dynamique (DHCP) 53 Configuration du routage 54 Configuration du client DNS5PAQUETAGES ET SERVICES5UTILISATION DES FICHIERS DE CONFIGURATION6EDITEUR VI7

FICHE 2 DNS 8PRESENTATION 8PROCEDURES8CONFIGURATION SERVEUR DNS 81 Serveur Autoriteacute 92 Serveur secondaire ou esclave 113 Serveur de zone deacuteleacutegueacute 114 Test des configurations12CLIENT ET TEST12Source 13

FICHE 3 SERVEUR WEB APACHE 14PRESENTATION 14PROCEDURES14SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES151 - Installation et reacutepertoires 152 - Fichier apache2conf 15SECURISATION DES ACCES (htaccess) 18Sources internet 19

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL 20PRESENTATION 20PROCEDURES20MYSQL SANS INTERFACE GRAPHIQUE 20MIGRATION DE BASE DE DONNEES21

FICHE 5 SERVEUR FTP (ProFTP)23PRESENTATION 23PROCEDURES23CONFIGURATION DE BASE 24Configuration du service 25Configuration des partages25PROFTP ET AUTHENTIFICATION DEPORTEE 27CLIENT FTP27ANNEXE Script pour la creacuteation de la base28Source internet29

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS 30PRESENTATION 30PROCEDURE 31MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL32CONFIGURATION DAPACHE AVEC SSLTLS33CONFIGURATION DE ProFTP AVEC SSLTLS 34Sources35

3

FICHE 1 LINUX QUELQUES GENERALITES

PRESENTATION

Lutilisation de lenvironnement Linux passe par la maicirctrise des eacuteleacutements suivants lutilisation du shell larborescence des fichiers du SGF (etc var hellip) la configuration des options reacuteseau (IP DHCP DNS RoutagePasserelle) linstallation et la gestion du fonctionnement des services (apt) lutilisation et le parameacutetrage de fichiers de configuration

PrincipesAvant toute installation vous devez

mettre agrave jour les paquetages lors de la premiegravere utilisation de lOS apt-get update utiliser un compte systegraveme sudo commande | sudo su avant tout parameacutetrage faire une copie de sauvegarde des fichiers de configuration qui

seront modifieacutes

Apregraves toute modification vous devez recharger le service (service nom_service reload) ou le redeacutemarrer complegravetement ce qui interrompt les connexions eacutetablies sur le serveur (service nom_service restart)

UTILISATION DU SHELL

Environnement shellSous Linux lutilisation de la ligne de commande se fait dans un environnement riche (le shell) qui propose des fonctions de compleacutetion (il complegravete) gracircce agrave la touche tabulation

Mode administrateurLes commandes dadministration qui doivent ecirctre exeacutecuteacutees en mode administrateur seront preacutefixeacutees par la commande sudoOn peut aussi passer complegravetement en mode superutilisateur en tapant sudo su Il y a un risque car les manipulations opeacutereacutees le sont sans demande de confirmation

Lancement dun processus autonomeLorsquon lance un processus (par exemple un eacutediteur) depuis le shell ce processus fils prend la main et on ne pourra utiliser le shell quapregraves avoir fermeacute le processus fils

On peut lancer un processus autonome deacuteconnecteacute du shell en finissant la commande par amp rootmonLinux gedit etcresolvconf amp

Aide sur une commandeOn obtient de laide ponctuelle en utilisant loption --help (ex mkdir --help) ou de laide deacutetailleacutee en consultant le manuel (man nomCommande)

ARBORESCENCE DES FICHIERS

Contrairement agrave Windows Linux ne propose pas un ensemble de lettres de lecteur pour les diffeacuterentes partitionsAgrave la place on trouve une arborescence unique () agrave laquelle sont rattacheacutes les diffeacuterentes partitions lecteurs physiques (disquette CDROM etc) et lecteurs USB Pour qursquoun lecteur soit visible dans cette arborescence il faut qursquoil y ait eacuteteacute raccrocheacute (monteacute) par la commande mount Ce terme de monter un lecteur vient de lrsquoeacutepoque ougrave il fallait drsquoabord installer physiquement le disque avant de le mettre en route Lrsquooutil de navigation en interface graphique est nommeacute nautilus Pour manipuler les droits et proprieacutetaires on peut lrsquoutiliser en mode superutilisateur

4

LarborescenceOn trouvera principalement dans cette arborescence

Lieu Contenu

etc programmes et fichiers de configuration principaux

initd Endroit ougrave se trouvent les principales applications (un peu eacutequivalent au Program Files de Windows)

dev drivers de peacuteripheacuteriques

media Montage des reacutepertoires pointant sur des uniteacutes de stockage et lecteurs disque amoviblesApparaicirct parfois sous le nom mount ou mnt dans dautres distributions

home Stockage des reacutepertoires de travail des utilisateurs (eacutequivalent de cDocuments and settings)

bin Contient les principales commandes en ligne

var Fichiers et donneacutees variables (donneacutees dynamiques fichiers temporaires pages web etc) pour les applications

usr Fichiers de configuration propres agrave la session de lutilisateur

Navigation dans larborescenceVoici quelques commandes pour naviguer dans les reacutepertoires et explorer le systegraveme de fichiers

Action Commande Options

Afficher le contenu dun reacutepertoire

ls -l affiche lutilisateur et le groupe proprieacutetaires ainsi que les droits daccegraves-R affiche le contenu du reacutepertoire et des sous-reacutepertoires-all comme -l y compris pour les fichiers cacheacutes

Creacuteer un reacutepertoire mkdir nomRepertoire

Supprimer un reacutepertoire rmdir nomRepertoire Le reacutepertoire doit ecirctre vide

Supprimer un fichier rm nomFichier

Se deacuteplacer dans larborescence

cd retourne agrave la racine remonte dun niveau dans larborescencenomRepertoire descend agrave linteacuterieur de larborescence

Fichiers droits daccegraves proprieacutetaireCommandes pour deacutefinir ces autorisations et deacuteterminer le proprieacutetaire dun fichier ou reacutepertoire

action commande remarques

Visualiser les droits dun eacuteleacutement ls -lls -all

Affiche les fichiers courantsAffiche les fichiers courants et systegraveme (cacheacutes)

Modifier le proprieacutetaire (change owner)

chown Usage chown nom_utilisateur nom_fichier

Modifier les droits chmod Usage chmod nvx_droits nom_fichierles nvx_droits sont une valeur numeacuterique de trois nombres repreacutesentant en binaire les droits pour lutilisateur son groupe et les autres Par exemple 7= (111)2 tous les droits (RWX)4 = (100)2 droit de lecture seule (RWX)

5

CONFIGURATION RESEAU

1 Configuration de ladressage statique (IP fixe)

La configuration de ladresse IP du masque ou lactivation deacutesactivation de la carte reacuteseau se fait par la commande ifconfigifconfig nom_carte [adresse_ip] [netmask valeur_masque] [up|down]

2 Configuration de ladressage dynamique (DHCP)

Pour obtenir une adresse IP dun serveur DHCP ou pour renouveler un bail on utilisera la commandedhclient nom_carte

3 Configuration du routage

La configuration du routage (et donc de la passerelle par deacutefaut pour un poste) utilise la commande route

Ajouter une ligne dans la tableroute add adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Ajout dune route par deacutefaut (donc dune passerelle)route add default [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Supprimer une ligne dans une tableroute del adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Afficher la table de routage route ndashe

4 Configuration du client DNS

La configuration des serveurs DNS que le client devra interroger se fait dans le fichier etcresolvconf

On y ajoute les adresses des serveurs sous la forme ci-contre

PAQUETAGES ET SERVICES

Gestion de paquetagesLinstallation dapplications systegraveme (DNS DHCP serveur Web etc) sous Linux neacutecessite les droits administrateur La commande laquo apt-get raquo est le gestionnaire de paquetages (on pourra aussi utiliser leacutequivalent aptitude ou le logiciel en interface graphique synaptic) Il permet diverses manipulations selon les options utiliseacutees parmi lesquelles

update met agrave jour les deacutepocircts de paquetages install paquetage1[paquetage2 paquetage3 hellip] installer un ou plusieurs paquetages remove paquetage1[paquetage2 paquetage3 hellip] supprime un ou plusieurs paquetages Les

fichiers ne sont pas supprimeacutes y compris les configurations de linstallation autoremove supprime les paquetages installeacutes automatiquement et qui nont plus dutiliteacute

ou les eacuteleacutements supprimeacutes par loption remove et qui sont encore preacutesents dans le systegraveme

6

Gestion des servicesUne fois les paquetages installeacutes les applications systegravemes (ou services) preacutesents dans etcinitdpeuvent ecirctre

deacutemarreacutes start arrecircteacutes stop re-deacutemarreacutes (ils sont dabord arrecircteacutes puis deacutemarreacutes) restart leurs fichiers de configuration peuvent ecirctre rechargeacutes (eacutevite linterruption du service pour les

utilisateurs deacutejagrave connecteacutes) reload

Exemple etcinitdapache2 restart etcinitdbind9 reload

On peut aussi connaicirctre le statut (running failed stopped etc) dun service en utilisant loption status etcinitdmysql status

Beaucoup de services peuvent ecirctre geacutereacutes avec la commande service service apache2 restart service bind9 reload service mysql status

UTILISATION DES FICHIERS DE CONFIGURATION

Contrairement agrave Windows ougrave les configurations des services se passent par interface graphique et sont stockeacutees dans la base de registres Linux utilise encore des fichiers texte Voici quelques eacuteleacutements pour comprendre leur fonctionnement et utiliser au mieux une approche modulaire

ContenuSyntaxeUn fichier de configuration est eacuteditable agrave partir dun utilitaire en mode texte (vi vim nano pico ou autre voir annexe pour quelques commandes) ou un eacutediteur plus complet si on dispose dune interface graphique (par exemple gedit sous Ubuntu)Les eacuteleacutements de syntaxe suivants sont tregraves courant

Eleacutement Usage

Commentaire textuel qui donne des explications sur les options

Commente une ligne de parameacutetrage A deacute commenter si on veut activer loption

ltintituleacutegthellipltintituleacutegt

Encadre une description complexe (mecircme principe que pour les balises HTML ou la structure denregistrement en algorithmique)

On seacutepare diffeacuterentes valeurs par des espaces

Approche modulairePour eacuteviter dencombrer un fichier de configuration on a recours agrave une externalisation (comme on le fait pour le CSS qui sort la mise en page du HTML) On creacutee donc des fichiers externes qui ne prennent en compte quune partie de la configuration et on y fait appel dans un fichier central gracircce agrave la clause include

Exemple pour apache2conf inclue les fichiers de configuration contenus dans le sous-dossier confdinclude confd inclue les deacuteclarations dhocirctes virtuels contenus dans le sous-dossier sites-enabledinclude sites-enabled Inclue la liste des ports deacutecoute contenue dans le fichier portsconf include portsconf

7

Exemple pour DNSLe fichier de base du service Bind est namedconf dont le contenu est include etcbindnamedconfoptions options de configuration du serveurinclude etcbindnamedconflocal zones geacutereacutees par le serveurinclude etcbindnamedconfdefault-zones zones par deacutefaut (localhost reacutesolution inverse etc)

Nettoyage des fichiers et VersionningPour rendre la lecture des fichiers de configuration aiseacutee on eacutepure leur contenu en supprimant toute option non utiliseacutee tout commentaire inutileDe maniegravere agrave pouvoir revenir agrave la situation initiale on a coutume de faire une copie dun fichier de configuration avant de le modifier On utilise la commande cp pour copier un fichier vers un double avec un nouveau nom cp etcapache2apache2conf etcapache2apache2old1

EDITEUR VI

Pour manipuler les fichiers systegravemes qui sont des fichiers texte il est neacutecessaire de recourir agrave un eacutediteur de texte Mecircme quand aucune interface graphique nest disponible (et les linuxiens purs de durs diront quen toute circonstance) un outil rudimentaire bien quoffrant dinnombrables possibiliteacutes permet toute manipulation sur un fichier texte leacutediteur vi Le mode commande (auquel on revient en appuyant Echap) propose diverses actions dont les plus utiles sont preacutesenteacutees ci-dessous

action commande remarques

inseacuterer du texte i Passe leacutediteur en mode insertion Taper agrave nouveau i (ou Echap) pour repasser en mode commandeattention les flegraveches sont deacutesactiveacutees pour les deacuteplacements

supprimer une ligne dd Ces commandes ne marchent pas si on est en mode insertion

supprimer le caractegravere sous le curseur

x

supprimer le caractegravere agrave gauche du curseur

X

enregistrer les modifications w

quitter vi q

enregistrer et quitter wq

quitter sans enregistrer q Il ny a pas dinvite agrave confirmer

Rechercher du texte vers le bas du fichier

texte_chercheacute On tapera agrave nouveau pour chercher la prochaine occurrence

Rechercher du texte en arriegravere texte_chercheacute On tapera agrave nouveau pour chercher loccurrence preacuteceacutedente

Des versions un peu plus riches sont disponibles qui proposent des menus accessibles agrave partir du clavier vim nano pico

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 3: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

3

FICHE 1 LINUX QUELQUES GENERALITES

PRESENTATION

Lutilisation de lenvironnement Linux passe par la maicirctrise des eacuteleacutements suivants lutilisation du shell larborescence des fichiers du SGF (etc var hellip) la configuration des options reacuteseau (IP DHCP DNS RoutagePasserelle) linstallation et la gestion du fonctionnement des services (apt) lutilisation et le parameacutetrage de fichiers de configuration

PrincipesAvant toute installation vous devez

mettre agrave jour les paquetages lors de la premiegravere utilisation de lOS apt-get update utiliser un compte systegraveme sudo commande | sudo su avant tout parameacutetrage faire une copie de sauvegarde des fichiers de configuration qui

seront modifieacutes

Apregraves toute modification vous devez recharger le service (service nom_service reload) ou le redeacutemarrer complegravetement ce qui interrompt les connexions eacutetablies sur le serveur (service nom_service restart)

UTILISATION DU SHELL

Environnement shellSous Linux lutilisation de la ligne de commande se fait dans un environnement riche (le shell) qui propose des fonctions de compleacutetion (il complegravete) gracircce agrave la touche tabulation

Mode administrateurLes commandes dadministration qui doivent ecirctre exeacutecuteacutees en mode administrateur seront preacutefixeacutees par la commande sudoOn peut aussi passer complegravetement en mode superutilisateur en tapant sudo su Il y a un risque car les manipulations opeacutereacutees le sont sans demande de confirmation

Lancement dun processus autonomeLorsquon lance un processus (par exemple un eacutediteur) depuis le shell ce processus fils prend la main et on ne pourra utiliser le shell quapregraves avoir fermeacute le processus fils

On peut lancer un processus autonome deacuteconnecteacute du shell en finissant la commande par amp rootmonLinux gedit etcresolvconf amp

Aide sur une commandeOn obtient de laide ponctuelle en utilisant loption --help (ex mkdir --help) ou de laide deacutetailleacutee en consultant le manuel (man nomCommande)

ARBORESCENCE DES FICHIERS

Contrairement agrave Windows Linux ne propose pas un ensemble de lettres de lecteur pour les diffeacuterentes partitionsAgrave la place on trouve une arborescence unique () agrave laquelle sont rattacheacutes les diffeacuterentes partitions lecteurs physiques (disquette CDROM etc) et lecteurs USB Pour qursquoun lecteur soit visible dans cette arborescence il faut qursquoil y ait eacuteteacute raccrocheacute (monteacute) par la commande mount Ce terme de monter un lecteur vient de lrsquoeacutepoque ougrave il fallait drsquoabord installer physiquement le disque avant de le mettre en route Lrsquooutil de navigation en interface graphique est nommeacute nautilus Pour manipuler les droits et proprieacutetaires on peut lrsquoutiliser en mode superutilisateur

4

LarborescenceOn trouvera principalement dans cette arborescence

Lieu Contenu

etc programmes et fichiers de configuration principaux

initd Endroit ougrave se trouvent les principales applications (un peu eacutequivalent au Program Files de Windows)

dev drivers de peacuteripheacuteriques

media Montage des reacutepertoires pointant sur des uniteacutes de stockage et lecteurs disque amoviblesApparaicirct parfois sous le nom mount ou mnt dans dautres distributions

home Stockage des reacutepertoires de travail des utilisateurs (eacutequivalent de cDocuments and settings)

bin Contient les principales commandes en ligne

var Fichiers et donneacutees variables (donneacutees dynamiques fichiers temporaires pages web etc) pour les applications

usr Fichiers de configuration propres agrave la session de lutilisateur

Navigation dans larborescenceVoici quelques commandes pour naviguer dans les reacutepertoires et explorer le systegraveme de fichiers

Action Commande Options

Afficher le contenu dun reacutepertoire

ls -l affiche lutilisateur et le groupe proprieacutetaires ainsi que les droits daccegraves-R affiche le contenu du reacutepertoire et des sous-reacutepertoires-all comme -l y compris pour les fichiers cacheacutes

Creacuteer un reacutepertoire mkdir nomRepertoire

Supprimer un reacutepertoire rmdir nomRepertoire Le reacutepertoire doit ecirctre vide

Supprimer un fichier rm nomFichier

Se deacuteplacer dans larborescence

cd retourne agrave la racine remonte dun niveau dans larborescencenomRepertoire descend agrave linteacuterieur de larborescence

Fichiers droits daccegraves proprieacutetaireCommandes pour deacutefinir ces autorisations et deacuteterminer le proprieacutetaire dun fichier ou reacutepertoire

action commande remarques

Visualiser les droits dun eacuteleacutement ls -lls -all

Affiche les fichiers courantsAffiche les fichiers courants et systegraveme (cacheacutes)

Modifier le proprieacutetaire (change owner)

chown Usage chown nom_utilisateur nom_fichier

Modifier les droits chmod Usage chmod nvx_droits nom_fichierles nvx_droits sont une valeur numeacuterique de trois nombres repreacutesentant en binaire les droits pour lutilisateur son groupe et les autres Par exemple 7= (111)2 tous les droits (RWX)4 = (100)2 droit de lecture seule (RWX)

5

CONFIGURATION RESEAU

1 Configuration de ladressage statique (IP fixe)

La configuration de ladresse IP du masque ou lactivation deacutesactivation de la carte reacuteseau se fait par la commande ifconfigifconfig nom_carte [adresse_ip] [netmask valeur_masque] [up|down]

2 Configuration de ladressage dynamique (DHCP)

Pour obtenir une adresse IP dun serveur DHCP ou pour renouveler un bail on utilisera la commandedhclient nom_carte

3 Configuration du routage

La configuration du routage (et donc de la passerelle par deacutefaut pour un poste) utilise la commande route

Ajouter une ligne dans la tableroute add adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Ajout dune route par deacutefaut (donc dune passerelle)route add default [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Supprimer une ligne dans une tableroute del adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Afficher la table de routage route ndashe

4 Configuration du client DNS

La configuration des serveurs DNS que le client devra interroger se fait dans le fichier etcresolvconf

On y ajoute les adresses des serveurs sous la forme ci-contre

PAQUETAGES ET SERVICES

Gestion de paquetagesLinstallation dapplications systegraveme (DNS DHCP serveur Web etc) sous Linux neacutecessite les droits administrateur La commande laquo apt-get raquo est le gestionnaire de paquetages (on pourra aussi utiliser leacutequivalent aptitude ou le logiciel en interface graphique synaptic) Il permet diverses manipulations selon les options utiliseacutees parmi lesquelles

update met agrave jour les deacutepocircts de paquetages install paquetage1[paquetage2 paquetage3 hellip] installer un ou plusieurs paquetages remove paquetage1[paquetage2 paquetage3 hellip] supprime un ou plusieurs paquetages Les

fichiers ne sont pas supprimeacutes y compris les configurations de linstallation autoremove supprime les paquetages installeacutes automatiquement et qui nont plus dutiliteacute

ou les eacuteleacutements supprimeacutes par loption remove et qui sont encore preacutesents dans le systegraveme

6

Gestion des servicesUne fois les paquetages installeacutes les applications systegravemes (ou services) preacutesents dans etcinitdpeuvent ecirctre

deacutemarreacutes start arrecircteacutes stop re-deacutemarreacutes (ils sont dabord arrecircteacutes puis deacutemarreacutes) restart leurs fichiers de configuration peuvent ecirctre rechargeacutes (eacutevite linterruption du service pour les

utilisateurs deacutejagrave connecteacutes) reload

Exemple etcinitdapache2 restart etcinitdbind9 reload

On peut aussi connaicirctre le statut (running failed stopped etc) dun service en utilisant loption status etcinitdmysql status

Beaucoup de services peuvent ecirctre geacutereacutes avec la commande service service apache2 restart service bind9 reload service mysql status

UTILISATION DES FICHIERS DE CONFIGURATION

Contrairement agrave Windows ougrave les configurations des services se passent par interface graphique et sont stockeacutees dans la base de registres Linux utilise encore des fichiers texte Voici quelques eacuteleacutements pour comprendre leur fonctionnement et utiliser au mieux une approche modulaire

ContenuSyntaxeUn fichier de configuration est eacuteditable agrave partir dun utilitaire en mode texte (vi vim nano pico ou autre voir annexe pour quelques commandes) ou un eacutediteur plus complet si on dispose dune interface graphique (par exemple gedit sous Ubuntu)Les eacuteleacutements de syntaxe suivants sont tregraves courant

Eleacutement Usage

Commentaire textuel qui donne des explications sur les options

Commente une ligne de parameacutetrage A deacute commenter si on veut activer loption

ltintituleacutegthellipltintituleacutegt

Encadre une description complexe (mecircme principe que pour les balises HTML ou la structure denregistrement en algorithmique)

On seacutepare diffeacuterentes valeurs par des espaces

Approche modulairePour eacuteviter dencombrer un fichier de configuration on a recours agrave une externalisation (comme on le fait pour le CSS qui sort la mise en page du HTML) On creacutee donc des fichiers externes qui ne prennent en compte quune partie de la configuration et on y fait appel dans un fichier central gracircce agrave la clause include

Exemple pour apache2conf inclue les fichiers de configuration contenus dans le sous-dossier confdinclude confd inclue les deacuteclarations dhocirctes virtuels contenus dans le sous-dossier sites-enabledinclude sites-enabled Inclue la liste des ports deacutecoute contenue dans le fichier portsconf include portsconf

7

Exemple pour DNSLe fichier de base du service Bind est namedconf dont le contenu est include etcbindnamedconfoptions options de configuration du serveurinclude etcbindnamedconflocal zones geacutereacutees par le serveurinclude etcbindnamedconfdefault-zones zones par deacutefaut (localhost reacutesolution inverse etc)

Nettoyage des fichiers et VersionningPour rendre la lecture des fichiers de configuration aiseacutee on eacutepure leur contenu en supprimant toute option non utiliseacutee tout commentaire inutileDe maniegravere agrave pouvoir revenir agrave la situation initiale on a coutume de faire une copie dun fichier de configuration avant de le modifier On utilise la commande cp pour copier un fichier vers un double avec un nouveau nom cp etcapache2apache2conf etcapache2apache2old1

EDITEUR VI

Pour manipuler les fichiers systegravemes qui sont des fichiers texte il est neacutecessaire de recourir agrave un eacutediteur de texte Mecircme quand aucune interface graphique nest disponible (et les linuxiens purs de durs diront quen toute circonstance) un outil rudimentaire bien quoffrant dinnombrables possibiliteacutes permet toute manipulation sur un fichier texte leacutediteur vi Le mode commande (auquel on revient en appuyant Echap) propose diverses actions dont les plus utiles sont preacutesenteacutees ci-dessous

action commande remarques

inseacuterer du texte i Passe leacutediteur en mode insertion Taper agrave nouveau i (ou Echap) pour repasser en mode commandeattention les flegraveches sont deacutesactiveacutees pour les deacuteplacements

supprimer une ligne dd Ces commandes ne marchent pas si on est en mode insertion

supprimer le caractegravere sous le curseur

x

supprimer le caractegravere agrave gauche du curseur

X

enregistrer les modifications w

quitter vi q

enregistrer et quitter wq

quitter sans enregistrer q Il ny a pas dinvite agrave confirmer

Rechercher du texte vers le bas du fichier

texte_chercheacute On tapera agrave nouveau pour chercher la prochaine occurrence

Rechercher du texte en arriegravere texte_chercheacute On tapera agrave nouveau pour chercher loccurrence preacuteceacutedente

Des versions un peu plus riches sont disponibles qui proposent des menus accessibles agrave partir du clavier vim nano pico

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 4: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

4

LarborescenceOn trouvera principalement dans cette arborescence

Lieu Contenu

etc programmes et fichiers de configuration principaux

initd Endroit ougrave se trouvent les principales applications (un peu eacutequivalent au Program Files de Windows)

dev drivers de peacuteripheacuteriques

media Montage des reacutepertoires pointant sur des uniteacutes de stockage et lecteurs disque amoviblesApparaicirct parfois sous le nom mount ou mnt dans dautres distributions

home Stockage des reacutepertoires de travail des utilisateurs (eacutequivalent de cDocuments and settings)

bin Contient les principales commandes en ligne

var Fichiers et donneacutees variables (donneacutees dynamiques fichiers temporaires pages web etc) pour les applications

usr Fichiers de configuration propres agrave la session de lutilisateur

Navigation dans larborescenceVoici quelques commandes pour naviguer dans les reacutepertoires et explorer le systegraveme de fichiers

Action Commande Options

Afficher le contenu dun reacutepertoire

ls -l affiche lutilisateur et le groupe proprieacutetaires ainsi que les droits daccegraves-R affiche le contenu du reacutepertoire et des sous-reacutepertoires-all comme -l y compris pour les fichiers cacheacutes

Creacuteer un reacutepertoire mkdir nomRepertoire

Supprimer un reacutepertoire rmdir nomRepertoire Le reacutepertoire doit ecirctre vide

Supprimer un fichier rm nomFichier

Se deacuteplacer dans larborescence

cd retourne agrave la racine remonte dun niveau dans larborescencenomRepertoire descend agrave linteacuterieur de larborescence

Fichiers droits daccegraves proprieacutetaireCommandes pour deacutefinir ces autorisations et deacuteterminer le proprieacutetaire dun fichier ou reacutepertoire

action commande remarques

Visualiser les droits dun eacuteleacutement ls -lls -all

Affiche les fichiers courantsAffiche les fichiers courants et systegraveme (cacheacutes)

Modifier le proprieacutetaire (change owner)

chown Usage chown nom_utilisateur nom_fichier

Modifier les droits chmod Usage chmod nvx_droits nom_fichierles nvx_droits sont une valeur numeacuterique de trois nombres repreacutesentant en binaire les droits pour lutilisateur son groupe et les autres Par exemple 7= (111)2 tous les droits (RWX)4 = (100)2 droit de lecture seule (RWX)

5

CONFIGURATION RESEAU

1 Configuration de ladressage statique (IP fixe)

La configuration de ladresse IP du masque ou lactivation deacutesactivation de la carte reacuteseau se fait par la commande ifconfigifconfig nom_carte [adresse_ip] [netmask valeur_masque] [up|down]

2 Configuration de ladressage dynamique (DHCP)

Pour obtenir une adresse IP dun serveur DHCP ou pour renouveler un bail on utilisera la commandedhclient nom_carte

3 Configuration du routage

La configuration du routage (et donc de la passerelle par deacutefaut pour un poste) utilise la commande route

Ajouter une ligne dans la tableroute add adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Ajout dune route par deacutefaut (donc dune passerelle)route add default [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Supprimer une ligne dans une tableroute del adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Afficher la table de routage route ndashe

4 Configuration du client DNS

La configuration des serveurs DNS que le client devra interroger se fait dans le fichier etcresolvconf

On y ajoute les adresses des serveurs sous la forme ci-contre

PAQUETAGES ET SERVICES

Gestion de paquetagesLinstallation dapplications systegraveme (DNS DHCP serveur Web etc) sous Linux neacutecessite les droits administrateur La commande laquo apt-get raquo est le gestionnaire de paquetages (on pourra aussi utiliser leacutequivalent aptitude ou le logiciel en interface graphique synaptic) Il permet diverses manipulations selon les options utiliseacutees parmi lesquelles

update met agrave jour les deacutepocircts de paquetages install paquetage1[paquetage2 paquetage3 hellip] installer un ou plusieurs paquetages remove paquetage1[paquetage2 paquetage3 hellip] supprime un ou plusieurs paquetages Les

fichiers ne sont pas supprimeacutes y compris les configurations de linstallation autoremove supprime les paquetages installeacutes automatiquement et qui nont plus dutiliteacute

ou les eacuteleacutements supprimeacutes par loption remove et qui sont encore preacutesents dans le systegraveme

6

Gestion des servicesUne fois les paquetages installeacutes les applications systegravemes (ou services) preacutesents dans etcinitdpeuvent ecirctre

deacutemarreacutes start arrecircteacutes stop re-deacutemarreacutes (ils sont dabord arrecircteacutes puis deacutemarreacutes) restart leurs fichiers de configuration peuvent ecirctre rechargeacutes (eacutevite linterruption du service pour les

utilisateurs deacutejagrave connecteacutes) reload

Exemple etcinitdapache2 restart etcinitdbind9 reload

On peut aussi connaicirctre le statut (running failed stopped etc) dun service en utilisant loption status etcinitdmysql status

Beaucoup de services peuvent ecirctre geacutereacutes avec la commande service service apache2 restart service bind9 reload service mysql status

UTILISATION DES FICHIERS DE CONFIGURATION

Contrairement agrave Windows ougrave les configurations des services se passent par interface graphique et sont stockeacutees dans la base de registres Linux utilise encore des fichiers texte Voici quelques eacuteleacutements pour comprendre leur fonctionnement et utiliser au mieux une approche modulaire

ContenuSyntaxeUn fichier de configuration est eacuteditable agrave partir dun utilitaire en mode texte (vi vim nano pico ou autre voir annexe pour quelques commandes) ou un eacutediteur plus complet si on dispose dune interface graphique (par exemple gedit sous Ubuntu)Les eacuteleacutements de syntaxe suivants sont tregraves courant

Eleacutement Usage

Commentaire textuel qui donne des explications sur les options

Commente une ligne de parameacutetrage A deacute commenter si on veut activer loption

ltintituleacutegthellipltintituleacutegt

Encadre une description complexe (mecircme principe que pour les balises HTML ou la structure denregistrement en algorithmique)

On seacutepare diffeacuterentes valeurs par des espaces

Approche modulairePour eacuteviter dencombrer un fichier de configuration on a recours agrave une externalisation (comme on le fait pour le CSS qui sort la mise en page du HTML) On creacutee donc des fichiers externes qui ne prennent en compte quune partie de la configuration et on y fait appel dans un fichier central gracircce agrave la clause include

Exemple pour apache2conf inclue les fichiers de configuration contenus dans le sous-dossier confdinclude confd inclue les deacuteclarations dhocirctes virtuels contenus dans le sous-dossier sites-enabledinclude sites-enabled Inclue la liste des ports deacutecoute contenue dans le fichier portsconf include portsconf

7

Exemple pour DNSLe fichier de base du service Bind est namedconf dont le contenu est include etcbindnamedconfoptions options de configuration du serveurinclude etcbindnamedconflocal zones geacutereacutees par le serveurinclude etcbindnamedconfdefault-zones zones par deacutefaut (localhost reacutesolution inverse etc)

Nettoyage des fichiers et VersionningPour rendre la lecture des fichiers de configuration aiseacutee on eacutepure leur contenu en supprimant toute option non utiliseacutee tout commentaire inutileDe maniegravere agrave pouvoir revenir agrave la situation initiale on a coutume de faire une copie dun fichier de configuration avant de le modifier On utilise la commande cp pour copier un fichier vers un double avec un nouveau nom cp etcapache2apache2conf etcapache2apache2old1

EDITEUR VI

Pour manipuler les fichiers systegravemes qui sont des fichiers texte il est neacutecessaire de recourir agrave un eacutediteur de texte Mecircme quand aucune interface graphique nest disponible (et les linuxiens purs de durs diront quen toute circonstance) un outil rudimentaire bien quoffrant dinnombrables possibiliteacutes permet toute manipulation sur un fichier texte leacutediteur vi Le mode commande (auquel on revient en appuyant Echap) propose diverses actions dont les plus utiles sont preacutesenteacutees ci-dessous

action commande remarques

inseacuterer du texte i Passe leacutediteur en mode insertion Taper agrave nouveau i (ou Echap) pour repasser en mode commandeattention les flegraveches sont deacutesactiveacutees pour les deacuteplacements

supprimer une ligne dd Ces commandes ne marchent pas si on est en mode insertion

supprimer le caractegravere sous le curseur

x

supprimer le caractegravere agrave gauche du curseur

X

enregistrer les modifications w

quitter vi q

enregistrer et quitter wq

quitter sans enregistrer q Il ny a pas dinvite agrave confirmer

Rechercher du texte vers le bas du fichier

texte_chercheacute On tapera agrave nouveau pour chercher la prochaine occurrence

Rechercher du texte en arriegravere texte_chercheacute On tapera agrave nouveau pour chercher loccurrence preacuteceacutedente

Des versions un peu plus riches sont disponibles qui proposent des menus accessibles agrave partir du clavier vim nano pico

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 5: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

5

CONFIGURATION RESEAU

1 Configuration de ladressage statique (IP fixe)

La configuration de ladresse IP du masque ou lactivation deacutesactivation de la carte reacuteseau se fait par la commande ifconfigifconfig nom_carte [adresse_ip] [netmask valeur_masque] [up|down]

2 Configuration de ladressage dynamique (DHCP)

Pour obtenir une adresse IP dun serveur DHCP ou pour renouveler un bail on utilisera la commandedhclient nom_carte

3 Configuration du routage

La configuration du routage (et donc de la passerelle par deacutefaut pour un poste) utilise la commande route

Ajouter une ligne dans la tableroute add adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Ajout dune route par deacutefaut (donc dune passerelle)route add default [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Supprimer une ligne dans une tableroute del adresse_reacuteseau [netmask valeur_masque] [gateway adresse_passerelle] [metric valeur]

Afficher la table de routage route ndashe

4 Configuration du client DNS

La configuration des serveurs DNS que le client devra interroger se fait dans le fichier etcresolvconf

On y ajoute les adresses des serveurs sous la forme ci-contre

PAQUETAGES ET SERVICES

Gestion de paquetagesLinstallation dapplications systegraveme (DNS DHCP serveur Web etc) sous Linux neacutecessite les droits administrateur La commande laquo apt-get raquo est le gestionnaire de paquetages (on pourra aussi utiliser leacutequivalent aptitude ou le logiciel en interface graphique synaptic) Il permet diverses manipulations selon les options utiliseacutees parmi lesquelles

update met agrave jour les deacutepocircts de paquetages install paquetage1[paquetage2 paquetage3 hellip] installer un ou plusieurs paquetages remove paquetage1[paquetage2 paquetage3 hellip] supprime un ou plusieurs paquetages Les

fichiers ne sont pas supprimeacutes y compris les configurations de linstallation autoremove supprime les paquetages installeacutes automatiquement et qui nont plus dutiliteacute

ou les eacuteleacutements supprimeacutes par loption remove et qui sont encore preacutesents dans le systegraveme

6

Gestion des servicesUne fois les paquetages installeacutes les applications systegravemes (ou services) preacutesents dans etcinitdpeuvent ecirctre

deacutemarreacutes start arrecircteacutes stop re-deacutemarreacutes (ils sont dabord arrecircteacutes puis deacutemarreacutes) restart leurs fichiers de configuration peuvent ecirctre rechargeacutes (eacutevite linterruption du service pour les

utilisateurs deacutejagrave connecteacutes) reload

Exemple etcinitdapache2 restart etcinitdbind9 reload

On peut aussi connaicirctre le statut (running failed stopped etc) dun service en utilisant loption status etcinitdmysql status

Beaucoup de services peuvent ecirctre geacutereacutes avec la commande service service apache2 restart service bind9 reload service mysql status

UTILISATION DES FICHIERS DE CONFIGURATION

Contrairement agrave Windows ougrave les configurations des services se passent par interface graphique et sont stockeacutees dans la base de registres Linux utilise encore des fichiers texte Voici quelques eacuteleacutements pour comprendre leur fonctionnement et utiliser au mieux une approche modulaire

ContenuSyntaxeUn fichier de configuration est eacuteditable agrave partir dun utilitaire en mode texte (vi vim nano pico ou autre voir annexe pour quelques commandes) ou un eacutediteur plus complet si on dispose dune interface graphique (par exemple gedit sous Ubuntu)Les eacuteleacutements de syntaxe suivants sont tregraves courant

Eleacutement Usage

Commentaire textuel qui donne des explications sur les options

Commente une ligne de parameacutetrage A deacute commenter si on veut activer loption

ltintituleacutegthellipltintituleacutegt

Encadre une description complexe (mecircme principe que pour les balises HTML ou la structure denregistrement en algorithmique)

On seacutepare diffeacuterentes valeurs par des espaces

Approche modulairePour eacuteviter dencombrer un fichier de configuration on a recours agrave une externalisation (comme on le fait pour le CSS qui sort la mise en page du HTML) On creacutee donc des fichiers externes qui ne prennent en compte quune partie de la configuration et on y fait appel dans un fichier central gracircce agrave la clause include

Exemple pour apache2conf inclue les fichiers de configuration contenus dans le sous-dossier confdinclude confd inclue les deacuteclarations dhocirctes virtuels contenus dans le sous-dossier sites-enabledinclude sites-enabled Inclue la liste des ports deacutecoute contenue dans le fichier portsconf include portsconf

7

Exemple pour DNSLe fichier de base du service Bind est namedconf dont le contenu est include etcbindnamedconfoptions options de configuration du serveurinclude etcbindnamedconflocal zones geacutereacutees par le serveurinclude etcbindnamedconfdefault-zones zones par deacutefaut (localhost reacutesolution inverse etc)

Nettoyage des fichiers et VersionningPour rendre la lecture des fichiers de configuration aiseacutee on eacutepure leur contenu en supprimant toute option non utiliseacutee tout commentaire inutileDe maniegravere agrave pouvoir revenir agrave la situation initiale on a coutume de faire une copie dun fichier de configuration avant de le modifier On utilise la commande cp pour copier un fichier vers un double avec un nouveau nom cp etcapache2apache2conf etcapache2apache2old1

EDITEUR VI

Pour manipuler les fichiers systegravemes qui sont des fichiers texte il est neacutecessaire de recourir agrave un eacutediteur de texte Mecircme quand aucune interface graphique nest disponible (et les linuxiens purs de durs diront quen toute circonstance) un outil rudimentaire bien quoffrant dinnombrables possibiliteacutes permet toute manipulation sur un fichier texte leacutediteur vi Le mode commande (auquel on revient en appuyant Echap) propose diverses actions dont les plus utiles sont preacutesenteacutees ci-dessous

action commande remarques

inseacuterer du texte i Passe leacutediteur en mode insertion Taper agrave nouveau i (ou Echap) pour repasser en mode commandeattention les flegraveches sont deacutesactiveacutees pour les deacuteplacements

supprimer une ligne dd Ces commandes ne marchent pas si on est en mode insertion

supprimer le caractegravere sous le curseur

x

supprimer le caractegravere agrave gauche du curseur

X

enregistrer les modifications w

quitter vi q

enregistrer et quitter wq

quitter sans enregistrer q Il ny a pas dinvite agrave confirmer

Rechercher du texte vers le bas du fichier

texte_chercheacute On tapera agrave nouveau pour chercher la prochaine occurrence

Rechercher du texte en arriegravere texte_chercheacute On tapera agrave nouveau pour chercher loccurrence preacuteceacutedente

Des versions un peu plus riches sont disponibles qui proposent des menus accessibles agrave partir du clavier vim nano pico

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 6: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

6

Gestion des servicesUne fois les paquetages installeacutes les applications systegravemes (ou services) preacutesents dans etcinitdpeuvent ecirctre

deacutemarreacutes start arrecircteacutes stop re-deacutemarreacutes (ils sont dabord arrecircteacutes puis deacutemarreacutes) restart leurs fichiers de configuration peuvent ecirctre rechargeacutes (eacutevite linterruption du service pour les

utilisateurs deacutejagrave connecteacutes) reload

Exemple etcinitdapache2 restart etcinitdbind9 reload

On peut aussi connaicirctre le statut (running failed stopped etc) dun service en utilisant loption status etcinitdmysql status

Beaucoup de services peuvent ecirctre geacutereacutes avec la commande service service apache2 restart service bind9 reload service mysql status

UTILISATION DES FICHIERS DE CONFIGURATION

Contrairement agrave Windows ougrave les configurations des services se passent par interface graphique et sont stockeacutees dans la base de registres Linux utilise encore des fichiers texte Voici quelques eacuteleacutements pour comprendre leur fonctionnement et utiliser au mieux une approche modulaire

ContenuSyntaxeUn fichier de configuration est eacuteditable agrave partir dun utilitaire en mode texte (vi vim nano pico ou autre voir annexe pour quelques commandes) ou un eacutediteur plus complet si on dispose dune interface graphique (par exemple gedit sous Ubuntu)Les eacuteleacutements de syntaxe suivants sont tregraves courant

Eleacutement Usage

Commentaire textuel qui donne des explications sur les options

Commente une ligne de parameacutetrage A deacute commenter si on veut activer loption

ltintituleacutegthellipltintituleacutegt

Encadre une description complexe (mecircme principe que pour les balises HTML ou la structure denregistrement en algorithmique)

On seacutepare diffeacuterentes valeurs par des espaces

Approche modulairePour eacuteviter dencombrer un fichier de configuration on a recours agrave une externalisation (comme on le fait pour le CSS qui sort la mise en page du HTML) On creacutee donc des fichiers externes qui ne prennent en compte quune partie de la configuration et on y fait appel dans un fichier central gracircce agrave la clause include

Exemple pour apache2conf inclue les fichiers de configuration contenus dans le sous-dossier confdinclude confd inclue les deacuteclarations dhocirctes virtuels contenus dans le sous-dossier sites-enabledinclude sites-enabled Inclue la liste des ports deacutecoute contenue dans le fichier portsconf include portsconf

7

Exemple pour DNSLe fichier de base du service Bind est namedconf dont le contenu est include etcbindnamedconfoptions options de configuration du serveurinclude etcbindnamedconflocal zones geacutereacutees par le serveurinclude etcbindnamedconfdefault-zones zones par deacutefaut (localhost reacutesolution inverse etc)

Nettoyage des fichiers et VersionningPour rendre la lecture des fichiers de configuration aiseacutee on eacutepure leur contenu en supprimant toute option non utiliseacutee tout commentaire inutileDe maniegravere agrave pouvoir revenir agrave la situation initiale on a coutume de faire une copie dun fichier de configuration avant de le modifier On utilise la commande cp pour copier un fichier vers un double avec un nouveau nom cp etcapache2apache2conf etcapache2apache2old1

EDITEUR VI

Pour manipuler les fichiers systegravemes qui sont des fichiers texte il est neacutecessaire de recourir agrave un eacutediteur de texte Mecircme quand aucune interface graphique nest disponible (et les linuxiens purs de durs diront quen toute circonstance) un outil rudimentaire bien quoffrant dinnombrables possibiliteacutes permet toute manipulation sur un fichier texte leacutediteur vi Le mode commande (auquel on revient en appuyant Echap) propose diverses actions dont les plus utiles sont preacutesenteacutees ci-dessous

action commande remarques

inseacuterer du texte i Passe leacutediteur en mode insertion Taper agrave nouveau i (ou Echap) pour repasser en mode commandeattention les flegraveches sont deacutesactiveacutees pour les deacuteplacements

supprimer une ligne dd Ces commandes ne marchent pas si on est en mode insertion

supprimer le caractegravere sous le curseur

x

supprimer le caractegravere agrave gauche du curseur

X

enregistrer les modifications w

quitter vi q

enregistrer et quitter wq

quitter sans enregistrer q Il ny a pas dinvite agrave confirmer

Rechercher du texte vers le bas du fichier

texte_chercheacute On tapera agrave nouveau pour chercher la prochaine occurrence

Rechercher du texte en arriegravere texte_chercheacute On tapera agrave nouveau pour chercher loccurrence preacuteceacutedente

Des versions un peu plus riches sont disponibles qui proposent des menus accessibles agrave partir du clavier vim nano pico

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 7: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

7

Exemple pour DNSLe fichier de base du service Bind est namedconf dont le contenu est include etcbindnamedconfoptions options de configuration du serveurinclude etcbindnamedconflocal zones geacutereacutees par le serveurinclude etcbindnamedconfdefault-zones zones par deacutefaut (localhost reacutesolution inverse etc)

Nettoyage des fichiers et VersionningPour rendre la lecture des fichiers de configuration aiseacutee on eacutepure leur contenu en supprimant toute option non utiliseacutee tout commentaire inutileDe maniegravere agrave pouvoir revenir agrave la situation initiale on a coutume de faire une copie dun fichier de configuration avant de le modifier On utilise la commande cp pour copier un fichier vers un double avec un nouveau nom cp etcapache2apache2conf etcapache2apache2old1

EDITEUR VI

Pour manipuler les fichiers systegravemes qui sont des fichiers texte il est neacutecessaire de recourir agrave un eacutediteur de texte Mecircme quand aucune interface graphique nest disponible (et les linuxiens purs de durs diront quen toute circonstance) un outil rudimentaire bien quoffrant dinnombrables possibiliteacutes permet toute manipulation sur un fichier texte leacutediteur vi Le mode commande (auquel on revient en appuyant Echap) propose diverses actions dont les plus utiles sont preacutesenteacutees ci-dessous

action commande remarques

inseacuterer du texte i Passe leacutediteur en mode insertion Taper agrave nouveau i (ou Echap) pour repasser en mode commandeattention les flegraveches sont deacutesactiveacutees pour les deacuteplacements

supprimer une ligne dd Ces commandes ne marchent pas si on est en mode insertion

supprimer le caractegravere sous le curseur

x

supprimer le caractegravere agrave gauche du curseur

X

enregistrer les modifications w

quitter vi q

enregistrer et quitter wq

quitter sans enregistrer q Il ny a pas dinvite agrave confirmer

Rechercher du texte vers le bas du fichier

texte_chercheacute On tapera agrave nouveau pour chercher la prochaine occurrence

Rechercher du texte en arriegravere texte_chercheacute On tapera agrave nouveau pour chercher loccurrence preacuteceacutedente

Des versions un peu plus riches sont disponibles qui proposent des menus accessibles agrave partir du clavier vim nano pico

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 8: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

8

FICHE 2 DNS

PRESENTATION

Le service DNS est le cœur des applications internet intranet En fournissant la possibiliteacute dutiliser des noms symboliques (FQDN - Fully Qualified Domain Name) agrave la place dadresses IP il a permis le deacuteploiement de multiples applications accessibles de maniegravere souple pour des utilisateurs Son systegraveme repose sur une structure arborescente

partant dune racine (laquo raquo) se deacuteclinant en domaines de reacutefeacuterence rattacheacutes agrave cette racine (TLD ndash Top Level Domain

fr com net) deacutetailleacutee en domaines priveacutes (ac-caen google laposte) rattacheacutes agrave ces TLD enregistrant des associations entre des noms de machines dans un domaine (www par

exemple) et ladresse IP correspondante

PROCEDURES

Installation du service et creacuteation de la zone sur le principal1 Installer le paquetage bind92 Deacuteclarer la zone agrave geacuterer dans namedconflocal avec le type laquo master raquo3 Configurer le fichier de la zone en y ajoutant les enregistrements neacutecessaires (NS A )4 Veacuterifier la validiteacute de la configuration du service named-checkconf5 Veacuterifier la validiteacute de la configuration de la zone named-checkzone6 Recharger le fichier de configuration ou redeacutemarrer le service7 Parameacutetrer un client pour quil utilise ce serveur faire un ping sur un FQDN

Liste des fichiers (dans etcbind)Fichier Usage

namedconf Fichier de base renvoie vers les fichiers de configuration

namedconfdefault-zones Zones par deacutefaut (local host reacutesolution inverse etc) deacutecrit les zones (nom type fichier de configuration etc)

namedconflocal Fichier dans lequel deacuteclarer les zones geacutereacutees par le serveur

db Fichiers de configuration des zones (SOA NS A)

Installation du secondaire 1 Installer le paquetage bind92 Deacuteclarer la zone dans namedconflocal avec le type laquoslaveraquo3 Veacuterifier la validiteacute de la configuration du service named-checkconf4 Recharger le fichier de configuration ou redeacutemarrer le service5 Parameacutetrer un client pour quil utilise ce serveur secondaire faire un ping sur un FQDN

MODE OPERATOIRE

CONFIGURATION SERVEUR DNS

Un systegraveme DNS repose principalement sur trois modes de serveur Le serveur autoriteacute il heacuteberge le fichier deacutecrivant la zone (exemple rostandfr) et est le

seul habiliteacute agrave le modifier On parle de serveur principal ou serveur maicirctre Les serveurs secondaires qui reccediloivent les mises agrave jour du fichier de zone reacutealisant une

toleacuterance de panne et une reacutepartition de charge On parle de secondaires ou esclaves Les serveurs deacuteleacutegueacutes ils sont les heacutebergeurs faisant autoriteacute sur des sous-zones (exemple

btsinforostandfr) Ils doivent ecirctre deacuteclareacutes au niveau supeacuterieur (rostandfr)

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 9: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

9

Dans un fichier de zone on va trouver les enregistrements correspondant agrave chaque machine reacutefeacuterenceacutee (A) aux serveurs de noms et serveurs deacuteleacutegueacutes (NS) au(x) serveur(s) de messagerie (MX) au routeur (RT) etc

Sous Linux loutil responsable de la gestion de DNS est BIND (version 9 agrave ce jour) qui installe le service named

1 Serveur Autoriteacute

On parlera dun maicirctre dun primaire ou dun principal Il est deacutefinit comme Start Of Authority (SOA) Il ny a quun serveur SOA pour un domaine DNS Il est autoriseacute agrave apporter des modifications dans le fichier de zone Il comporte lensemble des informations neacutecessaires agrave faire fonctionner BIND Agrave savoir

un fichier de configuration du service et de deacuteclaration des zones (etcbindnamedconf compleacuteteacute par dautres)

autant de fichiers de zones que neacutecessaires accessibles dans etcbind

Les fichiers de configuration et la description des zonesnamedconfoptionsCe fichier de reacutefeacuterence deacutecrit les options courantes du serveur (attention les valeurs sont des exemples) options

directory varcachebind repertoire de stockage des fichiers de zonedump-file vardatacache_dumpdb repertoire de cachestatistics-file varbindnamed_statstxt repertoire de statistiques

namedconflocalOn eacutecrira dans ce fichier la deacuteclaration des zones directes (sens FQDNrarrIP) et inverses (sens IPrarrFQDN) On portera une attention particuliegravere aux points-virgules

pour chaque zone quil gegravere ( exemple pour une zone nommeacutee rostandfr)zone rostandfr IN

type master serveur maicirctrefile baserostanddns nom du fichier qui deacutecrit la zoneallow-update any possibiliteacute de mise agrave jour en reacuteseau vers les secondaires

chaque zone de reacutesolution inverse (exemple pour le reacuteseau 1921680024)zone 0168192in-addrarpa IN adresse IP du reacuteseau agrave lenvers suivi de in-addrarpa

type masterfile rostandinverseallow-update none

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 10: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

10

Les fichiers de zone et de zone inverseOn trouvera ensuite conformeacutement agrave ce qui a eacuteteacute indiqueacute dans namedconflocal autant de fichiers que de zones ou de zones inverse Un fichier de zone comporte les eacuteleacutements suivants Enregistrement Rocircle

SOA Deacutefinit les indications du Start Of Authority nom du domaine (ou de la zone)nom de la machine qui est SOA dans ce domainenom de ladministrateur du domainenumeacutero de version de fichierdeacutelais pour la synchronisation

NS Deacuteclare les noms des machines qui sont serveur de noms (principal ou secondaires) pour la zoneRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

A Deacuteclare les associations entre FQDN et adresse IP On parle dun hocircteRemarques un nom non termineacute par un point est compleacuteteacute par la zone deacutecrite dans le SOAun nom termineacute par un point est un FQDN

MX Deacuteclare le nom de la ou des machines assurant la fonction de serveur de messagerie pour le domaineRemarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

RT Deacuteclare le nom de la ou des machines assurant le rocircle de routeur dans le domaine Utiliseacute pour les systegravemes avec auto-configuration Remarque Ces noms devront en plus ecirctre associeacutes agrave une adresse par un enregistrement A

PTR Enregistrement inverse qui associe le nom FQDN agrave une adresse IP de machine dans le reacuteseau IP deacuteclareacute dans le SOA Utiliseacute pour les systegravemes de cartographie de reacuteseau ou pour ladministration distante

ExempleFichier rostanddns deacutecrivant la zone rostandfrSOA start of authority + nom de zone + nom de ladministrateur IN SOA rostandfr rootrostandfr (

42 numeacutero de seacuterie important pour les secondaires (actualiseacute agrave chaque modification)3H temps de rafraicircchissement des secondaires (3 herues)15M temps dattente entre deux tentatives de mise agrave jour pour les secondaires (15 min)1W dureacutee de vie dune information (1 week)1D ) temps avant la deacuteclaration dinvaliditeacute permanente du principal (1 day)

IN NS dnsrostandfr deacuteclaration serveurs de noms principaux et secondairesbtsinfo NS srvinforostandfr deacuteleacutegation dautoriteacute pour la sous-zone btsinforostandfr

le serveur aura pour nom srvinforostandfrMX 10 smtp pointeur pour le serveur de messagerie avec numeacutero dordreMX 20 mail deuxiegraveme pointeur serveur secondairedns A 1921680152 association pour le nom de machine dnsrostandfrwww A 1921680152 deacuteclaration dassociation pour le nom de machine wwwsrvinfo A 1921680153 association pour la machine srvinfosmtp IN A 1921680253 association pour le nom smtpmail IN A 1921680154 association pour pour le nom mailconsole CNAME srvinfo alias pour le nom de machine srvinfowww6 IN AAAA 1 association pour une adresse IPv6

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 11: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

11

Et pour la reacutesolution inverse Fichier rostandinverse deacutecrivant la zone 0168192in-addrarpaSOA start of authority + nom de zone + nom de ladministrateur IN SOA 0168192in-addrarpa root 0168192in-addrarpa (42 3H 15M 1W 1D )IN NS rostandfr deacuteclaration serveurs de noms par nom DNS

152 IN PTR www association le numeacutero 253 vers le nom de machine www153 PTR srvinfo association pour le numeacutero 153 vers la machine srvinfo253 PTR smtp association pour le numeacutero 253 vers le nom smtp

2 Serveur secondaire ou esclave

Un serveur secondaire est ni plus ni moins quun serveur BIND qui a deacuteclareacute dans son fichier namedconflocal quil eacutetait esclave pour une zone deacutetermineacutee (la terminologie Windows est secondaire)zone rostandfr IN

type slave serveur esclavemasters 1921680152 adresse des serveurs maicirctresfile doublerostanddns nom du fichier si on veut en conserver une copie en localallow-update none impossibiliteacute de mise agrave jour en reacuteseau vers dautres secondaires

Degraves lors il recevra agrave intervalle reacutegulier les mises agrave jour Il est important de changer le numeacutero de version agrave chaque modification du fichier principal de sorte que les secondaires se mettent correctement agrave jour

3 Serveur de zone deacuteleacutegueacute

Un serveur de zone deacuteleacutegueacute est un serveur DNS qui a lautoriteacute sur un sous ensemble dune zone principale Par exemple la zone gouvfr a deacuteleacutegueacute la responsabiliteacute de nombreuses sous-zones educationgouvfr impotsgouvfr etc Pour chaque sous-zone une inscription a eacuteteacute faite dans le fichier de zone principale et chaque deacuteleacutegation renvoie vers un nouveau serveur SOA pour la sous zone Cet enregistrement au niveau supeacuterieur est indispensable pour eacuteviter tout ajout non deacutesireacute (on ne peut pas deacutecider librement de creacuteer une sous-zone il faut quon nous ait donneacute une deacuteleacutegation)

Exemple dans le fichier de la zone gouvfr on trouvera education IN NS nom_dns_du_serveur_deacuteleacutegueacute_educationimpots IN NS nom_dns_du_serveur_deacuteleacutegueacute_impots

puisnom_dns_du_serveur_deacuteleacutegueacute_education IN A adresse_ip_educationnom_dns_du_serveur_deacuteleacutegueacute_impots IN A adresse_ip_impots

Pour le serveur deacuteleacutegueacute il sagit ni plus ni moins quun maicirctre pour la zone educationgouvfr ou impotsgouvfr

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 12: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

12

4 Test des configurations

Avant de lancer un serveur suite agrave une modification on peut prendre la preacutecaution de tester les configurations des fichiers

Commande Rocircle

named-checkconf teste la validiteacute des deacuteclarations de zone (fichier namedconf et fichier de deacuteclaration namedconflocal namedconfdefault-zones etc)

named-checkzone Teste la validiteacute dune zone agrave partir de son fichier de configurationnamed-checkzone nomZone cheminFichierZone

CLIENT ET TEST

On paramegravetrera les clients pour quils aillent sinformer aupregraves de leur serveur DNS (qui peut ecirctre le secondaire ou le principal)

Sous WindowsDans les proprieacuteteacutes de la carte indiquer le serveur DNS principal ou preacutefeacutereacute

Sous LinuxDans lenvironnement graphique utiliser laquo Adresses Automatiques uniquement raquo pour donner une valeur manuelle agrave la partie DNS (ici copie deacutecran sous ubuntu 1010)

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 13: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

13

TestOn teste le bon fonctionnement du serveur DNS en tapant

ping nomFQDN prouve que la reacutesolution fonctionne ping -a adresseIP si la reacutesolution DNS inverse fonctionne donne le nom FQDN de la

machine posseacutedant ladresse interrogeacutee nslookup nomFQDN interroge le serveur DNS pour connaicirctre ladresse IP correspondant au

nom FQDN nslookup adresseIP interroge le serveur DNS pour savoir si un enrtegistrement inverse est

associeacute agrave ladresse IP et reacutecupegravere alors le FQDN correspondant nslookup -type=champ nomDomaine interroge le champs particulier (NS MX RT etc) pour

le domaine speacutecifieacute dig adresseServeur nomzone champ (sous Linux) permet dinterroger le contenu dune

zone en demandant les informations associeacutees agrave un champ particulier (NS MX RT etc)

Source

httpwwwzytraxcombooksdns site complet en anglais sur DNS et Bind9

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 14: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

14

FICHE 3 SERVEUR WEB APACHE

PRESENTATION

Serveur HTTPUn serveur Web est une machine heacutebergeant le service reacuteseau HTTP (HyperText Transfert Protocol) Le protocole HTTP permet au serveur de retourner agrave la demande dun client

Les entecirctes nom du serveur versions du protocole supporteacutees autres fonctions accessibles

Des pages HTML et les eacuteleacutements qui leurs sont lieacutes (CSS scripts cocircteacute client images appeleacutees par ltimggt modules incorporeacutes par ltembedgt comme du flash ou du streaming etc)

Des pages HTML reacutesultant de lexeacutecution de pages de script cocircteacute serveur (PHP ASP JSP)

ApacheLe serveur Web le plus utiliseacute dans le monde (source journal du net ici) est un outil libre deacuteveloppeacute dans lenvironnement LinuxUNIX le serveur Apache de lApache Software Foundation (wwwapacheorg) qui se deacutecline en dinnombrables versions (dont Tomcat pour lexeacutecution de script cocircteacute serveur en Java servlet) Il permet la mise en place dun serveur web (pages HTML) avec exeacutecution de scripts PHP JSP ou ASPIl peut seacutecuriser limiter laccegraves aux pages (htaccess) creacuteer des hocirctes virtuels (plusieurs noms de site diffeacuterents sur une seule exeacutecution du service) ou des sites indeacutependants (sur des ports diffeacuterents) Linstallation du service standard ne permet pas la seacutecurisation SSL

PROCEDURES

Installation du service1 Installer des paquetages apache2 (et pour les versions dUbuntu avant 1004 installer

manuellement les paquetages apache22-common et apache2-utils) pour la version de base2 Pour ajouter des fonctions dauthentification la gestion du multi-processing et la possibiliteacute de

changer le service en mode root installer les paquetages apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

3 Tester depuis une machine cliente (httpadresseIPServeur)

Le reacutepertoire par deacutefaut des fichiers HTML et PHP est varwwwLes principaux fichiers de configuration (dans etcapache2)

Fichier Usage

apache2conf Deacutefinit les principales caracteacuteristiques techniques du service HTTP mode de transfert de linformation dureacutee avant la fermeture dune session gestion de la seacutecuriteacute etc Fait appel aux fichiers externes pour le reste de la configuration

portsconf Indique les ports sur lesquels le serveur eacutecoute (deacutefaut HTTP80 HTTPS443)Permet la creacuteation dhocirctes virtuels (un seul serveur apache plusieurs sites sous des noms diffeacuterents)

httpdconf Cest lancien fichier de configuration Il peut ecirctre inteacuteressant dy inseacuterer les parameacutetrages speacutecifiques pour ameacuteliorer la lisibiliteacute (veacuterifier quil est appeleacute par laquo include raquo dans apache2conf)

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 15: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

15

Installation du PHPPour prendre en charge PHP Apache doit ecirctre compleacuteteacute par un interpreacuteteur

1 Installer le module php5 qui installera les deacutependances php5-common php5-gd php5-cli et libapache2-mod-php5

2 Redeacutemarrer le serveur apache3 Tester en deacuteposant ou creacuteant un fichier avec du code PHP dans le reacutepertoire varwww

Prise en charge MySQL par ApachePHPEn compleacutement du serveur Web on installe la capaciteacute pour Apache de geacuterer les eacutechanges avec MySQL Cela ne neacutecessite pas neacutecessairement que MySQL soit preacutesent sur la machine heacutebergeant Apache (MySQL peut ecirctre sur un serveur Windows sous la forme dune installation EasyPHP par exemple)

1 Installer le paquetage libapache2-mod-auth-mysql pour la gestion de lauthentification MySQL

2 Installer le paquetage php5-mysql pour permettre les eacutechanges entre PHP et la base MySQL3 Redeacutemarrer apache4 Tester en inseacuterant une connexion agrave une base MySQL dans un fichier PHP sur varwww

Remarque pour des raisons eacutevidentes de seacutecuriteacute le compte laquo root raquo nest pas autoriseacute agrave eacutetablir des connexions agrave la base depuis dautres machines que localhost On devra donc proceacuteder comme suit sur le SGBD

1 Creacuteer un utilisateur MySQL avec mot de passe (create user nomutil identified by motPasse )

2 Lui donner le droit de se connecter depuis toute machine (grant usage on to nomutil)

3 Lui donner eacuteventuellement les droits neacutecessaires sur la base de donneacutees particuliegravere

MODE OPERATOIRE

SERVEUR WEB REPERTOIRES VIRTUELS SITES MULTIPLES

1 - Installation et reacutepertoires

Un serveur web correspond agrave un service en eacutecoute sur le port 80 (port standard pour le protocole HTTP)Linstallation dApache (apt-get install apache2) entraicircne linstallation du service etcinitdapache2Le fichier principal de la configuration est etcapache2apache2conf qui fait lui-mecircme appel agrave dautres fichiers externaliseacutesLes pages Web sont stockeacutees par deacutefaut dans varwww

2 - Fichier apache2conf

GeacuteneacuteraliteacutesCe fichier comporte dans sa version standard plus de 200 lignes (dont beaucoup de commentaires) Il est conseilleacute de travailler sur une copie du fichier dinstallation dans lequel on supprimera tous les eacuteleacutements inutiliseacutesBien entendu il est prudent de savoir ce que contiennent les directives avant de les activer supprimer ou modifier comme cela est rappeleacute dans les premiers commentaires Do NOT simply read the instructions in here without understanding what they do Theyre here only as hints or reminders If you are unsure consult the online docs You have been warned

Remarque Les commentaires du fichier source preacutesenteacute plus loin ont eacuteteacute supprimeacutes seules les directives principales et basiques sur lesquelles on intervient en geacuteneacuteral sont preacutesenteacutees

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 16: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

16

Structure du fichierIl y a trois grandes sections dans ce fichier

1 globale deacutefinit les paramegravetres du service (dureacutee de session connexions simultaneacutees etc)2 site standard (fichiers dans httpdconf) parameacutetrage manuel du service standard

(reacutepertoires droits daccegraves etc)3 hocirctes virtuels (fichiers dans sites-enabled) parameacutetrage de sites accessibles sous des

noms ou adresse IP virtuelles

Section 1 Parameacutetrage du service

Dans cette premiegravere section on paramegravetre la faccedilon dont le service HTTP prendra en charge les demandes de connexionOn y preacutecise aussi les inclusions pour ce qui est du reste de la configuration (cela eacutevite davoir un fichier unique de 900 lignes comme le httpdconf de la version 1 de Apache)

Contenu du fichier (Extraits)Timeout 300 dureacutee de vie dune connexion en secondes (temps avant la deacuteconnexion automatique)KeepAlive On On ou Off permet pour une mecircme connexion de faire plusieurs demandes

ameacuteliore les temps de reacuteponse oblige le serveur agrave garder des sessions en meacutemoireKeepAliveTimeout 15 temps en seconde entre deux actions avant que la session soit deacuteconnecteacuteeAccessFileName htaccess indique la faccedilon dont on restreint laccegraves aux dossiers

(ici fichiers htaccess dans le dossier agrave seacutecuriser agrave commenter si on ne veut pas appliquer de restrictions

LogLevel warn indique le type deacuteveacutenement enregistreacute dans les journaux valeurs debug info notice warn error crit alert emerg

Include mods-enabledload modules appeleacutes au chargement du service (authentification PHP transferts de fichiers riches type PDF MP3 et autres)

Include mods-enabledconf configurations speacutecifiques pour les modules Include all the user configurationsInclude httpdconf appel aux configurations speacutecifiques (section 2 laquo service standard raquo) Include ports listingInclude portsconf appel aux parameacutetrages sur les ports deacutecoute Include generic snippets of statementsInclude confd appel au dossier contenant les parameacutetrages speacutecifiques des sites

par exemple on y trouve phpmyadminconf Include the virtual host configurationsInclude sites-enabled sites geacutereacutes construit lors du lancement du service agrave partir des fichiers

de configuration

Fichier portsconfNameVirtualHost 80 Gestion du serveur avec prise en charge dhocirctes virtuels sur le port 80Listen 80 port deacutecoute (80 est la valeur par deacutefaut) ltIfModule mod_sslcgt parameacutetrage si prise en charge de SSL (remplaceacute par TLS)

Listen 443ltIfModulegtltIfModule mod_gnutlscgt parameacutetrage si prise en charge de TLS

Listen 443ltIfModulegt

Section 2 Configuration du site Web

On trouvera dans cette section les directives pour le site principal (cest agrave dire pour une installation sans hocircte virtuel)Agrave cet endroit on deacutefinit les caracteacuteristiques du site les sous reacutepertoires accessibles et les options de seacutecuriteacute qui sy appliquent On peut mettre ces directives dans le fichier httpdconf ou dans le fichier apache2conf (non recommandeacute) En cas dutilisation dhocirctes virtuels il est preacutefeacuterable de renseigner ces informations dans le fichier defaultconf du sous-dossier sites-enabled

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 17: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

17

Principales directivesDirective Usage

ltDirectorygtltDirectorygt

Deacutefinitions de conditions et comportements particuliers pour un reacutepertoire (chemin daccegraves restrictions daccegraves etc)

Alias Deacutefinit un raccourci pour un chemin daccegraves complexe agrave un reacutepertoire

Allow Autorise laccegraves agrave machines ou des adresses de reacuteseau

Deny Interdit laccegraves agrave des machines ou des adresses de reacuteseau

DocumentRoot Chemin daccegraves agrave un dossier contenant des pages Web

LogLevel Niveau denregistrement des problegravemes dans le journal deacuteveacutenement

Order Ordre dans lequel sont appliqueacutees les regravegles de seacutecuriteacute (Deny et Allow)

ServerAdmin Nom ou adresse de ladministrateur du serveur

ServerName Nom du serveur tel quil devra ecirctre tapeacute dans la barre dadresse du navigateurNa dinteacuterecirct au niveau geacuteneacuteral que si on gegravere des hocirctes virtuels sur le serveur

Exemple de fichier (Extraits)ServerAdmin webmastergsbnet pour joindre ladministrateurServerName publicgsbnet nom FQDN auquel reacutepond le serveur DocumentRoot varwww localisation des pagesltDirectory gt droits sappliquant agrave la racine (deacutefinie dans DocumentRoot) du site Options FollowSymLinks autorise lusage de liens symboliques (non maicirctriseacute agrave ce jour)AllowOverride None les droits ne peuvent ecirctre redeacutefinis ailleurs (dans fichiers htaccess)Deny from All interdit le parcours du reacutepertoire ltDirectorygtltDirectory varwwwgt parameacutetrage pour le reacutepertoire varwwwOptions Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allowdeny ordre de consultation des droitsallow from all autorise laccegraves agrave toute machineltDirectorygtAlias doc usrsharedoc raccourci pour le reacutepertoire ltDirectory usrsharedocgt paramegravetres speacutecifiquesOrder denyallowDeny from allAllow from 127000255000 1128ltDirectorygt

Section 3 Hocirctes virtuels

PrincipesLa configuration standard (dans httpdconf) ne permet davoir pour un serveur apache quun seul site web On peut choisir dutiliser un serveur physique diffeacuterent (ou autant de machines virtuelles) pour chaque site heacutebergeacute On peut aussi deacutecider de geacuterer des sites accessibles par des noms diffeacuterents (noms FQDN ou adresse IP) depuis un mecircme serveur ApacheOn aura alors recours agrave la deacutefinition dhocirctes virtuels

Remarque il ne faut pas confondre un hocircte virtuel et un sous-reacutepertoire (ou reacutepertoire virtueldans IIS) ce dernier est accessible par httpnom_serveurnom_Repertoire_virtuel comme cela est utiliseacute pour les pages perso des heacutebergeurs gratuits par exemple ou pour laccegraves agrave wwwetabac-caenfrrostand Le reacutepertoire virtuel est geacutereacute par la directive Alias dans la configuration Apache

Laccegraves nest autoriseacute que depuis la machine locale (en IPv4 et IPv6)

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 18: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

18

Fichier default dans le dossier sites-availableLe fichier permet de creacuteer des hocirctes virtuels qui seront accessibles par httpnom_hote_Virtuel Un hocircte virtuel se comporte comme un nouveau serveur web et peut donc reprendre les directives indiqueacutees plus haut (DocumentRoot Listen Directory etc)

Exemple de deacuteclaration dhocirctes deacutefinition dun hocircte virtuel depuis nimporte quelle adresse IP du serveur sur le port 80ltVirtualHost 80gtNameVirtualHost 1921680152 Deacuteclaration dun hocircte virtuel sur une adresse IP deacutetermineacuteeDocumentRoot varwwwltVitualHostgtDeacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur avec pour nom virtuel laquowwwSiteVitrinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteVitrine chemin ougrave sont stockeacutees les pages du siteServerName wwwSiteVitrinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelChoisir la gestion par htaccess limiter les droits de lecturemodification etcltVirtualHostgt

Deacutefinition dun hocircte virtuel sur la mecircme adresse pour un second site de nom laquo commerceonlinefr raquoltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercial chemin ougrave sont stockeacutees les pages du siteServerName commerceonlinefr nom du site virtuel

Deacuteclaration des options de seacutecuriteacute du reacutepertoire virtuelltVirtualHostgt

Laccegraves agrave lhocircte virtuel neacutecessite bien entendu de pouvoir latteindre gracircce agrave un FQDN donc gracircce agrave un enregistrement DNS ou un renseignement dans le fichier hosts ou lmhosts (Voir fiche DNS)

Eacutecoute sur plusieurs portsPour permettre la mise en place de sites speacutecifiques ou seacutecuriseacutes (parce quils neacutecoutent pas sur le port standard) on pourra aussi creacuteer des hocirctes virtuels en eacutecoute sur un port speacutecifique Deacutefinition dun hocircte virtuel sur une adresse preacutecise du serveur sur un autre port (exemple ici port 8800)ltVirtualHost 19216801528800gt

DocumentRoot varwwwintranet chemin ougrave sont stockeacutees les pages du siteServerName intraentreprisefr nom du site virtuel

ltVirtualHostgt

SECURISATION DES ACCES (htaccess)

Par deacutefaut un serveur Web ne permet pas la seacutecurisation des informations autrement que par les droits daccegraves accordeacutes agrave lutilisateur qui exeacutecute le processus Il nest donc pas possible de reacutealiser de seacutecuriteacute en fonction des utilisateurs Avec Apache (mais aussi avec IIS) une connexion authentifieacutee va autoriser daffiner les accegraves en fonction des utilisateurs gracircce agrave un fichier nommeacute htaccess situeacute dans chaque reacutepertoire pour lequel on voudra limiter laccegraves speacutecifiquement Ces fichiers deacutefinissent les utilisateurs autoriseacutes pour le reacutepertoire courant et tous les reacutepertoires jusquagrave rencontrer un nouveau fichier htaccess plus bas dans larborescence Pour cela chaque reacutepertoire (eacuteventuellement dans les hocirctes virtuels) sera parameacutetreacute pour prendre en compte ces fichiers gracircce agrave la directive

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 19: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

19

Exemple de fichier de recours aux fichiers htaccessltDirectory MonRepertoiregt Deacuteclaration des options de seacutecuriteacute du reacutepertoire

AllowOverride AuthConfig Les fichiers dauthentification htaccess sils existent remplacent les droits du dossier

ltDirectorygtltVirtualHost 192168015280gt

DocumentRoot varwwwSiteCommercialServerName commerceonlinefr nom du site virtuel

ltDirectory varwwwSiteCommercialgt Gestion de la seacutecuriteacute speacutecifique agrave lhocircte virtuelAllowOverride AuthConfig

ltDirectorygtltVirtualHostgt

Chaque fichier htaccess est constitueacute comme suit AuthType Basic type dauthentification standard (mots de passe en clair)AuthUserFile etcapache2httpUtilisateurs chemin et nom du fichier des utilisateurs (fichier agrave creacuteer)AuthName Accegraves reacuteserveacute commentaire pour les utilisateurs refuseacutesrequire user nom_utilisateur1 utilisateurs autoriseacutesrequire user nom_utilisateur2

La creacuteation des utilisateurs se fera par loutil htpasswd comme suit La premiegravere creacuteation de compte neacutecessite aussi la creacuteation du fichierhtpasswd -c cheminnom_fichier_utilisateurs nom_utilisateurhtpasswd -c etchttpdconfhttpUtilisateurs pierreLe systegraveme demandera alors les mots de passePour les suivants htpasswd paulhtpasswd jacques

Sources internet

httpwwwloligrubbecontribtlepointBASEindexhtml Site (en franccedilais) tregraves deacutetailleacute sur beaucoup de configurations dans le monde de ladministration systegraveme et reacuteseau (ici pour Apache avec explication assez claire des diffeacuterentes options et directives)

httpdocubuntu-frorglamp en franccedilais installer pas agrave pas un LAMP sous Ubuntu

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 20: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

20

FICHE 4 SERVEUR DE BASE DE DONNEES MYSQL

PRESENTATION

Le serveur de base de donneacutees est un outil indeacutependant dun serveur Web Son rocircle est de permettre le stockage lexploitation et la seacutecurisation de donneacutees structureacutees en bases de donneacutees (un nom pour un domaine de gestion) au sein desquelles seront visibles les tables et occurrences

PROCEDURES

Installation du service1 Installer le paquetage mysql-server2 Au cours de linstallation penser agrave donner un mot de passe agrave lutilisateur root (et penser agrave

sen souvenir)3 Veacuterifier la connexion mysql -u nomUtilisateur [-p] [nomBaseDonnees]

(-p permet de saisir un mot de passe on peut se connecter directement agrave la base de donneacutees voulue)

Administration par PhpMyAdminPHPMyAdmin est une surcouche graphique permettant dadministrer la base de donneacutees MySQL par des pages Web (en PHP)On procegravedera dabord agrave linstallation dApache et PHP conformeacutement agrave la proceacutedure preacuteceacutedente

1 Installer le paquetage phpmyadmin2 Au cours de linstallation

a Choisir la configuration automatique du serveur Apacheb Implanter la base de donneacutees neacutecessaire agrave la gestion de PhpMyAdmin (en indiquant

le mot de passe de MySQL)c Configurer un mot de passe speacutecifique pour PhpMyAdmin

3 Veacuterifier le fonctionnement par le navigateur httplocalhostphpmyadmin4 Se connecter en utilisant le compte de MySQL

MODE OPERATOIREIl ne sagit pas ici de faire un cours sur le langage SQL mais de preacutesenter les principales commandes dutilisation en dehors de linterface graphique phpmyadmin

MYSQL SANS INTERFACE GRAPHIQUE

Apregraves linstallation du service on intervient dans MySql par la console en ligne de commande

Se connecter agrave MySQL La commande mysql tente une connexion avec le compte root sans mot de passe Elle devrait normalement deacuteboucher sur un eacutechec

Syntaxe mysql -u nomUtil [-p] [nom_base_de_donnees]Permet la connexion sous un nom dutilisateur avec demande du mot de passe On peut aussi directement utiliser une base de donneacutees

Exemplemysql -u uGSB -p bazGSB

Pour utiliser une base particuliegravere on a recours agrave la commande useuse nom_base_de_donnees

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 21: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

21

ObjetsPour connaicirctrecreacuteer les objets dun serveur MySQL on a recours aux commandes suivantes

Commande Explication

SHOW DATABASES Affiche la liste des bases de donneacutees

CREATE DATABASE nomBase

Creacutee un conteneur de base de donneacutees (il ny a pas de tables)

SHOW TABLES Liste les tables contenues dans une base de donneacutees

DESC nom_table Preacutesente la structure de la table nom_table

CREATE TABLE nom_table Creacutee une table (il faudra aussi deacutecrire ses champs et leurs proprieacuteteacutes ainsi que les contraintes)

DROP TABLE nom_table Deacutetruit la table (structure et contenu)

ALTER TABLE nom_table Modifie la structure de la table (type dun champ ajout de colonne ajout de contrainte dinteacutegriteacute etc)

Gestion des droitsLes clauses SQL de base pour la creacuteation des comptes utilisateur et la gestion des droits sont les suivantes

Clause Explication Exemple

CREATE USER Creacutee un compte utilisateur

CREATE USER compta IDENTIFIED BY mpcompta

GRANT Attribue des privilegraveges agrave un compte

GRANT USAGE ON TO comptanom_machinedonne des droits dutilisation sur toute table au compte compta depuis la machine nom_machine

REVOKE Retire des privilegraveges agrave un compte

REVOKE SELECT ON bdGestemployes FROM comptaretire le droit de lire (select) la table employes de la base bdGest au compte compta

MIGRATION DE BASE DE DONNEES

PrincipesLa migration dune base de donneacutees consiste agrave prendre un contenu (structure et donneacutees) et agrave le transfeacuterer dans un environnement diffeacuterent par exemple une base existant sous Acces que lon souhaite transfeacuterer vers un environnement Serveur ameacuteliorant les performances et la

On peut le faire de plusieurs faccedilons En voici quelques unesRemarque Le code SQL proposeacute est agrave adapter aux possibiliteacutes de syntaxe de lenvironnement

Deux bases en parallegravele recopie agrave lidentique les deux bases doivent disposer dun environnement graphique sou Windows permettant lutilisation dune source de donneacutees ODBC

1 Creacuteer une base N dans le nouvel environnement2 Connecter lancienne et la nouvelle par un lien ODBC et des tables lieacutees3 Proceacuteder par SQL Create table maNvlleBasemaTable as select from

monAncienneBasemaTablerarr les tables source et destination seront exactement identiques (Structures Donneacutees)

4 Creacuteer les requecirctes permettant de regeacuteneacuterer les contraintes dinteacutegriteacute Alter table nomTableadd constraint typeContrainte DetailContrainte

Deux bases en parallegraveles structures diffeacuterentes insertion de donneacutees Lenvironnement de lancienne base doit disposer dun environnement permettant la connexion ODBC il doit exister un pilote ODBC pour acceacuteder agrave lancien SGBD

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 22: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

22

1 Faire du reverse engeneering sur lancienne base (par exemple avec AMC Designor)2 Apporter les modifications agrave la structure de la base3 Geacuteneacuterer le script de creacuteation dans le nouvel environnement4 Implanter la base (structure) dans le nouvel environnement gracircce au script5 Les contraintes dinteacutegriteacute seront existantes dans la nouvelle base6 Connecter lancienne et la nouvelle7 Proceacuteder par SQL en pensant agrave lordre de reacutealisation des insertions du fait des contraintes

dinteacutegriteacute Insert into maNvlleBasemaTable (liste_des_champs) as select liste des champsfrom monAncienneBasemaTable

Script dinsertion1 Faire du reverse engeneering sur lancienne base adapter eacuteventuellement geacuteneacuterer le script

pour le nouvel environnement limplanter2 Sur lancienne base creacuteer un fichier qui contiendra les donneacutees agrave inseacuterer (ordres SQL

donneacutees au format XML fichier CSV ) On veacuterifiera dans le script que lordre de reacutealisation des insertions respecte les contraintes dinteacutegriteacute (insert into (liste champs) values (liste valeurs))-gt le script peut ecirctre geacuteneacutereacute par des fonctions dexport du SGBD ou par une programmation dans un langage (VBA PHP autre)-gt Access ou MySQL ont des fonctions permettant de geacuteneacuterer automatiquement ce script (en SQL en XML ou dautres formats)

3 Exeacutecuter le script ou importer le fichier de donneacutees dans la nouvelle base

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 23: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

23

FICHE 5 SERVEUR FTP (ProFTP)

PRESENTATION

Partage de fichiersLinformatique en reacuteseau a permis en particulier le partage de donneacutees communes (par le reacuteseau par messagerie en interaction etc) Lorsque ces donneacutees sont stockeacutees sur un site central sous forme de fichiers constitueacutes (PDF Doc Exe etc) il est neacutecessaire de creacuteer un service de partage qui permettra agrave des utilisateurs dy acceacuteder par le reacuteseau de maniegravere anonyme ou authentifieacuteeCette fonction vient en surcouche du SGF (Systegraveme de Gestion de Fichiers NTFS FAT Extended etc) du disque de la machine qui heacuteberge les fichiers

FTP et autres techniquesDe nombreuses techniques de partage existent (NFS sous Linux DFS entre serveurs etc) En environnement Windows la fonction de partage de fichiers se nomme SMB (Server Message Bloc) Elle a eacuteteacute transposeacutee en environnement Linux sous le terme de Samba qui remplit les mecircmes services quune machine sur OS Microsoft Dans lunivers TCPIP le protocole qui prend en charge le partage se nomme FTP (File Transfer Protocol)

Fonction de partageLa fonction de partage de fichiers stockeacutes sur un disque dur reacutealise tout ou partie des eacuteleacutements suivants

rendre lobjet accessible sur le reacuteseau (partager) partager de faccedilon masqueacutee il faut connaicirctre lexistence du partage pour y acceacuteder authentifier les utilisateurs deacutefinir de droits daccegraves sur les fichiers ou dossiers agrave des utilisateurs ou des groupes

Le serveur peut-ecirctre installeacute en tant quoutil autonome pour le simple partage de fichiers Il peut aussi ecirctre compleacuteteacute par une fonction dauthentification avec une base de donneacutees

PROCEDURES

Installation4 Installer le paquetage proftpd5 Choisir une installation laquo Indeacutependamment raquo (le service sera lanceacute seul sans passer par le

gestionnaire de service inet qui lui alloue moins de ressources)6 Veacuterifier le fonctionnement agrave partir dun navigateur (ou dun client FTP port 21)

ftpadresseServeur (sauthentifier avec le compte administrateur) Vous devez voir le dossier home de lutilisateur

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 24: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

24

Les principaux fichiers sont (dans etcproftpd) Fichier Usage

proftpdconf Deacutefinit les principales caracteacuteristiques techniques du service FTP nom de la machine vu sur le reacuteseau dureacutee de session nombre de connexions simultaneacutees modules appeleacutes (SGBD seacutecuriteacute etc) reacutepertoires partageacutes (pour compte anonyme ou compte authentifieacutes) eacuteleacutements de seacutecuriteacute ports deacutecoute etc

sqlconf Deacutefinit les options pour la mise en relation avec une base de donneacutees (MySQL ou PostGreSQL) SGBD mode dauthentification compte de connexion agrave la base tables utiliseacutees

ldapconf Deacutefinit les options de connexion agrave un annuaire par le protocole LDAP nom de connexion domaine localisation du serveur etc

tlsconf Deacutefinit les options de configuration pour lusage dune connexion seacutecuriseacutee certificat forcer lauthentification etc

modulesconf Preacutecise les modules agrave charger lors du deacutemarrage du service base de donneacutees seacutecuriteacute quotas etc

virtualsconf Gestion dhocirctes virtuels (un serveur plusieurs domaines)

Configuration avec MySQL pour lauthentification1 Si besoin proceacuteder agrave linstallation de MySQL (on peut aussi utiliser un service MySQL distant)2 Installer le paquetage de proftpd-mod-mysql3 Creacuteer la base pour proftpd sous MySQL les tables ftpgroup et ftpuser le compte MySQL

de connexion (voir script en Annexe de cette fiche)4 Inseacuterer dans la table ftpuser le compte de connexion de lutilisateur Linux5 Configurer le fichier sqlconf6 Appeler sqlconf dans proftpdconf (Include)7 Demander agrave charger les modules sql et mysql dans le fichier modulesconf8 Redeacutemarrer le service proftpd

MODE OPERATOIRELe monde libre propose de multiples deacuteclinaisons du protocole FTP sous forme de services wuFTP ProFTP hellipNous eacutetudierons ici les grandes lignes de ProFTP qui a la reacuteputation decirctre un peu complexe dadministration (mais proche dApache) laquo couplable raquo avec de lauthentification (MySQL ou LDAP) geacuterant des droits de partage par utilisateur ou groupe mieux seacutecuriseacute vis a vis des failles que wuFTPpar exemple

CONFIGURATION DE BASE

Fichier proftpdconfCe fichier deacutefinit le comportement du service (modules appeleacutes type dadressage IP nom du serveur etc) mais aussi les listes de partage que lon met en place et les droits daccegraves associeacutesIl fait appel agrave dautres fichiers externes pour preacuteciser certaines valeurs

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 25: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

25

Configuration du service

Parameacutetrage du service (Extraits)Include etcproftpdmodulesconf appelle le fichier de modules compleacutementaires

(par exemple module pour MySQL ou LDAP)

ServerName Serveur Partage nom du serveur tel quil est vu dans lexplorateur clientServerType standalone serveur qui est lanceacute sans lintermeacutediaire

du gestionnaire de service inet (meilleure performance)DeferWelcome on naffiche le message daccueil quapregraves authentificationDefaultServer on le serveur prendra en charge les demandes de

machines non reacutefeacuterenceacutees dans les configurationsTimeoutNoTransfer 600 temps sans transfert avant fermeture de connexion authentifieacuteeTimeoutStalled 600 temps sans transfert avant fermeture connexionTimeoutIdle 1200 temps sans eacutechange (transfert controcircle) avant fermeture

DisplayLogin welcomemsg fichier qui contient le message daccueil

DenyFilter expressions reacuteguliegraveres refuseacutees ici interdit de lister tout le contenu dun dossier

DefaultRoot ~ bloque les utilisateurs dans leur dossier homenomUtil on peut aussi preacuteciser un autre reacutepertoire pour tous

RequireValidShell off autoriseempecircche la connexion dutilisateur sans shell permet de restreindre laccegraves agrave des utilisateurs Linux

Port 21 port deacutecoute pour les connexions (21 par deacutefaut) Remarque les transferts se font sur le port 20

MaxInstances 30 nombre de connexions simultaneacutees autoriseacutees

User proftpd compte utilisateur qui lance le service (seacutecuriteacute)Group nogroup groupe de lutilisateur qui lance le service (seacutecuriteacute)AllowOverwrite on permet de remplacer les fichiers partageacutes

TransferLog varlogproftpdxferlog reacutepertoire des journaux lieacutes aux pb de transfertSystemLog varlogproftpdproftpdlog journaux des problegravemes systegraveme (connexion auth)

Include etcproftpdvirtualsconf pour geacuterer les hocirctes virtuels dans un fichier externe

Configuration des partages

Reacutepertoire de connexionPar deacutefaut sur ProFTPd les utilisateurs se retrouvent agrave la connexion dans le dossier homenomUtilisateurOn peut le redeacutefinir par la directive DefaultRoot qui bloque en outre lutilisateur et lempecircche de remonter larborescence (on dit que lutilisateur est chrooteacute) On utilisera la valeur laquo ~ raquo qui correspond agrave homenomUtilisateur ou un dossier que lon a choisi (par ex varwww pour les pages Web dApache)

Le dossier de connexion est deacutefini par DefaultRoot globalement pour le serveur (soit directement soit dans une section ltGlobalgt) pour une connexion anonyme (ltAnonymous gt) dans un hocircte virtuel (ltVirtual Hostgt voir fiche Apache)

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 26: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

26

Attribution de droitsLa limitation des droits dutilisation des dossiers seffectue par la directive Limit ltLimit liste_actionsgt

Order Allow Deny ordre de traitement des droits AllowUser monCompte autorise laccegraves pour lutilisateur monCompteDenyAll refuse laccegraves agrave tous les autres

ltLimitgt

Les principales actions que lon peut restreindre par LIMIT sont deacutecrites dans le tableau ci-dessous Options Explication

ALL Tous les droits

APPE Ajouter du contenu agrave un fichier (Append) rarr Modifier

CWD Se deacuteplacer dans larborescence des dossiers (Change Working Directory)

DELE Suppression de fichiers

MKDRMD Creacuteer Supprimer des dossiers

RETR Reacutecupeacuteration de fichiers du serveur par le client (Download)

RNFRRNTO Renommer des fichiers existant (Rename From Rename To)

STOR Envoie de fichiers du client vers le serveur (Upload)

WRITEREAD Eacutecrire (creacuteer) ou Lire des fichiers

On peut redeacutefinir des droits agrave un niveau infeacuterieur du dossier de connexion gracircce agrave la directive Directory ltDirectory varRessourcesBTSgt speacutecifications pour le dossier varressourcesBTS

ltLimit WRITEgt droit deacutecritureOrder Allow Deny ordre de traitement des droits AllowGroup gpProfs reacuteserveacute aux enseignantsDenyAll refuse laccegraves en eacutecriture agrave tous les autres

ltLimitgtltLimit READgt droit de lecture

Order Allow Deny ordre de traitement des droits AllowAll autoriseacute agrave tout le monde

ltLimitgtltDirectorygt

Exemple du fichier de base pour un partage anonymeltAnonymous homeftpgt partage anonyme sur le dossier homeftp

User ftp compte qui gegravere ce partage (compte anonyme)Group ftp groupe du compte

UserAlias anonymous ftp noms eacutequivalents pour se connecter en anonyme

RequireValidShell off le compte anonyme nexiste pas sous Linux

MaxClients 10 limite agrave 10 connexions anonymes simultaneacutees

ltDirectory gt tout dossier contenu sous homeftpltLimit WRITEgt interdit en eacutecriture

DenyAllltLimitgt

ltDirectorygtltAnonymousgt

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 27: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

27

PROFTP ET AUTHENTIFICATION DEPORTEE

Par deacutefaut lauthentification des utilisateurs par ProFTP se fait par les comptes existant sous Linux Il est possible de reporter sur un systegraveme plus souple cette authentification un fichier de comptes et groupes (non traiteacute) un annuaire (non traiteacute) ou une base de donneacutees Pour ce faire on devra activer certains modules et renseigner certains paramegravetres dans les fichiers de configuration apregraves avoir installeacute les modules correspondant

Prise en charge de lauthentification par MySQLProFTP doit ecirctre compleacuteteacute par un module de gestion de la prise en charge de lauthentification par une base de donneacutees Pour MySQL on installera le paquetage proftpd-mysqlOn procegravedera aux parameacutetrages ci-dessous dans les fichiers correspondant

Fichier proftpdconfDans ce fichier on se contente dinclure le parameacutetrage relatif agrave SQL preacutesent dans un autre fichier Include etcproftpdldapconf si on utilise un serveur LDAPInclude etcproftpdsqlconf agrave deacute-commenter pour lutilisation dune base de donneacutees

Fichier modulesconfLe fichier indique les modules agrave charger parmi ceux preacutesents dans le dossier usrlibproftpd Dans le cas de lutilisation dune base de donneacutees MySQL on deacute-commentera les lignes suivantes LoadModule mod_sqlc prise en charge de lauthentification par un SGBDLoadModule mod_sql_mysqlc nom du SGBD avec lequel on est en contact

Fichier sqlconfCest ici quon deacutecrira le type dauthentification le nom des tables et les champs dans lesquels on ira veacuterifier les informations dauthentification transmisesltIfModule mod_sqlcgt parameacutetrages agrave prendre en compte si le module SQL est activeacuteSQLBackend mysql nom du SGBD qui contient les tables des comptesSQLEngine onSQLAuthenticate users groups indique le niveau de droits (utilisateurs groupes les deux)SQLAuthTypes Crypt Plaintext mode de gestion des mots de passe crypteacute etou en clair

SQLAuthTypes Backend Crypt si on veut que ce soit MySQL qui fasse lauthentificationSQLConnectInfo proftpBDDlocalhost root mproot coordonneacutees dun compte MySQL

(agrave adapter)SQLUserInfo ftpuser userid passwd uid gid homedir shell tables pour les comptes dutilisateur

et champs eacutetudieacutes SQLUserWhereClause LoginAllowed = true naccepte que les comptes actifsSQLGroupInfo ftpgroup groupname gid members tablechamps eacutetudieacutes pour groupes SQLLogFile varlogproftpdmysqllog lieu de stockage des journauxltIfModulegt

CLIENT FTP

Laccegraves agrave un serveur FTP doit se faire par un client le navigateur internet qui est geacuteneacuteralement limiteacute agrave la reacutecupeacuteration de contenu (mais IE

permet lenvoi) un client avec interface graphique type Filezilla la ligne de commande (ou du script) des fonctions de langage de programmation voir par exemple ici pour PHP

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 28: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

28

Connexion avec un serveurLa connexion agrave un serveur utilise les eacuteleacutements suivants [utilisateur [motpasse] ] adresse [port]

Exemples ftpmonCompte1921680152ftp19216801542121ftpmonComptemonPWD19216801894400

Eleacutements de la ligne de commande FTP (voir plus de possibiliteacutes sur comment ccedila marche)

Commande Utilisation Exemples

ftp Passe en mode ligne de commande et reacutealise eacuteventuellement la connexion

ftp ftp 1921680156ftp monCompte1921680152

open Ouvre une connexion avec un serveur

open 1921680156

ls Liste le contenu dun dossier ls ls sousDossierls dossierSousDossier

pwd Affiche le dossier courant (Print Working Directory)

mkd rmd Creacutee Supprime un dossier

put get Envoie Reacutecupegravere un document put fichierChezMoi envoie le fichier vers le serveurput fich1 fich2 envoie le fichier et le renommeget fichierDistant reacutecupegravere le fichier du serveurget ficDist ficLoc reacutecupegravere le fichier et le renomme

Exeacutecute une commande sur la machine locale

cd se deacuteplace dans larborescence locale md nomDossier creacutee un dossier en local

ANNEXE Script pour la creacuteation de la base

Creacuteation de la base et dun compte de connexion-- creacuteation de la base de donneacuteesCREATE DATABASE proftpBDD-- connexion agrave la baseUSE proftpBDD -- creacuteation dun compte MySQL pour geacuterer la base Evite dutiliser le compte rootGRANT USAGE ON proftpBDD TO proftpRootlocalhost IDENTIFIED BY mpProftpRoot WITH GRANT OPTION

Creacuteation des tables-- Table pour les groupesCREATE TABLE ftpgroup (groupname VARCHAR(16) NOT NULL DEFAULT gid SMALLINT (6) NOT NULL default 5500 -- la valeur 5500 est libre de choixmembers VARCHAR(16) NOT NULL default PRIMARY KEY (groupname )) TYPE=MyISAM COMMENT=Groupes pour ProFTP-- Table pour les utilisateurs

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 29: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

29

CREATE TABLE ftpuser (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTuserid VARCHAR(32) NOT NULL DEFAULT passwd VARCHAR(32) NOT NULL DEFAULT uid SMALLINT (6) NOT NULL default 5500gid SMALLINT (6) NOT NULL default 5500email VARCHAR(255) NOT NULLhomedir VARCHAR(255) NOT NULL DEFAULT shell VARCHAR(16) NOT NULL DEFAULT binfalsecount INT(11) NOT NULL DEFAULT 0accessed DATETIME NOT NULL default 0000-00-00 000000dl_bytes BIGINT (20) NOT NULL dl_count BIGINT (20) NOT NULLul_bytes BIGINT (20) NOT NULL ul_count BIGINT (20) NOT NULL modified DATETIME NOT NULL default 0000-00-00 000000LogInAllowed ENUM(truefalse) NOT NULL DEFAULT truePRIMARY KEY (id)) TYPE=MyISAM COMMENT=Utilisateurs pour ProFTP

Insertion des donneacutees-- insertion dun compte dans la table pour se connecter -- ATTENTION remplacer le nom et le mot de passe par ceux dun compte existant sur-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpdconf-- Remarque Encrypt utilise le cryptage UnixLinux ne fonctionne pas pour MySQL Windows -- peut-ecirctre que des installations sont possibles pour rendre opeacuterationnel sous Windows (non testeacute)INSERT INTO ftpuser (id userid passwd uid gid homedircount accessed modified LogInAllowed )VALUES (utilFTPencrypt(mpUtilFTP) 55005500homeutilFTPtrue)-- Ajout dun groupe dont lutilisateur est membreINSERT INTO ftpgroup VALUES (Groupe FTP5500utilFTP)

Source internet

httpdocubuntu-frorgproftpd quelques explications en franccedilais httpwwwcgsecurityorgArticlesproftpdhtml deacutetail bien expliqueacute sur la

configuration des accegraves anonymes et sur les droits sur les partages httpwwwproftpdorgdocsdirectiveslinkedconfigurationhtml en anglais sur

le site de loutil la liste des directives des modules et leur explication preacutecise httpdocubuntu-frorgproftpd_et_mysql installation proftpd et authentification

MySQL sur Ubuntu Article de Linux Plus Magazine 062009

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 30: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

30

FICHE 6 CONNEXION ET ECHANGES CRYPTES AVEC SSLTLS

PRESENTATION

Protection des eacutechanges au-delagrave du reacuteseau localLa mise en place dun Firewall permet de proteacuteger le contenu preacutesent agrave linteacuterieur dun reacuteseau et dempecirccher la fuite de donneacutees vers lexteacuterieur Mais pour les eacutechanges autoriseacutes linformation est diffuseacutee au delagrave de notre sphegravere de controcircle et il faut ajouter une capsule de protection autour de linformation que lon transfegravere (on parle dencapsulation) si lon souhaite en empecirccher la lecture par des personnes exteacuterieures agrave leacutechange

Cleacute de cryptagePour partager des messages de maniegravere confidentielle deux extreacutemiteacutes dune communication doivent disposer dun secret (une cleacute) qui permettra de coder un message (on parle de chiffrement) agrave leacutemission et de le deacutecoder (ou encore deacutecrypter) agrave larriveacutee Si cest la mecircme cleacute qui permet le cryptagedeacutecryptage on dira quelle est symeacutetriqueSi on veut un niveau de seacutecuriteacute accru on reacutealisera lencryptage par le biais dune cleacute distribueacutee agrave tous les eacutemetteurs potentiels (cette cleacute est publique) et seul le destinataire possegravedera la cleacute capable de reacutealiser le deacutechiffrement (la cleacute est donc priveacutee) On parle alors dun cryptage asymeacutetrique

Cryptage cleacute publique cleacute priveacuteeLa cleacute publique peut ecirctre vue comme un cadenas ouvert dont la serrure est baseacutee sur lempreinte de la cleacute priveacuteeOn distribue des cadenas (cleacute publique) agrave des interlocuteurs qui demandent agrave entrer en communication Ils enferment leur message dans des boicirctes quils cadenassent avec cette cleacute publique (cryptage) La cleacute priveacutee est la seule agrave mecircme douvrir les cadenas et de donner accegraves au contenu de la boicircte

CertificatDans le cas dun accegraves agrave un serveur public seacutecuriseacute (par exemple pour geacuterer ses comptes ou payer en ligne) il est difficile de distribuer la cleacute publique agrave lavance Le principe est alors de deacuteposer sur le serveur un objet qui remplira les objectifs suivants

crypter linformation envoyeacutee vers le serveur avec la cleacute publique contenue dans le certificat garantir linteacutegriteacute des donneacutees transfeacutereacutees gracircce agrave des techniques de hachage garantir lidentiteacute du serveur en preacutecisant toutes les coordonneacutees de lentreprise qui le met agrave

disposition et eacuteventuellement de lorganisme qui en garantit la validiteacute (indispensable pour le paiement en ligne)

indiquer tous les algorithmes de cryptage supporteacutes par le serveur

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 31: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

31

Cet eacuteleacutement est un fichier textuel nommeacute certificat Divers formats existent donc le standard de lUnion Internationale des Teacuteleacutecoms (Certificat X509)

SSLTLSParmi les outils susceptibles de garantir le cryptage SSL (Secure Socket Layer Couche de socket seacutecuriseacute) deacutefini par la socieacuteteacute Netscape en 1994 (V1) et deacuteployeacute publiquement en version 2 (1995)sest imposeacute comme la technique de seacutecurisation des eacutechanges en environnement internet Il sapplique agrave tous les protocoles de la couche application puisquil se positionne plus bas dans le modegravele OSI (couche 5 Session) Il supporte les certificats X509 TLS (Transport Layer Security) est le nom du protocole depuis 2001 qui remplace la version 31 de SSL Il est maintenant deacutefinit par lIETF (Internet Engineering Task Force) qui se charge de deacutefinir les techniques utiliseacutees sur Internet

La mise en place dun service seacutecuriseacute par TLS permettra deacuteviter que lon puisse exploiter le contenu en cas dinterception des eacutechanges entre le client et le serveur

PROCEDURE

La deacutemarche est commune quel que soit le service que lon souhaite seacutecuriser Seuls les fichiers agrave modifier changent dun service agrave lautre

1 Creacuteer le reacutepertoire pour stocker les cleacutes et certificats2 Creacuteer la cleacute priveacutee 3 Creacuteer le certificat X509 agrave partir de la cleacute priveacutee4 Parameacutetrer le service concerneacute

activer le module configurer les fichiers pour quils utilisent la cleacute et le certificat mettre en eacutecoute sur les ports speacutecifiques

5 Tester depuis un client en lui indiquant ladresse et le port adeacutequats6 Eacuteventuellement accepter le certificat auto-signeacute (attention cela peut ecirctre un danger si on ne

connaicirct pas la source)

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 32: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

32

MODE OPERATOIRE

MISE EN PLACE DUN CERTIFICAT AVEC OpenSSL

OpenSSL est une transposition OpenSource (httpwwwopensslorg) des preacuteconisations de lIETF pour la mise en place dune couche seacutecuriseacutee Le nom est resteacute OpenSSL mais la bibliothegraveque supporte aussi la version TLS OpenSSL gegravere de nombreux algorithmes de cryptage (AES DES RSA) et de hachage (SHA MD5 hellip)

Il propose notamment des commandes pour la creacuteation de cleacute secregravete (gendh genrsa ) ou la geacuteneacuteration de certificat (x509)

1 Creacuteation dune cleacute priveacuteeLa base des techniques de cryptage asymeacutetrique repose sur la preacutesence agrave un endroit unique dune cleacute priveacutee Elle permettra de creacuteer une cleacute publique (ou un certificat) et de deacutecrypter ce qui aura eacuteteacute chiffreacute par cette cleacute publique

On utilisera (pour lalgorithme RSA) la commande genrsa de OpenSSLopenssl genrsa -out nom_fichier_cle taille_cle

Exemple creacutee une cleacute priveacutee dans un dossier personnaliseacutecd etcsslmkdir mesClescd mesClesopenssl genrsa -out cleGSBkey 1024On pourra alors eacutediter la cleacute et en lire son contenu Cette mecircme cleacute peut servir agrave eacutetablir des certificats diffeacuterents pour des usages distincts (serveur FTP serveur Web messagerie etc)

2 Creacuteation dun certificat X509La cleacute priveacutee ne doit jamais ecirctre diffuseacutee On va donc geacuteneacuterer la partie publique sous forme dun certificat Pour que ce dernier soit accessible aux navigateurs on a recours au format standard X509

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 33: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

33

La creacuteation va donc passer par deux eacutetapes Creacuteation dun certificat geacuteneacuterique (on devra renseigner les coordonneacutees de lentreprise)

openssl req -new -key nom_cle -out nom_certif_genericcsr

Transformation vers un format X509openssl x509 -req -days nb_jours -in nom_certif_genericcsr -signkey nom_cle -outnom_certif_X509crt

Exemple creacuteation dun certificat dans un dossier speacutecifique agrave partir de la cleacute RSAcd etcsslmkdir mesCertifscd mesCertifsopenssl req -new -key mesClescleGSBkey -out GSBCertGencsropenssl x509 -req -days 365 -in GSBCertGencsr -signkey mesClescleGSBkey -outGSBcertifcrt

On peut aussi choisir de stocker le certificat directement dans le reacutepertoire du service quil concerne (par exemple dans etcapache2mesCertifs)

Le certificat est alors precirct

Il ne reste plus quagrave configurer les services susceptibles de sappuyer sur ce certificat

CONFIGURATION DAPACHE AVEC SSLTLS

La configuration neacutecessite lactivation du module SSL pour Apachea2enmod sslSi le module est deacutejagrave activeacute un message lindique

On peut alors voir dans etcapache2mods_enabledsslload que la ligne ci-dessous est deacute-commenteacuteeLoadModule ssl_module usrlibapache2modulesmod_sslsoDans le fichier portsconf de Apache on veacuterifiera que le serveur eacutecoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnaliseacutee) Dans le fichier etcapache2sites-enabled000-Default (ou dans httpdconf) on ajoutera un hocircte virtuel pour cette eacutecoute on adaptera le numeacutero de port conformeacutement agrave ce qui a eacuteteacute eacutecrit dans portsconfltVirtualHost 443gt

DocumentRoot varwwwSSLEngine on active le SSLSSLCertificateFile etcsslmesCertifsGSBCertifcrt chemin du certificat X509SSLCertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute priveacutee

ltVirtualHostgt

Il faudra redeacutemarrer Apache qui indiquera si une erreur eacuteventuelle est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 34: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

34

Controcircle depuis un navigateurDans la barre de navigation du navigateur on tapera httpsadresseServeur

Du fait que le certificat que nous avons creacuteeacute nest pas garanti par un organisme officiel le navigateur mettre en garde sur le manque de confiance accordeacutee agrave un certificat signeacutee par son creacuteateur On doit veacuterifier quun cadenas fermeacute au bas du navigateur atteste dune navigation seacutecuriseacutee

CONFIGURATION DE ProFTP AVEC SSLTLS

Pour commencer on devra indiquer dans le fichier etcproftpdmodulesconf quil faut activer TLSLoadModule mod_tlsc

On ira ensuite preacuteciser au fichier proftpdconf dinclure le fichier de configuration de tls en deacute-commentant la ligne suivante Include etcproftpdtlsconf

Dans ce fichier tlsconf on devra trouver au minimum les eacuteleacutements suivants ltIfModule mod_tlscgt

TLSEngine on active le TLSTLSLog varlogproftpdtlslog dossier pour enregistrer les journaux tlsTLSProtocol SSLv23 versions supporteacutees (2 et 3)

TLSRSACertificateFile etcsslmesCertifsGSBCertifcrt chemin du certifTLSRSACertificateKeyFile etcsslmesClescleGSBkey chemin de la cleacute

TLSVerifyClient off noblige pas lauthentification des clients pour TLSTLSRequired on peut obliger les clients agrave utiliser TLS

ltIfModulegt

Il faudra bien entendu redeacutemarrer le service proftpd qui indiquera si une erreur est rencontreacutee (dans le chemin dans le nom du fichier dans le contenu du certificat etc)

Test depuis le clientOn accegravedera depuis un client FTP en contactant le serveur par une connexion FTP SSLTLS Explicite (ici sous FileZilla Client)

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc

Page 35: Description de la ressource - … · L’installation d’applications è (DNS, DHCP, serveur Web, etc) sous Linux é les droits administrateur. La commande « apt-get » est le gestionnaire

35

On rencontrera la mecircme mise en garde que pour HTTP du fait de lauto-signature du certificat

Sources

httphttpdapacheorgdocstrunkfrsslssl_introhtml sur le site de Apache une explication deacutetailleacutee des principes du chiffrement du rocircle dun certificat des deacuteclinaisons de SSLTLS

httpwwwvanemerycomLinuxApacheapache-SSLhtml un tutoriel (en anglais) assez complet qui preacutesente les diverses manipulations pour seacutecuriser un serveur web Apache avec authentification par certificat cocircteacute client demande de mot de passe pour se connecter au site etc