Un serveur informatique est un dispositif informatique matériel ou

Transcription

Un serveur informatique est un dispositif informatique matériel ou
Un serveur informatique est un dispositif informatique matériel ou logiciel qui offre des
services à différents clients.
Nos services proposés :
- Le partage de fichiers : Serveur FTP
- Le stockage en base de données : Serveur BDD
- L'accès à au site de GSB via une adresse IP : Serveur Web
Schéma à réaliser :
Serveur Web / FTP
Alimente et consulte la base
de données (frais et
comptes-rendus)
Visiteur
Alimentent et consultent les
compte rendus et les frais
Serveur de base de données
Mettent à jour la prise en
compte des frais (enregistré,
validé, réglé)
Service Comptabilité
Développent et mettent à
jour le site
Service développement
Réseau GSB
Le serveur de base de données sera dans notre cas le même que le serveur Web / FTP.
Le service développement sera le seul autorisé au partage de fichiers et aura un accès
possible au même compte que les visiteurs et les acteurs du service comptabilité à
travers la base de données.
Introduction
Nous avons choisit un environnement linux pour ses capacités plus modulable. Ainsi nous
aurons la version de Debian grâce à une exportation de machine virtuelle vierge. Nous
avons donc une Virtual Box pour pouvoir l'importer et l'utiliser. Pour éviter tout problème
majeur durant les installations nous avons dupliqué cette machine contenant tous les
fichiers de configuration mais fort heureusement sans jamais y avoir eu recours.
Tous paramétrages et installations des paquets s'effectueront par ligne de commande à
l'aide du terminal super-utilisateur, afin d'éviter le préfixage du sudo et la demande de
confirmation. Durant le paramétrage, certaines modifications seront à effectuer sur les
fichiers texte pour autoriser certaines fonctionnalités.
Dans notre cas, il s'agit d'offrir a nos visiteurs une application Web pour centraliser les
comptes rendus des visites accessible par un navigateur. Malheureusement, l'accès
s'effectuera par adresse IP et non par FQDN (Fully Qualified Domain Name) qui
correspond au nom de domaine uniquement par manque de temps.
L'accès est possible de toutes les machines du réseau LAN : 172.16.0.0
Cependant dans un but sécuritaire, l'application n'est accessible qu'aux seuls acteurs de
l'entreprise puisque dès l'accès une connexion à son compte par authentification est mise
à disposition.
L'adresse IP attribuée pour notre site GSB sera la suivante : 172.16.131.6
Configuration Linux
Lors de la première utilisation du système d'exploitation, pour permettre une mise à jour
des paquetages une première commande dans le Shell est nécessaire : apt-get update
L'attribution réseau a été effectuée à l'aide de l'interface graphique située dans le coin
droit supérieur.
Le nom de domaine pour accéder au réseau est le suivant : bts-sio.ozenne.fr
Il est donc possible d'accéder a Internet grâce à la carte réseau paramétrée en NAT (par
défaut) ainsi capable de faire correspondre les adresses IP et d'accéder au portail de
connexion.
service nom_service restart (ou reload) // équivaut possibilité de redémarrer tout fichier
/etc/init.d/apache2 restart
cp /etc/apache2/apache2.conf /etc/apache2/apache2.old1 // copie du fichier de config
Serveur Web
Le serveur Web permet l'utilisation du protocole HTTP (port80) pour exécuter des pages
de script du cote serveur. On utilisera le serveur Apache qui est très en vogue. Dans
notre cas, il exécutera les pages du site GSB. Installation du paquetage : apt-get install
apache2
Installation des paquets afin d'ajouter des fonctions d'authentification :
- apt-get install apache2-mpm-prefork
- apt-get install libapache2-mod-chroot
- apt-get install libapache2-mod-auth-pam
- apt-get install libapache2-mod-auth-sys-group
Ainsi 3 fichiers sont générés dans /etc/apache2 : apache2.conf, ports.conf et httpd.conf
Il est également nécessaire de mettre en place l'interpréteur PHP pour transformer les
pages. Installation du paquetage : apt-get install php5
Redémarrage du serveur apache : # service apache2 restart
Un test peut être établi pour vérifier son bon fonctionnement.
Installation de modules pour gérer l'échange entre Apache et MySQL :
- apt-get install libapache2-mod-auth-mysql
- apt-get install php5-mysql // pour permettre l'échange entre PHP et MySQL que l'on
installera par la suite
Redémarrage du serveur apache : # service apache2 restart
Un test peut être établi pour vérifier le bon fonctionnement avec cette fois ci une
connexion à une base MySQL.
Les Virtual Hosts (en français "hôtes virtuels") permettent de scinder le serveur en
plusieurs sites, mais ceci ne nous intéressera pas dans notre configuration de serveur.
On peut donc tester le bon fonctionnement dans le navigateur :
Image =====> It Works
Nous obtenons un grand "It Works", c'est la page par défaut
Serveur BDD MySQL
Le serveur de Base De Données permet le stockage et l'exploitation de données. Dans
notre cas, il s'agit de stocker les utilisateurs et leurs informations enregistrés à travers le
site. Installation du paquetage : apt-get install mysql-server
Le mot de passe attribué au root est le suivant : btssio
Il n'y aura pas d'outils préconfigurés à interface graphique comme WAMP ou EasyPHP
pour administrer notre base, mais une installation de modules indépendants MySQL ???
Nous avons choisit de migrer la base de données :
1. - Vérifier la connexion : mysql -u nomUtilisateur [-p] [nomBaseDonnees]
2. use nom_base_de_donnees
CREATE DATABASE GSB1
...
Afin de garantir une sécurité, il faut entrer la commande suivante :
mysql_secure_installation // qui va permettre d'enlever l'accès anonyme et l'accès root
depuis un autre ordinateur
service mysql status
Serveur FTP (File Transfer Protocol)
Le serveur Pro FTP va dans notre cas nous servir pour la mise à jour des pages Web
accessible par le service développement avec authentification du compte
administrateur :
- login = util
- mot de passe = btssio
Installation du paquetage :
indépendamment
apt-get install proftpd
// avec choix de l'option :
Ainsi 6 fichiers sont générés dans /etc/proftpd : proftpd.conf, sql.conf, ldap.conf, tls.conf,
modules.conf, virtuals.conf
Installation du paquetage : apt-get install proftpd-mod-mysql
Création de la base et d'un compte de connexion
-- création de la base de données
CREATE DATABASE proftpBDD;
-- connexion à la base
USE proftpBDD ;
-- création d'un compte MySQL pour gérer la base. Evite d'utiliser le compte root
GRANT USAGE
ON proftpBDD.*
TO proftpRoot@'localhost'
IDENTIFIED BY 'mpProftpRoot'
WITH GRANT OPTION;
Création des tables
-- Table pour les groupes
CREATE TABLE ftpgroup (
groupname VARCHAR(16) NOT NULL DEFAULT '',
gid SMALLINT (6) NOT NULL default '5500', -- la valeur 5500 est libre de choix
members VARCHAR(16) NOT NULL default '',
PRIMARY KEY (groupname )
) TYPE=MyISAM COMMENT='Groupes pour ProFTP';
-- Table pour les utilisateurs
CREATE TABLE ftpuser (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
userid VARCHAR(32) NOT NULL DEFAULT '',
passwd VARCHAR(32) NOT NULL DEFAULT '',
uid SMALLINT (6) NOT NULL default '5500',
gid SMALLINT (6) NOT NULL default '5500',
email VARCHAR(255) NOT NULL,
homedir VARCHAR(255) NOT NULL DEFAULT '',
shell VARCHAR(16) NOT NULL DEFAULT '/bin/false',
count INT(11) NOT NULL DEFAULT '0',
accessed DATETIME NOT NULL default '0000-00-00 00:00:00',
dl_bytes BIGINT (20) NOT NULL ,
dl_count BIGINT (20) NOT NULL,
ul_bytes BIGINT (20) NOT NULL ,
ul_count BIGINT (20) NOT NULL ,
modified DATETIME NOT NULL default '0000-00-00 00:00:00',
LogInAllowed ENUM('true','false') NOT NULL DEFAULT 'true',
PRIMARY KEY (id)
) TYPE=MyISAM COMMENT='Utilisateurs pour ProFTP';
Insertion des données
-- insertion d'un compte dans la table pour se connecter
-- ATTENTION ! remplacer le nom et le mot de passe par ceux d'un compte existant sur
-- le serveur Linux si on a choisi RequireValidShell on dans le fichier proftpd.conf
-- Remarque : "Encrypt" utilise le cryptage Unix/Linux, ne fonctionne pas pour MySQL
Windows,
-- peut-être que des installations sont possibles pour rendre opérationnel sous Windows
(non testé)
INSERT INTO ftpuser
(id ,userid , passwd ,uid ,gid ,homedir,count ,accessed ,modified ,LogInAllowed
)
VALUES ('','utilFTP',encrypt('mpUtilFTP'),
'5500','5500','/home/utilFTP','','','','true');
-- Ajout d'un groupe dont l'utilisateur est membre
INSERT INTO ftpgroup VALUES ('Groupe FTP','5500','utilFTP');
Il faut ensuite appeler le fichier sql.conf dans le fichier proftpd.conf à l'aide d'un include.
IMPRIM ECRAN
Puis enfin modifier le fichier modules.conf (dans /etc/proftpd) en ajoutant les modules sql
et mysql à charger lors du démarrage du service.
Redémarrage du service proftpd : # service proftpd restart
Installation du paquetage : apt-get install proftpd-mysql // afin de permettre la prise en
charge de mysql
Utilisation de FileZilla pour transférer les pages WEB (HTML & PHP) ainsi que pour les
placer dans /var/www.
Dans le fichier proftpd.conf (dans /etc/proftpd), la ligne suivante est à dé-commenter pour
l'utilisation de la base de données : Include /etc/proftpd/sql.conf
Dans le fichier modules.conf (dans /etc/proftpd), les lignes suivantes sont à décommenter pour l'utilisation de la base de données : LoadModule mod_sql.c &
LoadModule mod_sql_mysql.c
Rappel : Pour dé-commenter, il faut enlever '#' devant la ligne concernée !
Elément
Usage
#
Commentaire textuel qui donne des explications sur
les options
;
Commente une ligne de paramétrage.
A dé commenter si on veut activer l'option
Mise en place SSL/TLS
SSL (Secure Socket Layer) va donc utiliser le principe de la cryptographie asymétrique.
Une clé publique et une clé privé vont être utilisées. La première sert à crypter c'est le
chiffrement et la seconde sert à décrypter. Seule la clé publique sera transmise durant
les échanges Client/serveur. TLS quand à lui est le nom du protocole utilisé.
Installation du paquetage : apt-get install openssl
On va dans un premier temps créer un répertoire pour y mettre l'ensemble des clés.
On va ensuite générer la clé privé puis le clé publique qui nous sera utile pour ce serveur.
Voici les commandes qui sont à appliquer :
cd /etc/ssl // avancée dans l'arborescence jusqu'au dossier ssl
mkdir mesCles // création d'un répertoire nommé mesCles
cd mesCles // avancée dans le répertoire mesCles
openssl genrsa -out cleGSBpriv.key 1024 // création de la clé privée nommée cleGSBpriv
Imprim écran de la clé privé !
openssl req -new -key cleGSBpriv.key -out cleGSBpub.csr // création d'une clé publique
nommée cleGSBpub
openssl x509 -req -days 365 -in cleGSBpub.csr -signkey cleGSBpriv.key -out GSBCert.crt
// transformation au format X509 pour permettre l'accès aux navigateurs pendant 365
jours
Il faut ensuite pouvoir autoriser le service en activant le module SSL pour Apache.
Installation du paquetage : apt-get install a2enmod ssl ???
Redémarrage du serveur apache : # service apache2 restart
La preuve du bon fonctionnement sera l'apparition du 'https' dans l'URL et la présence
d'un cadenas fermé. Ou mieux on peut tester les paquets avec Wireshark ce qui est
parfaitement adaptée. Ainsi on pourra attester que notre serveur Web est sécurisé.
Pour commencer, on devra indiquer dans le fichier /etc/proftpd/modules.conf qu'il faut
activer TLS
LoadModule mod_tls.c
On ira ensuite préciser au fichier proftpd.conf d'inclure le fichier de configuration de tls
en dé-commentant la ligne suivante :
Include /etc/proftpd/tls.conf
Dans ce fichier tls.conf on devra trouver au minimum les éléments suivants :
<IfModule mod_tls.c>
TLSEngine on ;active le TLS
TLSLog /var/log/proftpd/tls.log ; dossier pour enregistrer les journaux tls
TLSProtocol SSLv23 ; versions supportées (2 et 3)
TLSRSACertificateFile /etc/ssl/mesCertifs/GSBCertif.crt ;chemin du certif
TLSRSACertificateKeyFile /etc/ssl/mesCles/cleGSB.key ; chemin de la clé
TLSVerifyClient off ; n'oblige pas l'authentification des clients pour TLS
#TLSRequired on ; peut obliger les clients à utiliser TLS
</IfModule>
Redémarrage du serveur proftpd : # service proftpd restart
Un test peut être établi pour vérifier son bon fonctionnement en accédant depuis un
Client FTP à travers le logiciel Filezilla avec une connexion dite Explicite (SSL/TLS).
Finition
A l'aide d'un fichier index.php, l'exécution sera automatique lors de la saisie de l'adresse
IP.
De ce fait, dans /var/www la première page sera nommée de cette manière.
A la fin de cette procédure, il est nécessaire de redémarrer l'ordinateur afin de lui
permettre la mise à jour de l'ensemble des paquets installés précédemment.