Cahier 2017 groupe n°4 : Différence entre versions
De Wiki d'activités IMA
(→Création du serveur SSH) |
|||
| Ligne 194 : | Ligne 194 : | ||
==Configuration du serveur DNS== | ==Configuration du serveur DNS== | ||
| + | *Il faut d'abord installer bind pour la configuration du DNS ainsi qu'un serveur apache2 : | ||
| + | apt-get install bind9 apache2 | ||
| + | *Nous avons aussi réserver le nom de domaine tomatecomsique.space sur gandi.net. | ||
| + | *Nous créons le dossier du site web : | ||
| + | mkdir /var/www/www.tomatecosmique.space | ||
| + | *Enfin nous configurons le bind : | ||
| + | **On commence par créer le fichier de zone db.tomatecosmique.space dans /etc/bind/, son contenu est : | ||
| + | ; | ||
| + | ; BIND data file for local loopback interface | ||
| + | ; | ||
| + | $TTL 604800 | ||
| + | @ IN SOA dns1.tomatecosmique.space. root.tomatecomsique.space. ( | ||
| + | 2 ; Serial | ||
| + | 604800 ; Refresh | ||
| + | 86400 ; Retry | ||
| + | 2419200 ; Expire | ||
| + | 604800 ; Negative Cache TTL | ||
| + | ; | ||
| + | @ IN NS dns1.tomatecosmique.space. | ||
| + | dns1 IN A 193.48.57.184 | ||
| + | **Ensuite on configure /etc/bind/named.conf.local : | ||
| + | zone "tomatecosmique.space" { | ||
| + | type master; | ||
| + | file "/etc/bind/db.tomatecosmique.space"; | ||
| + | allow-transfer { 217.70.177.40; }; | ||
| + | }; | ||
| + | **Et /etc/bind/named.conf.options : | ||
| + | options { | ||
| + | directory "/var/cache/bind"; | ||
| + | dnssec-validation auto; | ||
| + | auth-nxdomain no; | ||
| + | listen-on-v6 { any; }; | ||
| + | }; | ||
| + | **Enfin on relance le service bind : | ||
| + | service bind9 restart | ||
| + | *Il y a aussi une configuration à effectuer sur le site gandi : | ||
| + | **Dans l'onglet "glues records" : | ||
| + | Nom du serveur : dns1.tomatecosmique.space | ||
| + | IP : 193.48.57.184 | ||
| + | |||
==Sécurisation du site via certificat SSL== | ==Sécurisation du site via certificat SSL== | ||
==Sécurisation avec DNSSEC== | ==Sécurisation avec DNSSEC== | ||
==RAID5 et cryptage des données== | ==RAID5 et cryptage des données== | ||
Version du 12 novembre 2017 à 14:51
Système pour réinstallation rapide d'un système linux
Objectifs
- L'objectif principal de notre tache est de créer un programme permettant de récupérer la configuration d'un système linux (configuration réseau, packages, et dossiers importants) afin de l'utiliser pour configurer un système linux fraîchement installé.
- Il faudra ensuite proposé un système de fichiers incrémental permettant de forcer le système à l'état n-1 voire à l'état initial.
Réinstallation rapide
- Pour la première partie de ce sujet, nous avons réalisé deux script shell ayant plusieurs fonctions.
- Le premier script récupère la configuration d'un système linux :
- crée un répertoire pour y enregistrer la configuration
- récupère le dossier de configuration réseau /etc/network
- récupère la liste des miroirs des archives debian
- récupère la liste des packages installés
- récupère les dossiers /etc/default et /etc/alternatives
getconf.sh
#!/bin/bash
#get the current network and packages config of a linux system for further recover
if [ "$(id -u)" != "0" ] ; then
echo "error : This script must be run as root"
exit
fi
echo "Trying to get the current configuration of the system"
if [ -e backup -a -d backup ] ; then
answer="\0"
echo "A backup directory is already existing"
while [ $answer != "n" -a $answer != "y" ] ; do
echo "Do you want to overwrite this backup ? [y/n] :"
read answer
done
if [ $answer = "n" ] ; then
echo "Overwriting refused"
echo "done"
exit
else
rm -r backup
mkdir backup
cd backup
cp -r /etc/network .
echo "Network configuration saved"
cp -r /var/cache/debconf .
cp /etc/apt/sources.list .
cp -r /etc/apt/sources.list.d .
echo "Mirror configuraiton saved"
touch packages
dpkg --get-selections > packages
echo "Packages list saved"
cp -a /etc/alternatives .
cp -a /etc/default .
echo "Other important files saved"
echo "Basic configuration successfully saved"
echo "done"
exit
fi
else
mkdir backup
cd backup
cp -r /etc/network .
echo "Network configuration saved"
cp -r /var/cache/debconf .
cp /etc/apt/sources.list .
cp -r /etc/apt/sources.list.d .
echo "Mirror configuraiton saved"
touch packages
dpkg --get-selections > packages
echo "Packages list saved"
cp -a /etc/alternatives .
cp -a /etc/default .
echo "Other important files saved"
echo "Basic configuration successfully saved"
echo "done"
exit
fi
fi
- Le deuxième script effectue l'opposé du premier, supprimant la configuration actuelle d'un nouveau système linux pour y coller celle que l'on a sauvegardée précédemment :
setconf.sh
#!/bin/bash
#set an old network and packages config of a linux system on a freshly installed linux system
if [ "$(id -u)" != "0" ] ; then
echo "error : This script must be run as root"
exit
fi
echo "Trying to set the old configuration on the system"
if [ -e backup -a -d backup ] ; then
answer="\0"
while [ $answer != "n" -a $answer != "y" ] ; do
echo "Do you want to configure the network and the packages on this system ? [y/n] :"
read answer
done
if [ $answer = "n" ] ; then
echo "Configuration aborted"
echo "done"
exit
else
rm -r /etc/network
cp -r backup/network /etc/
echo "Network reconfigured, going to restart..."
/etc/init.d/networking restart
echo "Network has been restarted"
rm -r /var/cache/debconf
cp -r backup/debconf /var/cache/
dpkg-reconfigure debconf
rm /etc/apt/sources.list
cp backup/sources.list /etc/apt/
rm -r /etc/apt/sources.list.d
cp -r backup/sources.list.d /etc/apt/
echo "Mirror configured, updating packages list..."
apt-get update
echo "Packages list updated"
echo "Installing all packages..."
dpkg --set-selections < backup/packages
apt-get dselect-upgrade
echo "Packages installed"
rm -r /etc/alternatives
cp -a backup/alternatives /etc/
rm -r /etc/defaultreboot
cp -a backup/default /etc/
echo "done"
echo "The system needs to reboot"
answer="\0"
while [ $answer != "n" -a $answer != "y" ] ; do
echo "Do you want to reboot now ? [y/n] :"
read answer
done
if [ $answer = "n" ] ; then
echo "Reboot refused"
echo "done"
exit
else
echo "System is going to reboot"
reboot
exit
fi
fi
else
echo "error : There is no backup directory here, execute getconf.sh on the system you want to recover first"
exit
fi
- La récupération et l’installation du réseau, des configurations du miroir des archives, et des répertoire alternatives et default se fait simplement par la commande cp. L'option -a permet de copier les liens symboliques ainsi que l'arborescence tels qu'ils sont. Cependant la copie des liens symbolique semble ne pas fonctionner sur certains type de formatage de clé usb.
- Pour réinstaller les packages, il suffit de récupérer la liste des packages installés grâce à la commande dpkg --get-selections dont la sortie et redirigée vers un fichier texte. Ensuite il faut mettre à jour la liste des packages sur le nouveau système avec dpkg --set-selections qui prend en entrée le fichier texte précédent. Enfin il suffit d'upgrade les packages (apt-get dselect-upgrade) afin de tous les installer.
Système de fichiers incrémental (overlay fs)
Partie commune
Installation d'une machine virtuelle sur le serveur Cordouan
- Nous avons installé une machine virtuel xen à l'aide la commande :
xen-create-image --hostname=ima5-tomate --dir=/usr/local/xen --ip=172.26.76.106 --netmask=255.255.255.224 --gateway=172.26.79.254
L'adresse ip est temporaire et sera remplacé par la suite par 193.48.57.184 (réseau de TP ima5)
- L'interface ethernet est montée sur le pont insecure en modifiant le fichier de configuration (/etc/xen/ima5-tomate.cfg) :
vif = [ 'mac=00:16:3E:5C:6B:A2, bridge=INSECURE' ]
Encore une fois, ceci est temporaire et nous utiliserons le pont IMA5sc par la suite.
- La machine virtuelle peut être lancée et stoppée avec les commandes suivantes :
xl create /etc/xen/ima5-tomate.cfg xl destroy /etc/xen/ima5-tomate.cfg
- Pour accéder à la console de la machine virtuelle, on utilise :
xl console ima5-tomate
Création d'une partition LVM
- On veut placer les /var et /home de la machine virtuelle sur un disque partitionné de cordouan.
- On créer d'abord deux partitions de 10Go sur cordouan :
lvcreate -L10G -ima5-tomate_home lvcreate -L10G -ima5-tomate_var
- Il faut ensuite modifier le fichier de configuration de la machine virtuelle (/etc/xen/ima-tomate) pour ajouter les disques :
disk = [
'file:/usr/local/xen/domains/ima5-tomate/disk.img,xvda2,w',
'file:/usr/local/xen/domains/ima5-tomate/swap.img,xvda1,w',
'phy:/dev/virtual/ima5-tomate_var,xvda3,w',
'phy:/dev/virtual/ima5-tomate_home,xvda4,w'
]
- Puis on formate ces deux nouveau disques :
mkfs -t ext4 /dev/xvda3 mkfs -t ext4 /dev/xvda4
- Enfin on monte les partitions dans la VM :
- On ajoute la ligne suivante dans le fichier /etc/fstab de la VM afin que le /home soit monté au lancement :
/dev/xvda4 /home ext4 defaults 0 2
- Le /var doit d'abord être monté sur un fichier temporaire :
mount /dev/xvda3 /mnt
Puis on déplace le /var actuel dans ce nouveau fichier :
mv /var/* /mnt
Enfin on ajoute la ligne suivante dans le fichier /etc/fstab de la VM :
/dev/xvda3 /home ext4 defaults 0 2
Création du serveur SSH
- L’installation du serveur ssh se fait tout simplement grâce à :
apt-get install ssh
- Il suffit ensuite de modifier le fichier /etc/ssh/sshd_config pour pouvoir accéder à la machine en root :
PermitRootLogin yes
Cette ligne est déjà écrite dans le fichier, il faut juste changer l'option par "yes".
Configuration du serveur DNS
- Il faut d'abord installer bind pour la configuration du DNS ainsi qu'un serveur apache2 :
apt-get install bind9 apache2
- Nous avons aussi réserver le nom de domaine tomatecomsique.space sur gandi.net.
- Nous créons le dossier du site web :
mkdir /var/www/www.tomatecosmique.space
- Enfin nous configurons le bind :
- On commence par créer le fichier de zone db.tomatecosmique.space dans /etc/bind/, son contenu est :
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA dns1.tomatecosmique.space. root.tomatecomsique.space. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ; Negative Cache TTL
;
@ IN NS dns1.tomatecosmique.space.
dns1 IN A 193.48.57.184
- Ensuite on configure /etc/bind/named.conf.local :
zone "tomatecosmique.space" {
type master;
file "/etc/bind/db.tomatecosmique.space";
allow-transfer { 217.70.177.40; };
};
- Et /etc/bind/named.conf.options :
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { any; };
};
- Enfin on relance le service bind :
service bind9 restart
- Il y a aussi une configuration à effectuer sur le site gandi :
- Dans l'onglet "glues records" :
Nom du serveur : dns1.tomatecosmique.space IP : 193.48.57.184