« Atelier SysRes SE2a5 2023/2024 E5 » : différence entre les versions
(29 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
== '''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 9 : | Ligne 10 : | ||
</syntaxhighlight>On peut ensuite préparer le montage de notre container avec /proc :<syntaxhighlight lang="shell"> | </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 | </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> | ||
Ligne 22 : | Ligne 23 : | ||
|172.26.145.111 | |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 | Création des partitions paris-home et paris-var grâce à la commande <syntaxhighlight lang="shell"> | ||
lvcreate -L10G -nparis-var virtual | lvcreate -L10G -nparis-var virtual | ||
</syntaxhighlight>vérifier la création des partition avec lsblk. | </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"> | ||
On créer ensuite deux répertoire new_home et new_var pordans | |||
mkdir /new_home | mkdir /new_home | ||
mkdir /new_var | mkdir /new_var | ||
Ligne 45 : | Ligne 44 : | ||
</syntaxhighlight>De cette manière nos répertoires /home et /var profiteront d'un espace de 10G. | </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
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 :
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