« Atelier SysRes SE2a5 2023/2024 E10 » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(28 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
Partie sur les conteneurs | Nom de domaine : riga1.lol | ||
== Partie sur les conteneurs == | |||
dd if=/dev/zero of=fs bs=1024k count=10240 | dd if=/dev/zero of=fs bs=1024k count=10240 | ||
Ligne 11 : | Ligne 13 : | ||
</ | == Créer la VM == | ||
*Se connecter au serveur en tant que root : | |||
ssh root@capbreton.plil.info | |||
*Créer le fichier de config de la VM : | |||
xen-create-image --hostname=Riga--ip=172.26.145.102 --netmask=255.255.255.0 --gateway=172.26.145.254 --bridge=bridgeStudents --dir=/usr/local/xen --password=glopglop | |||
</ | *Créer la VM : | ||
''' | xen create /etc/xen/kiev.cfg | ||
*Lister les VM : | |||
xen list | |||
*se connecter à la VM depuis capbreton: | |||
xen console | |||
Nom de domaine : riga1.lol | |||
== Configurer le SSH == | |||
Modifier le fichier /etc/ssh/sshd_config: | |||
*Autoriser la connexion en root : | |||
PermitRootLogin yes | |||
*Redémarrer le service SSH : | |||
service ssh restart | |||
*se connecter en root via ssh : | |||
ssh root@172.26.145.102 | |||
== Créer les partitions LVM == | |||
*Créer 2 partitions LVM sur capbreton pour y rattacher, par la suite /home et /var : | |||
lvcreate -L10G -n Riga-home virtual | |||
lvcreate -L10G -n Riga-var virtual | |||
*Lister les LVM : | |||
lsblk | |||
*Dans '''/etc/xen/Riga.cfg''', ajouter les 2 partitions : | |||
'phy:/dev/virtual/Riga-home, xvdb, w',<br> | |||
'phy:/dev/virtual/Riga-var, xvdc, w', | |||
# Disk device(s). | |||
# | |||
root = '/dev/xvda2 ro' | |||
disk = [ | |||
'file:/usr/local/xen/domains/HG/disk.img,xvda2,w', | |||
'file:/usr/local/xen/domains/HG/swap.img,xvda1,w', | |||
'phy:/dev/virtual/Riga-home,xvdb,w', | |||
'phy:/dev/virtual/Riga-var,xvdc,w', | |||
Sur la VM : | |||
<li><code> mkfs /dev/xvdc // formater et créer un système de fichier</code> | |||
<li><code> mkfs /dev/xvdb </code> | |||
<li><code> mkdir new-var // créer un dossier </code> | |||
<li><code> mount /dev/xvdc new-var/ </code> | |||
<li><code> cp -r /var/* new-var/ // on copie dans le fichier new-var</code> | |||
<li><code> mkdir /mnt/new_home </code> | |||
<li> <code>mount /dev/xvdb /mnt/new-home </code> | |||
<li> <code>cp -r /home/* /mnt/new_home </code> | |||
<li> <code>vi /etc/fstab // ajout dans le fichier des lignes suivantes : | |||
/dev/xvdb /home ext4 defaults 0 2 | |||
/dev/xvdc /var ext4 defaults 0 2 | |||
<li><code> reboot </code> | |||
<li><code> umount new-var // On démonte </code> <li>finis conf de bind9 mais erreurs du restart, revoir la config | |||
] | |||
*Eteindre la VM : | |||
xen shut Riga | |||
== Créer la machine mandataire == | |||
xen-create-image --hostname=balltrap --ip=193.48.57.163 --netmask=255.255.255.240 --bridge=SE2a5 --dir=/usr/local/xen --password=glopglop --gateway=193.48.57.161 | |||
xen create balltrap.cfg | |||
*Se connecter à la VM | |||
xen console balltrap | |||
*Vérifier qu'on ping google | |||
*Dans /etc/network/interfaces, obtenir une IPv6 par dhcp : | |||
iface eth0 inet6 auto | |||
Installer le serveur ssh, le serveur Web apache2 et le serveur DNS bind. | |||
== Créer la mascarade == | |||
*Créer un bridge '''balltrap''' dans /etc/network/interfaces : | |||
*Up l'interface du bridge | |||
ifup balltrap | |||
*Ajouter le bridge dans le fichier de config de chaque VM (dans vif): | |||
'ip=192.168.163.1, bridge=balltrap' | |||
*Redémarrer la VM et, dans /etc/network/interfaces, lui déclarer une nouvelle interface réseau (eth1) avec une IP privée statique : | |||
balltrap = 192.168.163.1<br> | |||
kiev = 192.168.163.2<br> | |||
Riga = 192.168.163.3<br> | |||
*Monter l'interface réseau eth1 nouvellement créée : | |||
ifup -a | |||
*Vérifier qu'elle est bien montée : | |||
ip a | |||
Ping les autres IP dans ce réseau privé. | |||
*Créer une redirection de l'interface routée et notre interface privée sur la machine mandataire : | |||
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.10.0/24 | |||
apt install iptables-persistent | |||
iptables-save | |||
iptables-save >> /etc/iptables/rules.v4 | |||
Vérifier dans /etc/iptables les nouvelles règles de routage. | |||
*Se connecter en ssh depuis capbreton à ma machine de service en utilisant la machine mandataire comme jump : | |||
ssh -J root@193.48.57.163 root@192.168.163.3 | |||
*Activer le routage (autoriser la redirection d'IP) (en mode définitif) sur notre machine mandataire : (dans quel dossier ???) | |||
sysctl net.ipv4.ip_forward=1 | |||
*Créer maintenant des règles de routages pour se connecter en ssh aux machines de service en utilisant un port différent. | |||
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2201 -j DNAT --to-destination 192.168.163.2:22 | |||
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2202 -j DNAT --to-destination 192.168.163.3:22 | |||
*Se connecter en ssh à la machine de service depuis capbreton en utilisant sur le port 2201 : | |||
ssh root@193.48.57.163 -p 2201 | |||
== Configurer le serveur DNS == | |||
Sur https://www.gandi.net, acheter le nom de domaine '''riga1.lol''' et spécifier les serveurs DNS (GlueRecords + externalServerNames): | |||
*DNS principal (machine de service) -> IPv6 | |||
*DNS secondaire (machine mandataire) -> IPv4 | |||
</br> | |||
Sur la machine de service, ajouter le serveur DNS de google (8.8.8.8) dans '''/etc/resolv.conf (nameserver)''' | |||
*Maintenant on peut télécharger bind9 sur la machine de service. </br> | |||
Configurer le bind9 : | |||
Dans '''/etc/bind/named.conf.local''', créer la zone DNS (sur la machine de service et mandataire): | |||
*Sur la machine de service (master) | |||
zone "riga1.lol" { | |||
type master; | |||
file "/etc/bind/db.riga1.lol"; | |||
allow-transfer {192.168.163.1; }; | |||
}; | |||
*Sur la machine mandataire (slave) | |||
zone "riga1.lol" { | |||
type slave; | |||
file "/etc/bind/db.riga1.lol"; | |||
allow-transfer {192.168.163.3; }; | |||
};* | |||
Dans '''/etc/bind/named.conf.options''', ajouter '''allow-recursion {127.0.0.1}'''[[Fichier:Dns named.conf.jpg|centré|sans_cadre|233x233px]] | |||
listen-on-v6 { any; } | |||
listen-on { any; }; | |||
allow-recursion {127.0.0.1; }; | |||
Le fichier '''/etc/bind/db.riga1.lol''' contient les enregistrements DNS | |||
[[Fichier:Dns db.riga1 lol.jpg|centré|sans_cadre]] | |||
Vérifier qu'il n'y a pas d'erreur de conf DNS : | |||
*<code> cat /var/log/daemon.log </code> | |||
Redémarrer le service DNS (ne pas oublier d'incrémenter le SN dans '''named.conf.local''' à chaque restart : | |||
*<code> service bind9 restart </code> | |||
Vérifier qu'un serveur DNS est bien présent sur une machine pour la zone demandée (installer le package dnsutils préalablement) : | |||
*<code> dig @localhost riga1.lol </code> ou <code> dig 192.168.163.3 riga1.lol </code> | |||
Installer apache2 sur la machine de service et vérifier avec un browser que notre site web www.riga1.lol est en ligne: | |||
*On peut aussi tester la résolution DNS avec <code> nslookup ns1.riga1.lol </code> et <code> nslookup www.riga1.lol </code> | |||
<br> | |||
==DNSSEC== | |||
Tout d'abord il a fallut mettre à jour bind9 v9.16 | |||
dans /etc/apt/sources.list changer weowolf en chimaera<li> | |||
* Modification du fichier <code>/etc/bind/named.conf.options</code> :[[Fichier:Dsnsec option.jpg|centré|sans_cadre]] | |||
* Modification du fichier <code>/etc/bind/named.conf.local</code> : | |||
[[Fichier:Dnssec local.jpg|centré|sans_cadre]]On peut voir ensuite qu'un fichier "keys à été créé et contient des clés générées automatiquement :[[Fichier:Dnssec keys.jpg|centré|sans_cadre|441x441px]]service bind(named) restart | |||
<li>valider le dnssec dans gandi en collant la clé ksk avec l'alogorithme 13<li> | |||
== HTTPS & Apache2 == | |||
<code>apt install openssl </code> | |||
Générer une CSR : dans /etc/ssl | |||
<code>openssl req -nodes -newkey rsa:2048 -sha256 -keyout riga1.lol.key -out riga1.lol.csr -utf8</code> | |||
Remarque : Common Name mettre riga1.lol | |||
Sécuriser l'accès à la clé privée | |||
<code> | |||
mv riga1.lol.key /private | |||
chmod 440 riga1.lol.key | |||
</code> | |||
Copier le certificat obtenu sur Gandi : | |||
riga1.lol.crt dans /etc/ssl/certs | |||
Copier de ma machine vers ma VM service : (après avoir mkdir transfer dans la machine mandataire) | |||
Copie de ma machine vers la machine mandataire | |||
<code>zabeth10:~/Téléchargements$ scp -r -p riga1.lol.crt root@193.48.57.168:/etc/transfer/</code> | |||
Copie de ma machine mandataire vers la machine service : | |||
/etc/transfert scp -r -p riga1.lol.crt root@192.48.57.3:/etc/ssl/certs</code> | |||
Activer le mode SSL sur apache2 : <code>a2enmod ssl</code> et configurer apache2 pour gérer du HTTPS sur le port 443 | |||
Créer le fichier /etc/apache2/sites-available/vhosts-https.conf et le paramétrer de la manière suivante : | |||
lancer le site : | |||
<code>a2ensite vhosts-https.conf | |||
service apache2 restart</code> | |||
service | |||
</ |
Version actuelle datée du 24 novembre 2023 à 10:33
Nom de domaine : riga1.lol
Partie sur les conteneurs
dd if=/dev/zero of=fs bs=1024k count=10240 mkfs -t ext4 fs mkdir /tmp/mnt mount -o loop fs /tmp/mnt apt install debootstrap debootstrap stable /tmp/mnt echo "proc /proc proc defaults 0 0" >> tmp/mnt/fstab unshare -p -f -m chroot /tmp/mnt /bin/sh -c "mount /proc ; /bin/bash"
Créer la VM
- Se connecter au serveur en tant que root :
ssh root@capbreton.plil.info
- Créer le fichier de config de la VM :
xen-create-image --hostname=Riga--ip=172.26.145.102 --netmask=255.255.255.0 --gateway=172.26.145.254 --bridge=bridgeStudents --dir=/usr/local/xen --password=glopglop
- Créer la VM :
xen create /etc/xen/kiev.cfg
- Lister les VM :
xen list
- se connecter à la VM depuis capbreton:
xen console
Nom de domaine : riga1.lol
Configurer le SSH
Modifier le fichier /etc/ssh/sshd_config:
- Autoriser la connexion en root :
PermitRootLogin yes
- Redémarrer le service SSH :
service ssh restart
- se connecter en root via ssh :
ssh root@172.26.145.102
Créer les partitions LVM
- Créer 2 partitions LVM sur capbreton pour y rattacher, par la suite /home et /var :
lvcreate -L10G -n Riga-home virtual lvcreate -L10G -n Riga-var virtual
- Lister les LVM :
lsblk
- Dans /etc/xen/Riga.cfg, ajouter les 2 partitions :
'phy:/dev/virtual/Riga-home, xvdb, w',
'phy:/dev/virtual/Riga-var, xvdc, w',
# Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/HG/disk.img,xvda2,w', 'file:/usr/local/xen/domains/HG/swap.img,xvda1,w', 'phy:/dev/virtual/Riga-home,xvdb,w', 'phy:/dev/virtual/Riga-var,xvdc,w',
Sur la VM :
mkfs /dev/xvdc // formater et créer un système de fichier
mkfs /dev/xvdb
mkdir new-var // créer un dossier
mount /dev/xvdc new-var/
cp -r /var/* new-var/ // on copie dans le fichier new-var
mkdir /mnt/new_home
mount /dev/xvdb /mnt/new-home
cp -r /home/* /mnt/new_home
vi /etc/fstab // ajout dans le fichier des lignes suivantes :
/dev/xvdb /home ext4 defaults 0 2
/dev/xvdc /var ext4 defaults 0 2
reboot
umount new-var // On démonte
finis conf de bind9 mais erreurs du restart, revoir la config
]
- Eteindre la VM :
xen shut Riga
Créer la machine mandataire
xen-create-image --hostname=balltrap --ip=193.48.57.163 --netmask=255.255.255.240 --bridge=SE2a5 --dir=/usr/local/xen --password=glopglop --gateway=193.48.57.161
xen create balltrap.cfg
- Se connecter à la VM
xen console balltrap
- Vérifier qu'on ping google
- Dans /etc/network/interfaces, obtenir une IPv6 par dhcp :
iface eth0 inet6 auto
Installer le serveur ssh, le serveur Web apache2 et le serveur DNS bind.
Créer la mascarade
- Créer un bridge balltrap dans /etc/network/interfaces :
- Up l'interface du bridge
ifup balltrap
- Ajouter le bridge dans le fichier de config de chaque VM (dans vif):
'ip=192.168.163.1, bridge=balltrap'
- Redémarrer la VM et, dans /etc/network/interfaces, lui déclarer une nouvelle interface réseau (eth1) avec une IP privée statique :
balltrap = 192.168.163.1
kiev = 192.168.163.2
Riga = 192.168.163.3
- Monter l'interface réseau eth1 nouvellement créée :
ifup -a
- Vérifier qu'elle est bien montée :
ip a
Ping les autres IP dans ce réseau privé.
- Créer une redirection de l'interface routée et notre interface privée sur la machine mandataire :
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.10.0/24
apt install iptables-persistent
iptables-save
iptables-save >> /etc/iptables/rules.v4
Vérifier dans /etc/iptables les nouvelles règles de routage.
- Se connecter en ssh depuis capbreton à ma machine de service en utilisant la machine mandataire comme jump :
ssh -J root@193.48.57.163 root@192.168.163.3
- Activer le routage (autoriser la redirection d'IP) (en mode définitif) sur notre machine mandataire : (dans quel dossier ???)
sysctl net.ipv4.ip_forward=1
- Créer maintenant des règles de routages pour se connecter en ssh aux machines de service en utilisant un port différent.
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2201 -j DNAT --to-destination 192.168.163.2:22
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2202 -j DNAT --to-destination 192.168.163.3:22
- Se connecter en ssh à la machine de service depuis capbreton en utilisant sur le port 2201 :
ssh root@193.48.57.163 -p 2201
Configurer le serveur DNS
Sur https://www.gandi.net, acheter le nom de domaine riga1.lol et spécifier les serveurs DNS (GlueRecords + externalServerNames):
- DNS principal (machine de service) -> IPv6
- DNS secondaire (machine mandataire) -> IPv4
Sur la machine de service, ajouter le serveur DNS de google (8.8.8.8) dans /etc/resolv.conf (nameserver)
- Maintenant on peut télécharger bind9 sur la machine de service.
Configurer le bind9 :
Dans /etc/bind/named.conf.local, créer la zone DNS (sur la machine de service et mandataire):
- Sur la machine de service (master)
zone "riga1.lol" {
type master;
file "/etc/bind/db.riga1.lol";
allow-transfer {192.168.163.1; };
};
- Sur la machine mandataire (slave)
zone "riga1.lol" {
type slave;
file "/etc/bind/db.riga1.lol";
allow-transfer {192.168.163.3; };
};*
Dans /etc/bind/named.conf.options, ajouter allow-recursion {127.0.0.1}
listen-on-v6 { any; }
listen-on { any; };
allow-recursion {127.0.0.1; };
Le fichier /etc/bind/db.riga1.lol contient les enregistrements DNS
Vérifier qu'il n'y a pas d'erreur de conf DNS :
cat /var/log/daemon.log
Redémarrer le service DNS (ne pas oublier d'incrémenter le SN dans named.conf.local à chaque restart :
service bind9 restart
Vérifier qu'un serveur DNS est bien présent sur une machine pour la zone demandée (installer le package dnsutils préalablement) :
dig @localhost riga1.lol
ou dig 192.168.163.3 riga1.lol
Installer apache2 sur la machine de service et vérifier avec un browser que notre site web www.riga1.lol est en ligne:
- On peut aussi tester la résolution DNS avec
nslookup ns1.riga1.lol
et nslookup www.riga1.lol
DNSSEC
Tout d'abord il a fallut mettre à jour bind9 v9.16
dans /etc/apt/sources.list changer weowolf en chimaera
- Modification du fichier
/etc/bind/named.conf.options
:
- Modification du fichier
/etc/bind/named.conf.local
:
On peut voir ensuite qu'un fichier "keys à été créé et contient des clés générées automatiquement :service bind(named) restart
valider le dnssec dans gandi en collant la clé ksk avec l'alogorithme 13
HTTPS & Apache2
apt install openssl
Générer une CSR : dans /etc/ssl
openssl req -nodes -newkey rsa:2048 -sha256 -keyout riga1.lol.key -out riga1.lol.csr -utf8
Remarque : Common Name mettre riga1.lol
Sécuriser l'accès à la clé privée
mv riga1.lol.key /private
chmod 440 riga1.lol.key
Copier le certificat obtenu sur Gandi :
riga1.lol.crt dans /etc/ssl/certs
Copier de ma machine vers ma VM service : (après avoir mkdir transfer dans la machine mandataire)
Copie de ma machine vers la machine mandataire
zabeth10:~/Téléchargements$ scp -r -p riga1.lol.crt root@193.48.57.168:/etc/transfer/
Copie de ma machine mandataire vers la machine service :
/etc/transfert scp -r -p riga1.lol.crt root@192.48.57.3:/etc/ssl/certs
Activer le mode SSL sur apache2 : a2enmod ssl
et configurer apache2 pour gérer du HTTPS sur le port 443
Créer le fichier /etc/apache2/sites-available/vhosts-https.conf et le paramétrer de la manière suivante :
lancer le site :
a2ensite vhosts-https.conf
service apache2 restart