vendredi 26 juillet 2013

Sécuriser apache2 avec SSL

SSL est un protocole qui a été développé par la société Netscape.

Ce protocole permet à deux machines de communiquer de manière sécurisée. Les informations échangées entre les deux machines sont de ce fait inviolables.

Le protocole SSL se traduit par la combinaison de deux protocoles bien distincts (Handshake et Record) qui permettent la négociation entre les deux machines et le chiffrement des données échangées.

plus d'informations concernant le fonctionnement du Protocole SSL

Exercice 1 : Module SSL

1) Activez le module ssl d'apache2

Exercice 2 : Création d'un nom de domaine local

1) Créez le nom de domaine local http://www.sitessl.com qui redirigera vers votre serveur

2) Configurez un virtualhost pour que le nom de domaine précédemment créé pointe vers le dossier /www/htdocs/sitessl/html/

Exercice 3 : OpenSSL

1) Installez le paquet openssl

2) En utilisant OpenSSL, créez un certificat pour sitessl.com de type x509 dans /etc/apache2/server.crt ainsi que sa clé privée dans /etc/apache2/server.key, ce certificat doit être valable pendant 365 jours

3) Pour des raisons de sécurité, donnez les droits ... à la clé /etc/apache2/server.crt

Exercice 4 : Configuration du virtualhost

1) Vérifiez qu'Apache écoute bien le port 443

2) Activez le moteur SSL pour le domaine sitessl.com

3) Définissez le certificat créé dans l'exercice 3 comme certificat identifiant le serveur

4) Définissez la clé créée dans l'exercice 3 pour signer l'échange de clé entre le client et le serveur

5) Redirigez les connexions du port 80 vers le port 443


Correction de l'exercice 1

Dans apache2, pour activer le module SSL il suffit d'utiliser la commande suivante :

# a2enmod ssl

et on n'oublie pas de redemarrer apache2 pour prendre en compte les changements :

# /etc/init.d/apache2 restart

Correction de l'exercice 2

On va rediriger le nom de domaine sitessl.com vers notre serveur, bien entendu vous ne deviendrez propriétaire de ce nom de domaine, seul votre ordinateur redirigera vers l'IP de votre serveur.

Si votre navigateur web se trouve sous Windows, vous devez ouvrir le fichier hosts qui se trouve dans C:\Windows\System32\drivers\etc\host avec votre éditeur texte habituel.

Si votre navigateur web se trouve sous Mac ou Linux, vous devez ouvrir le fichier hosts qui se trouve dans /etc/hosts avec votre éditeur texte habituel.

On ajoute dans ce fichier les lignes suivantes :

192.168.1.17 sitessl.com
192.168.1.17 www.sitessl.com

En prenant soin de changer l'IP pour celle de votre serveur.

Maintenant nous devons signaler au serveur que les requêtes arrivant depuis le domaine sitessl.com devront être redirigées vers le dossier /www/htdocs/sitessl/html/.

On commence par créer les dossiers qui accueilleront les fichiers concernants notre virtualhost : Nous enregistrerons les logs dans le dossier /www/htdocs/logs/, si celui-ci n'est pas encore créé on le fait :
mkdir /www/htdocs/logs/
Puis le dossier /www/htdocs/sitessl/html/ qui contiendra nos fichiers liés au virtualhost sitessl.com :
# mkdir /www/htdocs/sitessl/
# mkdir /www/htdocs/sitessl/html/
On va créer une page html simplisme pour vérifier que tout fonctionne une fois tout installé :
# nano /www/htdocs/sitessl/html/index.htm

Et on y insère la phrase "It's works"

On enregistre et on quitte

Et enfin, on crée notre virtualhost :
# nano /etc/apache2/sites-available/sitessl.com 

Et on y ajoute la structure suivante :

<VirtualHost *:80>
 ServerAdmin postmaster@sitessl.com
 ServerName sitessl.com
 ServerAlias www.sitessl.com
 DocumentRoot /www/htdocs/sitessl/html/
 <Directory /www/htdocs/sitessl/html/>
  Options -Indexes FollowSymLinks MultiViews
  AllowOverride All
 </Directory>
 ErrorLog /www/htdocs/logs/sitessl_error.log
 LogLevel warn
 CustomLog /www/htdocs/logs/sitessl_access.log combined
 ServerSignature Off
</VirtualHost>

On enregistre et on quitte

On rend le domaine créé disponible :

# ln -s /etc/apache2/sites-available/sitessl.com /etc/apache2/sites-enabled/sitessl.com

On relance apache pour prendre en compte les modifications :

# /etc/init.d/apache2 restart

On vérifie que tout s'est déroulé normalement en appelant http://sitessl.com via notre navigateur :


Correction de l'exercice 3

Comme d'habitude, on utilise apt-get pour installer ce paquet :

# apt-get install openssl

Pour générer un nouveau certificat, on utilise openssl via la commande suivante :

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/server.crt -keyout /etc/apache2/server.key

Plus d'infos concernant cette commande :

-x509 -nodes donne le type de certificat voulu
-days 365 indique la durée de validité (en jours) de votre certificat
-newkey rsa:1024 demande une clé RSA de 1024 bits - d'après la doc apache, il est déconseillé de créer une clé plus grosse pour des histoires de compatibilité
-out /etc/apache2/server.crt est le chemin de votre certificat à générer
-keyout /etc/apache2/server.key est le chemin de la clé privée à générer

OpenSSL va alors nous poser les questions suivantes :

Country Name (2 letter code) [AU]

Entrez FR si vous êtes situé en France et validez par la touche "Entrée"

State or Province Name (full name) [Some-State]

Entrez FRANCE et validez par la touche "Entrée"

Locality Name (eg, city) []

Indiquez ici le nom de votre ville. (exemple : ROUEN) et validez par la touche "Entrée"

Organization Name (eg, company) [Internet Widgits Pty Ltd]

Indiquez le nom de votre organisation, de votre société. (exemple : france-ssl) et validez par la touche "Entrée". Si vous n'avez pas de société, vous pouvez mettre un nom fictif, le nom de notre site Web par exemple.

Organizational Unit Name (eg, section) []

Indiquez ici le nom de la section de votre organisation, de votre société. Si vous n'en avez pas, mettez la même chose que pour la question précédente.

Common Name (eg, YOUR name) []

Ici, il convient de faire particulièrement attention à ce que vous allez entrer. Vous devez indiquer le nom de domaine que vous désirez sécuriser. En ce qui nous concerne, il s'agit du domaine : sitessl.com. Nous indiquons donc sitessl.com et nous validons par la touche "Entrée".

Email Address []

Ici, il s'agit d'indiquer l'adresse E-mail de l'administrateur. En ce qui nous concerne, il s'agit de : contact@sitessl.com. Nous terminons bien entendu en validant par la touche "Entrée".

Et enfin, on empêche les curieux de lire notre clé privée :

# chmod o-rw /etc/apache2/server.key

Correction de l'exercice 4

Par défaut, Apache2 est configuré pour écouter sur le port 80. Il s'agit là de la configuration usuelle d'un Serveur Web. Cependant, le protocole SSL a besoin d'un port spécifique pour pouvoir fonctionner. Il s'agit du port 443.

Nous allons commencer par vérifier que le fichier de configuration /etc/apache2/ports.conf est actuellement correctement configuré afin qu'Apache2 écoute le port 443.

# nano /etc/apache2/ports.conf

Et on vérifie la présence des lignes

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to 
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

Si ce n'est pas le cas, ajoutez simplement la ligne Listen 443 juste après Listen 80

Retournons dans notre virtualhost sitessl.com

# nano /etc/apache2/ports.conf

Retournons dans le virtualhost de sitessl.com pour modifier quelques directives :

# nano /etc/apache2/sites-available/sitessl.com

Pour sécuriser cet Hôte Virtuel, nous allons donc devoir modifier ce fichier en y ajoutant un hôte virtuel accessible sur le port 443, ce dernier contenant des directives particulières qui sont les suivantes :

  1. Directive SSLEngine :
    Cette directive permet d'activer le moteur SSL au sein d'un hôte virtuel, Elle peut prendre deux arguments –> on/off
  2. Directive SSLCertificateFile :
    Cette directive définit le certificat authentifiant le Serveur auprès des clients. L'argument est le chemin d'accès au certificat. En ce qui nous concerne, le certificat se trouve dans /etc/apache2/server.crt (voir exercice 3)
  3. Directive SSLCertificateKeyFile :
    Cette directive définit la clé privée du Serveur utilisée pour signer l'échange de clé entre le client et le serveur. Elle prend en argument le chemin d'accès à la clé (fichier). Dans notre cas, la clé se trouve dans /etc/apache2/server.key (voir exercice 3).

Par ailleurs, comme nous l'avons déjà fait pour notre hôte virtuel accessible sur le port 80, nous allons devoir rajouter une directive NameVirtualHost qui permettra que l'adresse nommée par le nom de notre hôte virtuel accessible sur le port 443 soit résolue correctement. Nous rajouterons donc cette directive (NameVirtualHost *:443) au début de notre fichier de configuration.

Enfin, afin que les clients puissent continuer d'accéder au site Web en tapant une url de type http et non https, nous allons modifier l'hôte virtuel accessible sur le port 80 en remplaçant la directive DocumentRoot par une directive de redirection.

Voici donc le contenu de notre fichier une fois modifié :

NameVirtualHost  *:443

<VirtualHost *:80>
    ServerName sitessl.com
    ServerAlias www.sitessl.com
    Redirect / https://sitessl.com
</VirtualHost>

<VirtualHost *:443>
 ServerAdmin postmaster@sitessl.com
 ServerName sitessl.com
 ServerAlias www.sitessl.com
 DocumentRoot /www/htdocs/sitessl/html/

 SSLEngine on
 SSLCertificateFile /etc/apache2/server.crt
 SSLCertificateKeyFile /etc/apache2/server.key

 <Directory /www/htdocs/sitessl/html/>
  Options -Indexes FollowSymLinks MultiViews
  AllowOverride All
 </Directory>
 ErrorLog /www/htdocs/logs/sitessl_error.log
 LogLevel warn
 CustomLog /www/htdocs/logs/sitessl_access.log combined
 ServerSignature Off
</VirtualHost>

et on n'oublie pas de redemarrer apache2 pour prendre en compte les changements :

# /etc/init.d/apache2 restart

Si vous affichez votre site sitessl.com via votre navigateur favoris, il se peut que vous ayez le message suivant (ou équivalent) :

Pourquoi ?

Les certificats SSL fonctionnent sur le principe d'une chaîne de confiance : quelqu'un en qui j'ai confiance me dit de faire confiance à quelqu'un d'autre, alors je fais confiance à ce quelqu'un d'autre. Evidemment, selon ce principe, il faut connaître des personnes de confiance. Dans le monde du SSL, c'est ce qu'on appelle les autorités de certification (CA selon l'acronyme anglais). Tous les navigateurs du monde entier connaissent un certain nombre de CA. Il faut aller fouiller dans les options du navigateur pour trouver ces certificats. Et lorsque quelqu'un se présente, on sait qu'on peut lui faire confiance parce que son certificat a été émis par une autorité de certification, donc une autorité à qui on fait confiance.

Dans notre cas, nous avons généré un certificat auto-signé : aucune CA reconnue n'a émis ce certificat. Et donc, lorsqu'un navigateur arrive sur notre site, il ne peut pas approuver le certificat que le serveur lui présente : fais-moi confiance parce que je me connais ! C'est un peu léger pour de la sécurité alors notre navigateur se plaint.

Donc 3 solutions possibles :

  1. On ne fait rien vu que c'est juste un test et qu'on est sur un serveur de développement.
  2. On achète un certificat auprès d'une autorité de certification reconnue. Pour info, certaines sont open source, donc procurent des certificats gratuits, mais tous les navigateurs ne les reconnaissent pas forcement.
  3. On installe notre propre certificat auto-signé dans notre navigateur comme si c'était un certificat de CA. On aura alors plus de message d'avertissement mais cela ne fonctionnera que pour notre navigateur.

A titre d'exemple, Facebook a obtenu son certificat auprès de VeriSign Trust Network

dimanche 13 janvier 2013

Installer un client torrent (rtorrent)

Exercice 1

1) Installez le paquet rtorrent

2) Utilisez le code de l'annexe 1 pour créer le fichier de configuration ~/.rtorrent.rc

3) Créez les dossiers ~/torrent/data et ~/torrent/session nécessaire au fonctionnement de rtorrent

4) Lancez le téléchargement du torrent http://downloads.raspberrypi.org/images/raspbian/2012-12-16-wheezy-raspbian/2012-12-16-wheezy-raspbian.zip.torrent (La version de Debian dédié au Raspberry Pi)


Exercice 2

1) Installez le paquet dtach

2) En utilisant l'annexe 2, créez et configurez le fichier /etc/init.d/rtorrentd

3) Faites en sorte que rtorrent se lance automatiquement au démarrage du serveur

4) Lancer rtorrent en tant que tâche de fond


Exercice 3

1) En utilisant les alias, faites correspondre les alias aux commandes suivantes :

  • torrent = "dtach -a /tmp/rtorrent.dtach -r winch"
  • lancer_torrent = "/etc/init.d/rtorrentd start"
  • arreter_torrent = "/etc/init.d/rtorrentd stop"


Annexe 1

# Fichier de configuration de rtorrent.
# Par défaut, c'est le fichier ~/.rtorrent.rc

# Limites des taux de téléchargement en réception et en envoi. "0" équivaut à aucune limite. 
#download_rate = 500
#upload_rate = 150

# Répertoire qui contient les fichiers téléchargés.
directory = ~/torrent/data

# Répertoire où rtorrent stocke l'état de téléchargement des torrents.
session = ~/torrent/session
# Utilisez un chemin //relatif// si vous êtes susceptible de lancer plusieurs
# instances de rtorrent ! Commentez la ligne précédente et décommentez celle-ci :
#session = ./session

# Ports utilisables par rtorrent (utilisez deux fois la même valeur pour utiliser tout le temps ce port)
port_range = 6881-6999
port_random = no

# Vérification des données à la fin du téléchargement
check_hash = yes

# Ce répertoire contient les fichiers .torrent. 
# Dès qu'un nouveau .torrent y est ajouté, le téléchargement commence.
schedule = watch_directory,15,15,load_start=~/torrent/torrent_active/*.torrent

# Dès que le téléchargement est achevé, le fichier est déplacé dans le
# répertoire ~/torrent_finis.
# Pour les versions récentes de rtorrent (0.8.4 et supérieures), utilisez la ligne suivante :
#system.method.set_key = event.download.finished,move_complete,"execute=mv,-u,$d.get_base_path=,~/torrent_finis/;d.set_directory=~/torrent_finis/"
# Pour les versions 0.7.7 de 0.8.3, utilisez la ligne suivante :
#on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,~/torrent_finis/;d.set_directory=~/torrent_finis/"

# Activation de DHT pour les torrents sans trackers.
# Il est obligatoire de définir un répertoire de session (voir plus haut).
dht = auto

# Port UDP pour l'utilisation de DHT. 
dht_port = 6880

# Forcer l'utilisation de transactions chiffrées, pour ne recevoir et n'envoyer que des données protégées.
# En revanche, les identités du l'expéditeur et du destinataire restent visibles.
encryption = allow_incoming,require,require_rc4

Annexe 2

#!/bin/sh -e
#
### BEGIN INIT INFO
# Provides: rtorrentd
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: Démarrer/arrêter rtorrent sous forme de daemon.
### END INIT INFO

NAME=rtorrentd
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# path du fichier temporaire
TMP=/tmp/rtorrent.dtach
# user qui lance le torrent
USER=$nom
# chemin vers fichier conf
CONF=/home/$USER/.rtorrent.rc

start() {
        echo -n $"Starting $NAME: "
        su -l $USER -c "dtach -n $TMP rtorrent -n -o import=$CONF"
        chmod 666 /tmp/rtorrent.dtach
        echo "started"  
}

stop() {
        echo -n $"Stopping $NAME: "
        killall -r "rtorrent"
        echo "stopped"
}

restart() {

        if [ "$(ps aux | grep -e 'rtorrent' -c)" != 0  ]; then
        {
                stop
                sleep 5
        }
        fi
        start
}


case $1 in
        start)
               start
        ;;
        stop)
                stop
        ;;
        restart)
                restart
        ;;
        *)
                echo "Usage:  {start|stop|restart}" >&2
                exit 2
        ;;
esac

Correction de l'exercice 1

On installe le paquet rtorrent :

$ apt-get install rtorrent

On créé le fichier ~/.rtorrent.rc et on y colle le code de l'annexe 1

$ nano ~/.rtorrent.rc

On créé les dossiers nécessaires au fonctionnement de rtorrent

$ mkdir ~/torrent/data
$ mkdir ~/torrent/session

Nous pouvons maintenant lancer rtorrent

$ rtorrent

backspace pour ajouter un fichier .torrent (url ou fichier .torrent local) et on valide par entrée

Maintenant le problème c'est que l'on est obligé de lancer rtorrent pour pouvoir télécharger un fichier. Nous allons voir dans l'exercice 2 comment lancer rtorrent en tâche de fond.


Correction de l'exercice 2

On install le paquet dtach

$ apt-get install dtach

On créé le fichier /etc/init.d/rtorrentd et on y colle le code de l'annexe 2

$ nano /etc/init.d/rtorrentd

On remplace la valeur de notre utilisateur USER et le chemin de notre rtorrent.rc précédemment créé dans CONF.

On accorde les droits au fichier

$ sudo chmod +x /etc/init.d/rtorrentd

On termine avec la commande suivante pour indiquer que ce script doit s'exécuter au démarrage :

$ sudo update-rc.d rtorrentd defaults 99

Maintenant, à chaque démarrage du système, rtorrent se lancera automatiquement.

Pour pouvoir accéder à l'interface console il suffit d'utiliser la commande :

$ dtach -a /tmp/rtorrent.dtach -r winch

Pour fermer rtorrent tout en le gardant en tâche de fond utilisez la combinaison CTRL+MAJ+8, pour le fermer complètement utilisez CTRL+Q

Nous allons voir dans l'exercice 3 comment faire pour simplifier les commandes afin qu'elles soient plus simples à retenir en utilisant les alias.


Correction de l'exercice 3

On édite le fichier ~/.bashrc pour gérer les alias (commandes raccourcies) de l'utilisateur

$ nano ~/.bashrc

On ajoute les commandes suivantes

alias torrent="dtach -a /tmp/rtorrent.dtach -r winch"
alias lancer_torrent="/etc/init.d/rtorrentd start"
alias arreter_torrent="/etc/init.d/rtorrentd stop"

On enregistre les modifications en exécutant :

$ source ~/.bashrc

Désormais pour démarrer rtorrent en tâche de fond on se contentera d'un simple :

$ lancer_torrent

Pour l'arreter un :

$ arreter_torrent

Pour afficher l'interface dans la console :

$ torrent

Informations complémentaires

Torrent en cours de téléchargement :

debian-6.0.6-i386-CD-1.iso
              67,7 /  648,0 MB Rate:   0,0 / 469,7 KB Uploaded:     0,0 MB [ 9%]  0d  0:21 [   R: 0,00]

debian-6.0.6-i386-CD-1.iso : Nom du fichier téléchargé

67,7 / 648,0 MB : Nombre de Mo déjà téléchargés / nombre total du torrent

Rate: 0,0 / 469,7 KB : Vitesses de téléchargement en envoi (0,0 KB/s) et en réception (469,7 KB/s).

Uploaded: 0,0 MB : Nombre de Mo déjà envoyés.

[ 9%] : Pourcentage du torrent déjà téléchargé.

0d 0:21 : Estimation du temps restant (ce chiffre se fonde sur la vitesse courante en réception du téléchargement). Si la vitesse en réception reste la même, le téléchargement sera terminé dans 0 jour, 0 heure et 21 minutes.

[ R: 0,00] : Ratio (Upload / Download)


Raccourcies clavier

Pour modifier les taux limites d'envoi et de réception :

a / s / d : Augmente le taux en envoi de 1 / 5 / 50 Ko
A / S / D : Augmente le taux en réception de 1 / 5 / 50 Ko
z / x / c : Diminue le taux en envoi de 1 / 5 / 50 Ko
Z / X / C : Diminute le taux en récption de 1 / 5 / 50 Ko

jeudi 22 décembre 2011

Les commandes Unix de base à connaître

Avant de commencer

Où sommes-nous ?

L'utilisation de la console présente certains avantages mais également des inconvénients comme par exemple l'absence d’icônes qui permettent de se situer et se déplacer plus rapidement et simplement.

Cependant Debian propose des raccourcis et des indications qu'il faut connaitre car elles permettent de mieux se repérer et se déplacer.


Notez que le symbole ~ correspond à votre dossier personnel (/home/paul/ dans notre cas)

Pour vous familiariser avec la console et les lignes de commande, je vous conseil de regarder cette vidéo : Découverte de la console et quelques généralités.




Exercice 1


Afficher le manuel du programme man

Correction de l'exercice 1


Pour afficher le manuel d'un programme il suffit d'exécuter la commande man suivi du nom d'un programme, d'un utilitaire, d'une fonction ou d'un fichier spécial :

# man man

Tapez q pour quitter.



Exercice 2


Affichez le contenu du dossier racine de l'ensemble du système de fichiers, affichez la taille des fichiers contenu dans les dossiers /var/ et /var/www/, affichez les fichiers et dossiers cachés du dossier /var/ puis affichez le dossier /var/ en triant son contenu par ordre décroissante.

Correction de l'exercice 2


Pour pouvoir afficher le contenu d'un dossier il faut utiliser la commande ls (pour list segment)

# ls /
Affiche le contenu du dossier / (c'est à dire la racine de votre ordinateur)
# ls
Affiche le contenu du dossier actuel (~, votre dossier personnel)
Les options

Utiliser plusieurs options en même temps

Cette notion est valable pour tous les programmes (notamment ceux que nous allons voir au cours de cette série d'exercice).


Nous allons voir dans un instant que chaque programme possède un certain nombre d'options. Les options s'ajoutent à la suite de la commande.

L'une après l'autre : # ls / -l -h
ou de manière concaténée : # ls / -lh

Ces 2 commandes retourneront le même résultat.

Affichage détaillé du répertoire

Pour afficher un répertoire de manière détaillée il faut utiliser l'option -l (L minuscule)

# ls / -l

Affichage de la taille des fichiers

Pour afficher la taille des dossiers et des fichiers contenus dans un répertoire, il faut utiliser l'option -h associé avec l'option -l

# ls /var -l -h
# ls /var/www -l -h

/var/www/ ou var/www/ ?

var/www/ correspond au dossier www/ qui se trouve dans le dossier var/ qui lui se trouve dans le dossier actuel (dossier dans lequel vous vous situez).

/var/www/ correspond au dossier www/ qui se trouve dans le dossier var/ qui lui se trouve à la racine de votre système.

Afficher les fichiers et dossiers cachés

L'option -a permet d'afficher les éléments cachés d'un répertoire

# ls /var -l -a

Trier les fichiers et répertoire par date de modification décroissante

# ls /var -lct
Les couleurs

Vous avez surement remarqué que les dossiers s'affichaient de couleurs différentes, mais à quoi correspondent t'elles ?

Couleur par défaut du shell : Fichier standard
Vert : Exécutable
Bleu : Répertoire
Cyan : lien symbolique
Jaune : FIFO
Magenta : Socket
Rouge : Archive (.tar, .zip, .deb, .rpm)
Cyan : Images (.jpg, .gif, .png, .tiff)
Cyan : Audio (.mp3, .ogg, .wav)

Pour plus d'informations sur ls n'hésitez pas à afficher le manuel :

# man ls



Exercice 3


Déplacez vous de répertoire en répertoire en suivant le chemin suivant :
  • Remontez à la racine de l'ensemble du système de fichiers.
  • Placez-vous dans le répertoire /usr/bin/
  • Remontez au répertoire parent en utilisant la commande dédiée.
  • Retournez au répertoire précédent la encore en utilisant la commande dédiée.
  • Retournez au répertoire de l'utilisateur.

Correction de l'exercice 3


La commande cd (pour change directory) vous permet de vous déplacer de répertoire en répertoire.
# cd /
permet de remonter à la racine de l'ensemble du système de fichiers.
# cd /usr/bin/
se place dans le répertoire /usr/bin/
# cd ..
permet de remonter au répertoire parent
# cd -
permet de remonter au répertoire précédent
# cd
permet de revenir au répertoire /home/utilisateur (identique à cd ~)



Exercice 4


Placez vous dans votre répertoire personnel et créez le dossier un_dossier.

Correction de l'exercice 4


La commande mkdir (pour make directory) permet de créer des dossiers.

On se place dans notre dossier personnel

# cd

puis on créé notre nouveau dossier un_dossier

# mkdir un_dossier

puis on peut vérifier que notre dossier a bien été créé en listant le contenu du dossier dans lequel nous nous trouvons.

# ls
Notre nouveau dossier est bien là :)



Exercice 5


Placez vous dans votre répertoire personnel et créez le fichier un_fichier.txt en utilisant le programme nano.

Correction de l'exercice 5


nano est un programme permettant de créer et de modifier des fichiers texte.

# cd

Nous nous trouvons maintenant dans notre répertoire personnel.

# nano un_fichier.txt



On sauvegarde le fichier en utilisant la combinaison ctrl+o puis en validant par entrée. Une fois terminé nous pouvons quitter nano en faisant ctrl+x

Vérifions que notre fichier a été correctement enregistré en affichant le contenu du dossier dans lequel nous nous situons en utilisant la commande ls comme vu dans un des exercice précédent.

# ls
Notre nouveau fichier et notre dossier sont bien là :)




Exercice 6


Déplacez le fichier un_fichier.txt dans le dossier un_dossier

Correction de l'exercice 6


La commande mv (pour move) permet de déplacer ou renommer des fichiers et des répertoires.


# cd

Nous nous plaçons dans notre répertoire personnel si ce n'est pas déjà le cas.

# ls

On affiche le contenu du dossier dans lequel nous nous trouvons.

# mv un_fichier.txt un_dossier/

Déplaçons un_fichiers.txt dans le dossier un_dossier

# ls

Nous affichons de nouveau le contenu et nous pouvons voir que un_fichier.txt n'est plus là.

# ls un_dossier/

Vérifions que notre fichier est bien dans le dossier un_dossier.





Exercice 7


Copiez le fichier un_fichier.txt qui se trouve dans le dossier un_dossier à la racine de votre dossier personnel.

Correction de l'exercice 7


La commande cp (pour copy) permet de copier des fichiers ou des répertoires.


Raccourcis pratiques

Les caractères spéciaux ~, . et .. correspondent respectivement au répertoire personnel de l'utilisateur, au répertoire courant et au répertoire parent. Ils permettent tous les trois de simplifier l'expression de références absolues. Ainsi pour déplacer le fichier /UnRep/MonFichier respectivement dans le répertoire de l'utilisateur (/home/user), le répertoire courant (/rep1/sousrep2) ou le sous-répertoire toto du répertoire parent (/rep1/toto), on pourra utiliser les commandes ci-dessous :

$ mv /UnRep/MonFichier ~

$ mv /UnRep/MonFichier .

$ mv /UnRep/MonFichier ../toto/



# cd

Nous nous plaçons dans notre répertoire personnel si ce n'est pas déjà le cas.

# ls

Nous affichons le contenu du dossier dans lequel nous nous situons.

# ls un_dossier/

Nous affichons le contenu du dossier un_dossier et nous pouvons apercevoir le fichier un_fichier.txt.

# cp un_dossier/un_fichier.txt ~

Maintenant il ne nous reste plus qu'à copier un_fichier.txt qui se trouve dans le dossier un_dossier à la racine de notre dossier personnel (symbolisé par le ~) (Syntaxe du cp : # cp monFichierOuDossierACopier RepertoireDeDestination/).

# ls

On ré-affiche notre dossier et nous pouvons apercevoir que le fichier un_fichier.txt est maintenant disponible.

# ls un_dossier/

En affichant le contenu du dossier un_dossier nous pouvons voir l'original du fichier que nous venons de copier.





Exercice 8


Supprimez le fichier un_fichier.txt qui se trouve dans le dossier un_dossier de votre répertoire personnel (~/un_dossier/un_fichier.txt).

Correction de l'exercice 8


La commande rm (pour remove) permet d'effacer des fichiers et des répertoires.


$ cd

Nous nous plaçons dans notre répertoire personnel si ce n'est pas déjà le cas.


$ ls

Nous affichons le contenu du dossier dans lequel nous nous situons.

$ rm un_dossier/un_fichier.txt

On supprime le fichier (attention, cette commande est très dangereuse, ne l´exécutez uniquement si vous savez ce que vous faites.

$ ls un_dossier/

On affiche le contenu de notre dossier et nous pouvons nous apercevoir que celui-ci est désormais vide.

NB : Pour supprimer un dossier vous devez utiliser l'option r (r : Efface récursivement les fichiers ainsi que les répertoires).

$ rm un_dossier/ -r





Exercice 9


1) Listez tous les utilisateurs enregistrés.
2) Affichez le(s) groupe(s) de l'utilisateur Paul.
3) Ajoutez Paul au groupe www-data.
4) Retirez Paul du groupe www-data.


Correction de l'exercice 9


Pour lister l'ensemble des utilisateurs présents sur le serveur, on exécute la commande suivante :

# cat /etc/passwd | cut -d":" -f1
Cette commande liste le contenu du fichier "/etc/passwd" et récupère le contenu de chaque ligne qui précède le premier ":" (la liste des utilisateurs).

En exécutant la commande "# cat /etc/passwd" nous pouvons donc afficher plus d'informations sur les utilisateurs tels que le dossier personnel de l'utilisateur.

Pour connaitre le(s) groupe(s) auquel appartient un utilisateur, la commande suivante doit être utilisée :

# groups Paul
Nous apprenons donc que l'utilisateur Paul appartient au groupe Paul

Nous souhaitons maintenant ajouter Paul au groupe www-data

# adduser Paul www-data
On vérifie que Paul fait bien parti des 2 groupes maintenant :

# groups Paul
Si nous souhaitons revenir en arrière et supprimer Paul du groupe www-data :

# deluser Paul www-data
On vérifie que Paul ne fait plus parti du groupe www-data :

# groups Paul

mercredi 21 décembre 2011

Installer un serveur web complet

Exercice 1

1) Installez les paquets apache2, php5, mysql-server, php5-mysql, phpmyadmin et vsftpd

Exercice 2

Créez l'utilisateur test1 et configurez Apache2 afin de rediriger l'url http://IP_DE_VOTRE_SERVEUR/~test1/ vers le dossier /home/test1/public_html/ de votre serveur.

Exercice 3

Configurez VSFTPD afin que l'utilisateur userftp1 associé au mot de passe d6rb puisse envoyer des fichiers dans le dossier /home/test1/public_html (et uniquement dans ce dossier).

Exercice 4
En utilisant votre registrar, redirigez votre nom de domaine (test1.com par exemple) vers le dossier /home/test1/public_html/, puis redirigez un sous domaine (admin.test1.com par exemple) vers le dossier /home/test1/public_html/sd_admin/.




Exercice 1


Installez les paquets apache2, php5, mysql-server, php5-mysql, phpmyadmin et vsftpd.

Correction de l'exercice 1


Installation d'Apache 2

Il nous faut installer un serveur HTTP qui va s'occuper d'afficher nos différentes pages. Pour cela, je vous propose d'installer l'un des serveurs les plus utilisés et les plus connus : Apache. Nous installerons ici sa version 2.

# apt-get install apache2

Pour vérifier que l'installation s'est bien effectuée, entrez l'adresse suivante dans votre navigateur http://IP_DE_VOTRE_SERVEUR/

Vous devriez obtenir le résultat suivant :


Installation de PHP 5

Actuellement, notre serveur peut nous afficher des pages statiques au format HTML. La plupart des sites que vous voudrez installer disposeront d'une partie dynamique. C'est pourquoi nous poursuivons par l'installation de PHP 5 sur le serveur.

# apt-get install php5



Installation de la base de données MySQL


PHP est très très souvent couplé à un système de base de données : Mysql. Nous installons ici Mysql-server version 5. Vous verrez ci-après que nous allons également installer PHPMyAdmin. Il s'agit d'un script PHP qui permet de gérer ses bases de données Mysql de facon très simple.

# apt-get install mysql-server


L'installation de MySQL nous demande de définir le mot passe de root (le superutilisateur).


Une fois l'installation terminé, nous pouvons tester si MySQL fonctionne en exécutant la commande suivant

mysql -p

puis indiquez le mot de passe que vous avez défini. 

Une fois connecté au serveur MySQL, vous pouvez vous déconnecter en exécutant la commande :

# Exit


Installation de la base de données MySQL

apt-get install php5-mysql

Installation de PHPMyAdmin

apt-get install phpmyadmin


L'installation nous demandera de choisir le serveur web à reconfigurer automatiquement, cochez la case apache2 (en utilisant la barre d'espace) puis validez.

Demandez à ce que l'installateur configure la base de données de phpmyadmin avec dbconfig-common.


Indiquez votre mot de passe pour le compte administrateur


On vérifie que l'installation s'est correctement déroulée : http://IP_DE_VOTRE_SERVEUR/phpmyadmin/


Le formulaire de connexion devrait s'afficher.

Installation du FTP (VSFTPD)

Avoir un site disponible sur le net, c'est bien. Pouvoir y mettre des fichiers, c'est mieux ;). Et c'est le but de VSFTPD qui est un serveur FTP très sécurisé.

# apt-get install vsftpd




Exercice 2


Créez l'utilisateur test1 et configurez Apache2 afin de rediriger l'url http://IP_DE_VOTRE_SERVEUR/~test1/ vers le dossier /home/test1/public_html/ de votre serveur.

Correction de l'exercice 2


Introduction

Pour commencer, il faut installer un serveur web au sens premier. C'est lui qui va nous permettre d'interpréter nos pages HTML, PHP, etc. Apache 2 est le serveur http le plus utilisé sur les serveurs. Il dispose d'un bon niveau de sécurité et de beaucoup de documentations disponibles sur le net.

D'autre part, il permet de gérer des sites virtuels. Et c'est de cette manière que nous allons le configurer. En effet, le but étant de disposer de plusieurs sites sur notre serveur, il nous faut pouvoir les contacter directement avec une URL propre. Notre serveur ne dispose évidemment pas d'une adresse IP pour chaque site installé. Ce serait beaucoup trop complexe du point de vue physique à mettre en place. Et surtout, avec le système d'IPV4 utilisé actuellement, c'est impensable. Pour la petite histoire, le système IPV4 utilise 4 nombres de 0 à 255 sous la forme xxx.xxx.xxx.xxx. Cette série de nombres représente de manière unique chaque ordinateur connecté physiquement à Internet.

Certaines plages IP sont réservées pour des réseaux locaux (192.168.x.x ou 10.x.x.x par exemple). Mais ce souci va être prochainement résolu avec l'utilisation de l'IPV6 qui est en train de s'implémenter. Cette nouvelle notation permet de passer de 232 à 2128 IP différentes. Ce qui permettra d'en attribuer plusieurs à un même serveur, dans le futur.

Comme actuellement, c'est le protocole IPV4 qui est le plus utilisé, nous ne disposons en conséquence qu'une seule adresse IP pour 10 ou 100 sites à héberger sur notre serveur. Lorsqu'une requête HTTP est envoyée à notre serveur, le nom de domaine est transformé en adresse IP. La seule façon de différencier une demande venant de site1-cpnv.com ou de site2-cpnv.com, qui renvoient la même IP, passe par l'en-tête http, qui elle contiendra toujours le nom de domaine initialement demandé.

Pré-requis

Une fois que le serveur est installé de base, nous allons créer et configurer nos espaces d'hébergements. Tout d'abord, ce tutorial part des principes suivants :
  • Vous désirez pouvoir accéder à vos sites par ip_du_server/~nom_user
  • Vous n'avez qu'une seule IP pour tous vos sites

Dans cette première partie, nous allons modifier un fichier: /etc/apache2/apache2.conf, et créer des fichiers dans les répertoires /etc/apache2/sites-available et /etc/apache2/sites-enabled.

Activer le module userdir

a2enmod userdir

puis on redémarre apache :

/etc/init.d/apache2 restart



On vérifie les utilisateurs et groupes d'apache :

nano /etc/apache2/envvars

Puis on vérifie la présence des lignes :

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data


On choisi les fichiers qui seront interprétés comme index des dossiers :

nano /etc/apache2/mods-enabled/dir.conf


On vérifie que les utilisateurs sont autorisés à se connecter :

nano /etc/apache2/mods-available/userdir.conf

Puis on vérifie la présence de la ligne :

UserDir public_html


Activer PHP pour userdir

L'exécution en php est désactivée par défaut avec ce module. Pour changer ça et éviter que le navigateur télécharge le code php directement, éditer le fichier /etc/apache2/mods-enabled/php5.conf et commentez les lignes comme ci dessous :

nano /etc/apache2/mods-enabled/php5.conf

Ajouter des # au début de chaque ligne pour les commenter :

#    <IfModule mod_userdir.c>
#        <Directory /home/*/public_html>
#            php_admin_value engine Off
#        </Directory>
#    </IfModule>


Redémarrez Apache pour prendre en compte les modifications avec :

/etc/init.d/apache2 restart

Installation des virtualhosts

On va maintenant créer nos hôtes virtuels. Par défaut, nous l'appelerons test1.com. A vous de mettre les noms que vous désirez. Mais avant de s'attaquer aux utilisateurs, on commence par modifier le squelette de la création des nouveaux users. L'avantage ? Ne pas avoir besoin à chaque fois de devoir créer le répertoire public_html et logs quand on crée un nouvel utilisateur, mais aussi d'avoir directement une page d'accueil.

# mkdir /etc/skel/public_html

# mkdir /etc/skel/logs

# echo " <h1>Nouvel espace web cree</h1> " > /etc/skel/public_html/index.html

Une fois le squelette créé, on peut créer un nouvel utilisateur :

# useradd -g www-data -m test1


On crée un nouveau fichier /etc/apache2/sites-available/test1.com

# nano /etc/apache2/sites-available/test1.com

Et on y enregistre :

<VirtualHost *:80>
        ServerAdmin postmaster@test1.com
        ServerName www.test1.com
        ServerAlias test1.com
        DocumentRoot /home/test1/public_html/
        <Directory /home/test1/public_html/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
        </Directory>
        ErrorLog /home/test1/logs/error.log
        LogLevel warn
        CustomLog /home/test1/logs/access.log combined
        ServerSignature Off
</VirtualHost>


On valide et on ferme le fichier. On rend le domaine créé disponible.

# ln -s /etc/apache2/sites-available/test1.com /etc/apache2/sites-enabled/test1.com

On vérifie que la syntax est bonne :

# apache2ctl -t

Si en retour on obtient un « Syntax OK », on redémare apache2 :

# /etc/init.d/apache2 restart


Normalement vous devriez pouvoir acceder à http://IP_DE_VOTRE_SERVEUR/~test1/ et y voir "Nouvel espace web cree"





Exercice 3


Configurez VSFTPD afin que l'utilisateur userftp1 associé au mot de passe d6rb puisse envoyer des fichiers dans le dossier /home/test1/public_html (et uniquement dans ce dossier).

Correction de l'exercice 3


Configuration de VSFTPD en mode "utilisateur virtuel"

Introduction

Maintenant que nous avons un site serveur web opérationnel, et la possibilité de créer nos bases de données, il devient nécessaire de mettre nos fichiers sur le serveur. Pour cela, nous installons VSFTPD. C'est un serveur FTP très sécurisé (Very Secure File Transfert Protocol Daemon).

VSFTPD dispose de plusieurs styles de paramétrage de base. Là encore, étant donné que nous souhaitons pouvoir disposer de plusieurs comptes FTP par domaine, et notamment d'avoir des comptes FTP qui pointent sur des sous-domaines, nous utiliserons le paramétrage par utilisateur virtuel.

Pour ce faire, nous allons utiliser une base de données de type Berkeley. Il s'agit d'une base de type non-SQL. Elle n'est pas prévue pour être interrogée comme Mysql ou SQL server. En fait, il s'agit d'une table de hachage. Chaque enregistrement ne sera constitué que d'un login et d'un mot de passe. Ce type de base de données est indexé, extrêmement rapide et simple à mettre en œuvre. L'utilisation de ce type de base de données est obligatoire pour l'utilisation d'une identification de type PAM.

Pour le principe, nous ne définissons qu'un seul utilisateur UNIX à notre serveur FTP. Lorsque l'on se connecte avec un utilisateur, le programme vérifie dans notre base de données si celui-ci existe, et si le mot de passe correspond. A partir de là, il va chercher les paramètres concernés (chroot, droits spécifiques) et renvoit le répertoire concerné.

Grâce au chroot, il n'y a aucun souci de sécurité, car le répertoire est considéré comme étant un répertoire racine, il n'est donc pas possible de remonter la hiérarchie. Ce point est important du point de vue sécuritaire, car chaque connexion FTP utilise exactement le même utilisateur Unix : www-data.

Pour créer un nouvel utilisateur, il suffit de lui créer une entrée dans la base Berkeley, et un fichier de configuration personnel.

Préparation

On commence par préparer la configuration en créant le répertoire qui contiendra tous nos fichiers :

# mkdir /etc/vsftpd

On va devoir modifier la configuration de VSFTPD. Pour cela, on effectue une sauvegarde. Cela permettra de revenir en arrière en cas de souci :

# cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

La base de données

Il nous faut maintenant installer la base de données. On utilise pour cela la commande :

# apt-get install db4.6-util


Ce type de base de données est extrêmement simple, c'est pourquoi nous l'utilisons. Il se base sur un fichier de type texte contenant nos différentes informations, entrées une à une. En fait, il n'y a pas de tables, ni de champs à configurer ! On va juste convertir un fichier contenant nos données sous cette forme :

# nano /etc/vsftpd/login.txt

login 1
password 1
login 2
password 2
...
login n
password n

On va créer le nom d'utilisateur userftp1 avec le mot de passe d6rb :

userftp1
d6rb


On crée donc un fichier login.txt (le .txt n'est là que pour indiquer que ce sera nos données brutes ! Vous pouvez le nommer comme bon vous semble !). Puis on va le convertir en base de données.

# db4.6_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

# chmod 600 /etc/vsftpd/login.db

# chmod 600 /etc/vsftpd/login.txt


On va maintenant informer le module PAM d'utiliser notre base de données nouvellement créée. Pour cela on créé le fichier vsftp.pam dans le dossier /etc/vsftpd/ :

nano /etc/vsftpd/vsftpd.pam

et on y ajoute :

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login


et on le copie :

# cp /etc/vsftpd/vsftpd.pam /etc/pam.d/vsftpd

Si le système nous informe que le fichier existe déjà, on l'écrase.

Modification de vsftpd.conf

Pour pouvoir utiliser nos utilisateurs virtuels, nous devons reconfigurer le fichier "vsftpd.conf"

Supprimons le fichier "/etc/vsftpd.conf" :

# rm /etc/vsftpd.conf

Pour ensuite le créer à nouveau :

nano /etc/vsftpd.conf

Copier le fichier de configuration suivant :

# Ceci configure VSFTPd en mode "standalone"
listen=YES

# On désactive les connexions anonymes
# et on active les non-anonymes (c'est le cas des utilisateurs virtuels) :
anonymous_enable=NO
local_enable=YES

# Pour des raisons de sécurité on interdit toute action d'écriture :
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

# 'guest_enable' est très important: cela active les utilisateurs virtuels !
# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur 'virtual' que nous avons défini plus haut, et au home
# correspondant : '~virtual/'.
guest_enable=YES
guest_username=www-data

# On définit les droits par défaut des fichiers uploadés
anon_umask=022

# On veut que les utilisateurs virtuels restent chez eux : '~virtual/'
# (attends, on leur a fait un toit, c'est pas pour rien !)
chroot_local_user=YES

# On définit le nombre maximum de sessions à 200 (les nouveaux clients recevront
# un message du genre: "erreur : serveur occupé").
# On définit le nombre maximum de sessions par IP à 4
max_clients=200
max_per_ip=4

####################################
# Debian customization             #
# (ou adoptons la Debian attitude) #
####################################
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default.  These settings are more Debian-friendly.
#
# This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

# Permet d'utiliser les configurations individuelles pour chaque utilisateur
user_config_dir=/etc/vsftpd/vsftpd_user_conf


Sauvegardez puis quittez.

Paramétrer les utilisateurs

On va maintenant chrooter nos utilisateurs dans leur répertoire respectif. Pour cela, on crée le répertoire qui sera utilisé pour contenir nos différents fichiers par utilisateur. Et on crée le fichier pour chaque utilisateur dans notre base de données.

On créé le dossier /vsftpd_user_conf

# mkdir /etc/vsftpd/vsftpd_user_conf/

Puis on créé le fichier "/etc/vsftpd/vsftpd_user_conf/userftp1" :

nano /etc/vsftpd/vsftpd_user_conf/userftp1

Et on y ajoute :

anon_world_readable_only=NO
local_root=/home/test1/public_html
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

Notez la variable local_root qui permet de définir le dossier accessible via ce compte. 


On enregistre et on ferme.

Redémarrage et test

On redémarre notre service FTP :

# /etc/init.d/vsftpd restart


Et il ne nous reste plus qu'à nous connecter à notre compte FTP en utilisant :

IP: ip du serveur
login: userftp1
password: d6rb

normalement vous devriez pouvoir vous connecter au serveur via FTP.


Dans le cas où vous ne pouvez pas uploader de fichiers, c'est que les droits ne sont pas bons. Vérifiez bien que le répertoire  /home/test1/public_html ait les droits www-data:www-data pour propriétaire et groupe :


# chown www-data:www-data /home/test1/public_html

Les transferts devraient être opérationnels

Ajouter un utilisateur FTP

Pour ajouter un utilisateur, ajoutez le login et son mot de passe dans login.txt (/etc/vsftpd/login.txt) 


puis exécuter :

# db4.6_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

Ajoutez les informations de l'utilisateur dans /etc/vsftpd/vsftpd_user_conf/[NOM_DE_L_UTILISATEUR]


Puis on redémarre VSFTP

# /etc/init.d/vsftpd restart




Exercice 4


En utilisant votre registrar, redirigez votre nom de domaine (test1.com par exemple) vers le dossier /home/test1/public_html/, puis redirigez un sous domaine (admin.test1.com par exemple) vers le dossier /home/test1/public_html/sd_admin/.

Correction de l'exercice 4


Configuration des noms de domaines

Maintenant que nous avons notre serveur web installé, il faut que nos visiteurs puissent nous trouver. Et il n'est guère facile de leur faire retenir une adresse du style : 213.251.175.34/~nom_de_mon_site. Si vous y arrivez, vous êtes un champion ;). Nous allons utiliser des noms de domaine pour avoir une adresse du type www.test1.com.

Méthode 1 : Utilisez votre registrar

Introduction

Le serveur DNS permet de faire le lien entre le nom de domaine et l'adresse IP de votre serveur. Votre registrar (OVH par exemple) vous permet de faire ce lien. Lorsque l'utilisateur entrera l'adresse www.test1.com, le serveur DNS redirigera vers l'adresse IP de notre serveur. Le serveur regardera ensuite le nom de domaine qui l'a mené jusqu'à lui (www.test1.com dans notre cas), en connaissant cette information, les VirtualHost d'apache redirigeront vers le dossier correspondant à ce nom de domaine (/home/test1/public_html/).

Indiquez les serveurs DNS à utiliser (OVH)

Normalement, lorsque vous venez d'acheter votre nom de domaine, cette information est déjà pré-remplie.


Indiquez l'adresse IP de votre serveur

Cette information doit être rempli dans le champ A :


Créer un sous domaine

Savoir créer un sous domaine est aujourd'hui quasi indispensable pour quinconce souhaite administrer son propre serveur.

Renseigner apache

Nous avons vu précédemment comment rediriger un nom de domaine vers un dossier, maintenant nous souhaitons rediriger un sous-domaine vers un dossier :

Modifions le virtualhost correspondant :

# nano /etc/apache2/sites-available/test1.com

et ajoutons les renseignements de notre sous-domaine à la suite.

Notre fichier devrait ressembler à :


<VirtualHost *:80>
        ServerAdmin postmaster@test1.com
        ServerName www.test1.com
        ServerAlias test1.com
        DocumentRoot /home/test1/public_html/
        <Directory /home/test1/public_html/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
        </Directory>
        ErrorLog /home/test1/logs/error.log
        LogLevel warn
        CustomLog /home/test1/logs/access.log combined
        ServerSignature Off
</VirtualHost>

<VirtualHost *:80>
        ServerName admin.test1.com
        DocumentRoot /home/test1/public_html/sd_admin/
</VirtualHost>


Vous pouvez créer le dossier /sd_admin en utilisant FTP ou en passant par une commande (vous devriez savoir laquelle maintenant).

On valide et on ferme le fichier. On rend le domaine créé disponible.

# ln -s /etc/apache2/sites-available/test1.com /etc/apache2/sites-enabled/test1.com

On vérifie que la syntax est bonne :

# apache2ctl -t

Si en retour on obtient un « Syntax OK », on redémare apache2 :

# /etc/init.d/apache2 restart

Renseigner le serveur DNS

Retournons chez notre registrar (OVH par exemple), pour lui indiquer que nous souhaitons utiliser un sous-domaine :

Ajoutez un nouveau champ CNAME qui pointe vers le domaine principal, apache se chargera du reste :


Méthode 2 : Utilisez votre serveur comme serveur DNS avec Bind9

En cours de rédaction