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.