IUT Informatique 1A - FI S1 Introduction aux syst`emes - e
Transcription
IUT Informatique 1A - FI S1 Introduction aux syst`emes - e
IUT Informatique 1A - FI S1 Introduction aux systèmes informatique 2015 – 2016 Sylvain Chevallier [email protected] Préambule TP 7 - Serveurs - groupe A Notions : Réseaux Prochain TP : Systèmes de fichiers Evaluation : Compte-rendu ramassé à la fin du TP. Pour ce TP, vous démarrerez sur le client CentOS léger. Vous devrez installer un serveur Web et un serveur FTP, en suivant les indication du tutoriel indiqué sur le e-campus. Question 1 : 1. Où est située la commande ifconfig 2. Quels sont les utilisateurs qui peuvent l’utiliser ? 3. Lorsque le réseau est “planté”, comment le relancer sans redémarrer la machine ? Question 2 : 1. Comment éviter d’utiliser les adresses IP si on connaı̂t le nom de la machine, en local, ou du site, sur internet ? 2. Tester en vérifiant la connectivité de la machine avec une site internet sous deux formes différentes Question 3 : 1. Représenter la configuration réseau du système. Doivent apparaı̂tre : — votre machine et une autre, celle de votre voisin par exemple. Vous indiquerez les adresses IP — le réseau de l’IUT. Indiquez les adresses IP du serveur, de la passerelle, etc Question 4 : 1. Installer un serveur FTP sur votre machine en utilisant le tutoriel joint. 2. Créez une arborescence pour un cours : cours, énoncés, exercices, réponses, compte-rendus, etc. sur le serveur destinée à être visible par les utilisateurs. 3. Tester le serveur en upload et download 1 Question 5 : 1. Accédez au serveur FTP à l’aide d’un client Firefox (upload et download ) 2. Accédez au serveur FTP à l’aide d’un client filezilla (upload et download ) 3. Accédez au serveur FTP en interface par ligne de commande (upload et download ) CentOS : Déploiement d’un serveur Web grâce à VSFTPD et Apache La version originale de ce tutoriel, écrit par Simon Nowis, est disponible à l’adresse : http://www.bootyourbrain.com/utilisation/centos-serveur-web-apache-vsftpd/. Le voici reproduit dans une version adaptée aux machines de l’IUT. Introduction Il est assez courant d’être amené à avoir besoin de déployer un serveur Web local, pour faire des tests sur des versions de pré-production par exemple. J’ai dû moi-même mettre en place un serveur Web sur mon réseau local. Mais j’ai vite remarqué un certain “vide” à ce sujet : aucun tutoriel complet n’existait ! Après pas mal de temps de recherches et de galères pour mettre en place mon serveur, je me suis décidé à créer moi-même un tutoriel complet pour que vous puissiez mettre en place votre propre serveur Web sous la distribution Linux CentOS. Pour notre serveur Web, nous auront besoin de plusieurs services : — VSFTPD, le service de FTP. — Apache, le serveur PHP. — MySQL, pour nos bases de données. — phpMyAdmin, pour simplifier l’utilisation des bases de données MySQL. — Une machine cliente sous Windows et FileZilla. On admet que vous venez tout juste d’installer CentOS sur votre machine. Mise à jour de CentOS Avant de commencer toutes manipulations, nous allons mettre à jour les paquets de notre CentOS. Commencez par ouvrir le Terminal qui se trouve sous l’onglet Applications, Outils système de votre barre de navigation. Une fois le Terminal lancé, nous allons devoir nous connecter en utilisateur root , l’utilisateur qui a tous les droits sur le serveur. Pour ce faire, tapez cette commande : su Un mot de passe vous est demandé. Entrez celui que vous avez choisi pour l’utilisateur “root” lors de l’installation de CentOS, soit #TpLinux#. Une fois validé, vous devrez avoir “[root@votrepc NomUtilisateur]” au début de la ligne de votre Terminal. IMPORTANT : L’ensemble des actions de ce tutoriel se font en étant connecté en root. C’est maintenant que nous mettons à jour les paquets de CentOS. Entrez donc la commande suivante : yum update yum -y “yum” est le gestionnaire de paquets de CentOS. Ici, nous mettons à jour ce dernier. L’option “-y” permet d’accepter automatiquement l’installation des paquets qui doivent être mis à jour. Une fois fait, nous allons mettre à jours tous les autres paquets de CentOS avec cette commande : yum update -y Une fois terminé, notre CentOS est à jour, nous allons pouvoir commencer l’installation de notre serveur Web. Installation des services Comme dit précédemment, nous allons avoir besoin de plusieurs services. Nous allons donc les installer via le gestionnaire de paquets. Taper cette commande : yum install vsftpd httpd mysql mysql-server -y Nous installons donc VSFTPD, notre service FTP, Apache (httpd), le client MySQL et le serveur MySQL. Nous allons maintenant passer à la configuration de ces services. 2 Configurer VSFTPD La première chose que nous souhaitons faire est que VSFTPD se lance au démarrage du serveur. Cela ce fait très simplement avec cette commande : chkconfig vsftpd on VSFTPD fonctionne avec deux types d’utilisateurs : Les utilisateurs locaux et les utilisateurs virtuels. Les utilisateurs sont les utilisateurs Linux. Comme nous souhaitons par la suite nous connecter à distance à notre serveur, nous allons nous intéresser aux utilisateurs virtuels. Nous allons commencer par sauvegarder le fichier de configuration qui a été créé par défaut. Pour cela, nous allons tout simplement le copier : cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.save Pour configurer VSFTPD, nous devons éditer le fichier vsftpd.conf. Nous utiliserons la commande “nano”, qui permet d’éditer ou de créer un fichier. S’il n’est pas installé par défaut, il faut utiliser la commande : yum install nano Plutôt que de supprimer tout son contenu, qui est très long, nous allons supprimer le fichier de configuration actuel et en créer un nouveau. Pour supprimer le fichier de configuration de VSFTPD, entrez cette commande : rm /etc/vsftpd/vsftpd.conf Puis, nous en créons un nouveau : nano /etc/vsftpd/vsftpd.conf Nous allons devoir renseigner beaucoup d’informations dans ce fichier. Pour simplifier sa lecture, mieux vaut commenter chaque argument. Nous allons tout d’abord autoriser VSFTPD à fonctionner seul. C’est le mode “Standalone” : # On active le mode "Standalone" listen=YES Nous ne voulons pas de connexions anonymes au serveur. Nous les interdisons et nous autorisons les utilisateurs non-anonymes. C’est le cas des utilisateurs virtuels. # Pas d’accès anonyme. anonymous enable=NO local enable=YES Ensuite, nous autorisons les utilisateurs virtuels. “guest username” permet d’indiquer l’utilisateur dont les utilisateurs virtuels prendrons les caractéristiques. Etant donné que nous allons un peu plus tard spécifier que la racine de notre FTP se trouve dans le dossier /var/www/html/ d’Apache, nous allons logiquement indiquer l’utilisateur “apache”, créé par défaut au moment de l’installation d’Apache. # Active les utilisateurs virtuels # On indique l’utilisateur dont les utilisateurs virtuels prendront les caracteristiques. guest enable=YES guest username=apache Nous souhaitons que chaque utilisateur soit bloqué dans son dossier afin de ne pas aller fouiller chez le voisin. On le restreint donc à son dossier : # On restreint l’utilisateur à son dossier de connexion chroot local user=YES Nous souhaitons que la racine de notre serveur FTP soit la racine du serveur Apache qui se situe dans /var/www/html/ : # Racine du serveur local root=/var/www/html/ Lorsque nous créeront nos utilisateurs virtuels, nous leur indiquerons un nom d’utilisateur et un mot de passe. Bien entendu, ces données doivent être cryptées. Nous utiliserons PAM. # Utilisation de PAM pour l’authentification des utilisateurs. pam service name=vsftpd Nous allons pouvoir créer un fichier de configuration par utilisateur afin de leur définir leurs droits et leur dossier. Pour cela, il faut indiquer à VSFTPD où aller chercher les fichiers de configurations de chaque utilisateur : # Dossier contenant les fichiers de configuration de nos utilisateurs virtuels. user config dir=/etc/vsftpd/vsftpd conf users Nous pouvons maintenant quitter (CTRL + X) et sauvegarder (“o” ou “y” selon si vous êtes en Français ou en Anglais), puis entrée pour valider. Configuration de PAM La configuration de PAM est assez simple. Nous allons éditer son fichier de configuration : nano /etc/pam.d/vsftpd 3 Effacez tout le contenu du fichier puis entrez ces informations : auth required /lib64/security/pam userdb.so db=/etc/vsftpd/login account required /lib64/security/pam userdb.so db=/etc/vsftpd/login IMPORTANT : Si vous utilisez un système 32 bits, indiquer /lib/ . Créations des utilisateurs virtuels Nous allons maintenant créer nos utilisateurs virtuels. Nous allons créer nos utilisateurs virtuels dans un fichier texte. Entrer donc cette commande : nano /etc/vsftpd/login.txt La structure que doit prendre la liste des utilisateurs virtuels est très simple : utilisateur1 motdepasse1 utilisateur2 motdepasse2 La liste de nos utilisateurs est prête, il ne nous reste plus qu’à convertir cette dernière en base de données local : db load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db Enfin, on sécurise nos fichiers en modifiant leurs droits afin qu’ils ne soient pas modifiés par la suite : chmod 600 /etc/vsftpd/login.* Configuration des utilisateurs virtuels ! Nous allons configurer nos utilisateurs virtuels. Comme indiqué dans le fichier de configuration de VSFTPD, les fichiers de configurations se trouveront dans le répertoire /etc/vsftpd/vsftpd conf users/. Ce répertoire n’existant pas, il faut le créer : mkdir /etc/vsftpd/vsftpd conf users Ensuite, il suffit de créer un nouveau fichier portant le nom de notre utilisateur virtuel. Par exemple, pour l’utilisateur virtuel “utilisateur1” : nano /etc/vsftpd/vsftpd conf users/utilisateur1 Nous allons configurer notre utilisateur. On indique le dossier de l’utilisateur dans lequel il sera enfermé : # Dossier de l’utilisateur local root=/var/www/html/utilisateur1 On souhaite que notre utilisateur n’ait pas uniquement le droit de lire le contenu de son dossier : # Désactive la lecture unique anon world readable only=NO On donne à notre utilisateur le droit d’uploader : # Droit d’uploader write enable=YES anon upload enable=YES On lui donne également le droit de créer des dossiers : # Droit de créer des dossiers anon mkdir write enable=YES Enfin, on lui donne tous les droits d’écriture, suppression, ... # Droit de renommer, supprimer, ... anon other write enable=YES Vous pouvez maintenant quitter le fichier de configuration en le sauvegardant. Enfin, il faut créer le dossier de l’utilisateur : mkdir /var/www/html/utilisateur1 Etant donné que notre utilisateur virtuel prend les caractéristiques de l’utilisateur “ apache”, nous devons attribuer la propriété du dossier que nous venons de créer à l’utilisateur “apache” : chown apache:apache /var/www/html/utilisateur1 -R L’option “-R” signifie “Récursif”. Cela indique que tous les fichiers et dossiers se trouvant dans notre répertoire prendrons également la propriété de l’utilisateur “apache”. Notre utilisateur virtuel est maintenant prêt ! Il ne nous reste plus qu’un dernier petit détail à configurer. 4 Configurer SELinux SELinux est un module de sécurité d’accès aux données présent par défaut sur CentOS. Ce dernier nous empêche d’utiliser correctement notre FTP. Nous allons donc le désactiver. Comme d’habitude, rendons nous dans son fichier de configuration : nano /etc/selinux/config Comme indiqué dans les commentaires du fichier, il nous suffit de modifier la valeur de l’argument “SELINUX” : SELINUX=disabled S’il n’est pas déjà désactivé, vous devez redémarrer votre machine. Se connecter avec un utilisateur virtuel Un fois votre machine relancée, nous allons pouvoir tester notre FTP ! Avant de commencer, nous devons installer les commandes FTP : yum install ftp -y Un fois installées, nous pouvons nous connecter à notre FTP : ftp localhost Un nom nous est demandé, entrez donc le nom de votre utilisateur virtuel : Name (localhost:root) : utilisateur1 Puis, son mot de passe est demandé : 331 Please specify the password. Password : Entrez donc son mot de passe. Vous devriez avoir un message vous confirment la connexion : 230 Login successful. Enfin, pour être sûr que tout fonctionne bien, vous pouvez essayer de créer un dossier directement dans votre FTP : mkdir dossier de test Si la création du dossier s’est bien déroulée, vous devriez avoir ce message : 227 ‘‘/dossier de test’’ created Notre FTP est bien fonctionnel avec notre utilisateur virtuel ! Nous pouvons maintenant quitter le FTP avec la commande “exit” ou “bye”. Configurer la connexions sécurisée de VSFTPD Notre serveur FTP étant fonctionnel, nous allons maintenant pouvoir le configurer pour pouvoir y accéder à distance, sur un réseau local. Plutôt qu’utiliser une connexion SSL, nous choisirons une connexion TLS. Le protocole TLS est le successeur du SSL. Il est important de noter que suite aux manipulations à venir, vous ne pourrez plus vous connecter en local à votre FTP via le Terminal Linux. La première étape consiste à créer le certificat qui permettra d’authentifier la connexion sécurisée. Nous allons créer ce certificat dans un répertoire “private”. Nous devons créer ce dernier : mkdir /etc/ssl/private Ensuite, nous allons créer notre certificat : openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem Plusieurs informations vous seront demandées, renseignées les. Nous devons indiquer à VSFTPD qu’il devra utiliser ce certificat et autoriser les connexions TLS. Pour se faire, nous allons de nouveau éditer le fichier de configuration de VSFTPD afin de lui ajouter quelques arguments. nano /etc/vsftpd/vsftpd.conf Voici les arguments à ajouter : # On indique où se trouve le certificat rsa cert file=/etc/ssl/private/vsftpd.pem # On active le SSL ssl enable=YES # On oblige les connexions sécurisées allow anon ssl=NO force local data ssl=YES force local logins ssl=YES # On resteint à l’utilisation du protocol TLS ssl tlsv1=YES ssl sslv2=NO 5 ssl sslv3=NO # On interdit la réutilisation d’un m^ eme certificat require ssl reuse=NO # Permet le chiffrement du canal ssl ciphers=HIGH On quitte, on sauvegarde et on redémarre le service VSFTPD : service vsftpd restart Configuration des ports Pour terminer, nous devons configurer le pare-feu de Linux afin de laisser passer le trafic du FTP. On change le port du FTP pour plus de sécurité. Pour cela, retournons éditer le fichier de configuration VSFTPD : nano /etc/vsftpd/vsftpd.conf Puis, on lui ajoute l’argument “listen port” en lui indiquant sur quel port écouter : # Changement du port par défaut listen port=3044 Nous devons ouvrir le port 3044 que nous avons défini dans le fichier de configuration afin de pouvoir se connecter à distance à notre serveur. Nous allons donc ouvrir ce port de notre pare-feu en éditant le fichier contenant les règles d’iptables : nano /etc/sysconfig/iptables Puis, on ajoute cette ligne AVANT le “COMMIT” : -A INPUT -m state --state NEW -m tcp -p tcp --dport 3044 -j ACCEPT Le port 3044 permet à notre client de contacter le serveur. Le serveur renvoi les données via un port aléatoire, ce qui ne nous arrange pas. Fort heureusement, nous pouvons définir une plage de ports sur laquelle le serveur pourra envoyer sa réponse. Nous allons par exemple choisir la plage de port de 3550 à 3560. Il faut donc éditer le fichier de configuration de VSFTPD pour lui indiquer les ports à utiliser : nano /etc/vsftpd/vsftpd.conf Puis, on ajoute ces arguments : pasv min port=3550 pasv max port=3560 On redémarre le VSFTPD : service vsftpd restart Enfin, il ne nous reste plus qu’à ouvrir cette place de ports dans notre parfeu : nano /etc/sysconfig/iptables On indique la plage de ports à ouvrir : -A INPUT -m stat --stat NEW -m tcp --dport 3550:3560 -j ACCEPT On redémarre le service : service iptables restart Notre serveur est fin prêt, il ne nous reste plus qu’à tester la connexion distante ! 6