« Atelier SysRes SE2a5 2023/2024 E5 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(33 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
=== '''Création d'un container :''' ===
== '''Création d'un container :''' ==
 
création d'un fichier de partition toto à l'aide de l'utilitaire dd  : <syntaxhighlight lang="shell">
création d'un fichier de partition toto à l'aide de l'utilitaire dd  : <syntaxhighlight lang="shell">
dd if=/dev/zero of=toto bs=1024k count=10240
dd if=/dev/zero of=toto bs=1024k count=10240
Ligne 7 : Ligne 8 :
</syntaxhighlight>Une fois notre partition préparée on la remplie avec l'image du container grâce à l'utilitaire debootstrap :<syntaxhighlight lang="shell">
</syntaxhighlight>Une fois notre partition préparée on la remplie avec l'image du container grâce à l'utilitaire debootstrap :<syntaxhighlight lang="shell">
debbotstrap stable /tmp/mnt  
debbotstrap stable /tmp/mnt  
</syntaxhighlight>On peut ensuite préparer le montage de notre container avec /proc :<syntaxhighlight>
</syntaxhighlight>On peut ensuite préparer le montage de notre container avec /proc :<syntaxhighlight lang="shell">
echo "proc /proc proc defaults 0 0" >> tmp/mnt/etc/fstab
echo "proc /proc proc defaults 0 0" >> tmp/mnt/etc/fstab
</syntaxhighlight>Ensuite grâce a la comande unshare nous pouvons entrer dans l'espace de ficheir que nous venons de créer et l'isolé créant ainsi un container <syntaxhighlight lang="shell">
</syntaxhighlight>Ensuite grâce a la commande unshare nous pouvons entrer dans l'espace de fichier que nous venons de créer et l'isolé créant ainsi un container <syntaxhighlight lang="shell">
unshare -p -f -m chroot /tmp/mnt /bin/sh -c "mount /proc ; /bin/bash"  
unshare -p -f -m chroot /tmp/mnt /bin/sh -c "mount /proc ; /bin/bash"  
</syntaxhighlight>
</syntaxhighlight>
== Installation de la Machine virtuelle : ==
{| class="wikitable"
|+
!Machine
!IP
|-
|paris
|172.26.145.111
|}
Création de la machine virtuelle a expliquer (première séance)
=== séance du 02/10 : ===
Création des partitions paris-home et paris-var grâce à la commande <syntaxhighlight lang="shell">
lvcreate -L10G -nparis-var virtual
</syntaxhighlight>vérifier la création des partition avec lsblk. On créer ensuite deux répertoire new_home et new_var pordans lesquels ont va placer le contenu de /var et /home pour ensuite monter nos disque dans /home et /var.<syntaxhighlight lang="shell">
mkdir /new_home
mkdir /new_var
mkfs /dev/xvdb1
mkfs /dev/xvdb2
mount /dev/xvdbs1 /new_home
mount /dev/svdbs2 /new_var
mv /var/* /new_var
umount /new_var
umount /new_home
</syntaxhighlight>On ajoute ensuite dans le fichier /etc/fstab les 2 lignes<syntaxhighlight lang="shell">
/dev/xvdb1 /home ext4 defaults 0 2
/dev/xvdb2 /var ext4 defaults 0 2
</syntaxhighlight>De cette manière nos répertoires /home et /var profiteront d'un espace de 10G.
=== Création de la machine mandataire (avec Ahlam) ===
Création de la machine mandataire virtuelle<syntaxhighlight lang="shell">
xen-create-image --hostname=judo --ip=193.48.57.165 --netmask=255.255.255.240 --bridge=SE2a5 --dir=/usr/local/xen --password=glopglop --gateway=193.48.57.161
</syntaxhighlight>Création de la VM mandataire : <syntaxhighlight lang="shell">
xen create /etc/xen/judo.cfg
xen console judo
</syntaxhighlight> <code>xen create /etc/xen/.cfg</code>    <code>xen console judo</code> 
Adresse IPV6 de notre machine JUDO :  <code>2001:660:4401:60a0:216:3eff:fe0b:d504</code>
//
nano /etc/resolv.conf<syntaxhighlight lang="shell">
search plil.info
nameserver 8.8.8.8
nameserver 193.48.57.48
</syntaxhighlight>Création du bridge: <syntaxhighlight lang="shell">
#judo_bridge
auto judo
iface judo inet manual
  bridge_ports none
  post-up ip link set $IFACE up
  post-down ip link set $IFACE down
</syntaxhighlight>ajout des interfaces sur les machines de services :<syntaxhighlight lang="shell">
auto eth1
iface eth1 inet static
        address 192.168.165.2/24
        gateway 192.168.165.1
        post-up ethtool -K eth1 tx off
</syntaxhighlight>ajout de l'interface sur la machine mandataire :<syntaxhighlight lang="shell">
auto eth1
iface eth1 inet static
        address 192.168.165.1/24
</syntaxhighlight>On a maintenant un réseau privé entre nos deux machines de services et notre machine mandataire nous allons maintenant mettre en place la mascarade.<syntaxhighlight lang="shell">
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.165.0/24
apt install iptables-persistent
iptable -save
</syntaxhighlight>On va modifier dans le fichier /etc/sysctl.conf la ligne permettant le forward ipv4 permettant a nos machines d'envoyer des paquets sur internet.<syntaxhighlight lang="shell-session">
nano /etc/sysctl.conf
net.ipv4.ip_forward=1
</syntaxhighlight>On va désormais supprimer les interfaces ipv4 sur nos machines de services. Elles vont maintenant accéder à internet en ipv4 via la machine mandataire.
Pour se connecter sur nos machines on utilise maintenant cette commande <code> ssh -J root@193.48.57.165 root@192.168.165.2 </code>
==== Mise en place de la redirection de port ====
Afin de mettre en place la direction de port nous allons :
- autoriser l'IP forwarding afin que notre machine mandataire puisse agir en tant que routeur entre notre réseau privé et les réseaux extérieurs. <syntaxhighlight lang="shell">
sysctl net.ipv4.ip_forward=1
</syntaxhighlight>- Ajouter les règles de transfert de port <syntaxhighlight lang="shell">
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2201 -j DNAT --to-destination 192.168.165.2:22 // vers paris
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2202 -j DNAT --to-destination 192.168.165.3:22 // vers berlin
</syntaxhighlight>On peut maintenant se connecter su ma machine de service avec la commande ssh root@193.48.57.165 -p2201
=== séance du 10/11 : ===
==== Configuration de bind: ====
On utilise bind9 pour avoir notre dns.
===== Machine de service: =====
création sur la machine de service du  fichier de zone db.paris13.lol :<syntaxhighlight lang="linux-config">
$TTL 1H
paris13.lol.    IN      SOA    ns1.paris13.lol. quoicoubeh@mail.com. (
                                        2011041902 ; Serial
                                        1H ; Refresh
                                        15M ; Retry
                                        2W ; Expire
                                        3M ; Minimum TTL
                                        )
paris13.lol.    IN NS    ns1.paris13.lol.
paris13.lol      IN A    193.48.57.165
ns1.paris13.lol. IN A    193.48.57.165
ns1.paris13.lol. IN AAAA  2001:660:4401:6050:216:3eff:fe45:73c4
www.paris13.lol. IN CNAME ns1.paris13.lol.
</syntaxhighlight>et ajout de la zone dans le fichier named.conf.local :<syntaxhighlight lang="shell">
zone "paris13.lol" {
    type master;
    file "/etc/bind/db.paris13.lol";
    allow-transfer { 192.168.165.1; };
};
</syntaxhighlight>On ajotue aussi dans le fichier named.conf.options <code> allow-recursion {localhost;};</code> pour éviter de servir de relai DNS ouvert.
===== Machine mandataire : =====
modification du fichier de config named.config.local, on ajoute les deux zones de nos machines de service car la machine agira comme machine esclave et va transmettre les messages:<syntaxhighlight lang="linux-config">
zone "paris13.lol" {
        type slave;
        file "/etc/bind/db.paris13.lol";
        masters {192.168.165.2;};
};
zone "berlin2.lol" {
        type slave;
        file "/etc/bind/db.berlin2.lol";
        masters {192.168.165.3;};
};
</syntaxhighlight>
==== Obtention d'une clé d'authtification pour protocole https : ====
Génération d'un CSR <code>openssl req -nodes -newkey rsa:2048 -sha256 -keyout paris.key -out paris13server.csr -utf8</code>
On copie la clé créée sur gandi afin d'obtenir le certificat.
Puis on créer le Virtual Host:  <code>vim  /etc/apache2/sites-available/vhost-https.conf</code>
[[Fichier:Vhostparis.png|centré|vignette|485x485px]]
=== Séance 23/11 : ===
==== Sécurisation du DNS : ====
===== Solution Manuelle : =====
Génération de la clé de signature de zone : <code> dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE paris13.lol </code>
on obtient nos 2 clés : paris13.lol-ksk.key et paris13.lol-ksk.private qu'on place dans le répertoire paris13.lol.dnssec .
La version de bind9 utilisée sur l'ordi ne permettant pas cette solution. On va utilisé la méthode automatique.
===== Solution automatique : =====
On ajoute dans le fichier de config bind :
[[Fichier:Bind58.png|centré|vignette|556x556px]]
AJout de règles de sécurité du DNS, ce qui va automatiquement créer les clés privées et publiques. On va ensuite mettre notre clé KSK sur Gandi. Après le temps de propagation de Gandi notre dns sera possèdera la protection supplémentaire DNSSEC.
==== Ajout des certificats https : ====
on récupère le certificat sur gandi et on l'ajoute sur la machine mandataire ainsi que la machine de service.
On ajoute ensuite sur la machine mandataire des redirection vers la machine de service afin d'afficher la page sur celle-ci.cd
[[Fichier:Vhostv2.png|centré|vignette|532x532px]]

Version actuelle datée du 24 novembre 2023 à 10:08

Création d'un container :

création d'un fichier de partition toto à l'aide de l'utilitaire dd  :

dd if=/dev/zero of=toto bs=1024k count=10240

on formate et monte ensuite la partition :

mkfs toto
mount -o loop toto /tpm/mnt

Une fois notre partition préparée on la remplie avec l'image du container grâce à l'utilitaire debootstrap :

debbotstrap stable /tmp/mnt

On peut ensuite préparer le montage de notre container avec /proc :

echo "proc /proc proc defaults 0 0" >> tmp/mnt/etc/fstab

Ensuite grâce a la commande unshare nous pouvons entrer dans l'espace de fichier que nous venons de créer et l'isolé créant ainsi un container

unshare -p -f -m chroot /tmp/mnt /bin/sh -c "mount /proc ; /bin/bash"

Installation de la Machine virtuelle :

Machine IP
paris 172.26.145.111

Création de la machine virtuelle a expliquer (première séance)

séance du 02/10 :

Création des partitions paris-home et paris-var grâce à la commande

lvcreate -L10G -nparis-var virtual

vérifier la création des partition avec lsblk. On créer ensuite deux répertoire new_home et new_var pordans lesquels ont va placer le contenu de /var et /home pour ensuite monter nos disque dans /home et /var.

mkdir /new_home
mkdir /new_var
mkfs /dev/xvdb1
mkfs /dev/xvdb2
mount /dev/xvdbs1 /new_home
mount /dev/svdbs2 /new_var
mv /var/* /new_var
umount /new_var
umount /new_home

On ajoute ensuite dans le fichier /etc/fstab les 2 lignes

/dev/xvdb1 /home ext4 defaults 0 2
/dev/xvdb2 /var ext4 defaults 0 2

De cette manière nos répertoires /home et /var profiteront d'un espace de 10G.

Création de la machine mandataire (avec Ahlam)

Création de la machine mandataire virtuelle

xen-create-image --hostname=judo --ip=193.48.57.165 --netmask=255.255.255.240 --bridge=SE2a5 --dir=/usr/local/xen --password=glopglop --gateway=193.48.57.161

Création de la VM mandataire :

xen create /etc/xen/judo.cfg
xen console judo

xen create /etc/xen/.cfg xen console judo

Adresse IPV6 de notre machine JUDO : 2001:660:4401:60a0:216:3eff:fe0b:d504

//

nano /etc/resolv.conf

search plil.info
nameserver 8.8.8.8
nameserver 193.48.57.48

Création du bridge:

#judo_bridge
auto judo
iface judo inet manual
  bridge_ports none
  post-up ip link set $IFACE up
  post-down ip link set $IFACE down

ajout des interfaces sur les machines de services :

auto eth1
iface eth1 inet static
        address 192.168.165.2/24
        gateway 192.168.165.1
        post-up ethtool -K eth1 tx off

ajout de l'interface sur la machine mandataire :

auto eth1
iface eth1 inet static
        address 192.168.165.1/24

On a maintenant un réseau privé entre nos deux machines de services et notre machine mandataire nous allons maintenant mettre en place la mascarade.

iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.165.0/24
apt install iptables-persistent
 iptable -save

On va modifier dans le fichier /etc/sysctl.conf la ligne permettant le forward ipv4 permettant a nos machines d'envoyer des paquets sur internet.

nano /etc/sysctl.conf 

net.ipv4.ip_forward=1

On va désormais supprimer les interfaces ipv4 sur nos machines de services. Elles vont maintenant accéder à internet en ipv4 via la machine mandataire.

Pour se connecter sur nos machines on utilise maintenant cette commande ssh -J root@193.48.57.165 root@192.168.165.2

Mise en place de la redirection de port

Afin de mettre en place la direction de port nous allons :

- autoriser l'IP forwarding afin que notre machine mandataire puisse agir en tant que routeur entre notre réseau privé et les réseaux extérieurs.

sysctl net.ipv4.ip_forward=1

- Ajouter les règles de transfert de port

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2201 -j DNAT --to-destination 192.168.165.2:22 // vers paris
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2202 -j DNAT --to-destination 192.168.165.3:22 // vers berlin

On peut maintenant se connecter su ma machine de service avec la commande ssh root@193.48.57.165 -p2201

séance du 10/11 :

Configuration de bind:

On utilise bind9 pour avoir notre dns.

Machine de service:

création sur la machine de service du fichier de zone db.paris13.lol :

$TTL 1H
paris13.lol.    IN      SOA     ns1.paris13.lol. quoicoubeh@mail.com. (
                                        2011041902 ; Serial
                                        1H ; Refresh
                                        15M ; Retry
                                        2W ; Expire
                                        3M ; Minimum TTL
                                        )
paris13.lol.     IN NS    ns1.paris13.lol.
paris13.lol      IN A     193.48.57.165
ns1.paris13.lol. IN A     193.48.57.165 
ns1.paris13.lol. IN AAAA  2001:660:4401:6050:216:3eff:fe45:73c4
www.paris13.lol. IN CNAME ns1.paris13.lol.

et ajout de la zone dans le fichier named.conf.local :

zone "paris13.lol" {
    type master;
    file "/etc/bind/db.paris13.lol";
    allow-transfer { 192.168.165.1; };
};

On ajotue aussi dans le fichier named.conf.options allow-recursion {localhost;}; pour éviter de servir de relai DNS ouvert.

Machine mandataire :

modification du fichier de config named.config.local, on ajoute les deux zones de nos machines de service car la machine agira comme machine esclave et va transmettre les messages:

zone "paris13.lol" {
        type slave;
        file "/etc/bind/db.paris13.lol";
        masters {192.168.165.2;};
};

zone "berlin2.lol" {
        type slave;
        file "/etc/bind/db.berlin2.lol";
        masters {192.168.165.3;};
};

Obtention d'une clé d'authtification pour protocole https :

Génération d'un CSR openssl req -nodes -newkey rsa:2048 -sha256 -keyout paris.key -out paris13server.csr -utf8

On copie la clé créée sur gandi afin d'obtenir le certificat.

Puis on créer le Virtual Host: vim /etc/apache2/sites-available/vhost-https.conf

Vhostparis.png

Séance 23/11 :

Sécurisation du DNS :

Solution Manuelle :

Génération de la clé de signature de zone : dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE paris13.lol

on obtient nos 2 clés : paris13.lol-ksk.key et paris13.lol-ksk.private qu'on place dans le répertoire paris13.lol.dnssec .

La version de bind9 utilisée sur l'ordi ne permettant pas cette solution. On va utilisé la méthode automatique.

Solution automatique :

On ajoute dans le fichier de config bind :

Bind58.png

AJout de règles de sécurité du DNS, ce qui va automatiquement créer les clés privées et publiques. On va ensuite mettre notre clé KSK sur Gandi. Après le temps de propagation de Gandi notre dns sera possèdera la protection supplémentaire DNSSEC.

Ajout des certificats https :

on récupère le certificat sur gandi et on l'ajoute sur la machine mandataire ainsi que la machine de service.

On ajoute ensuite sur la machine mandataire des redirection vers la machine de service afin d'afficher la page sur celle-ci.cd

Vhostv2.png