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