TP sysres IMA5 2022/2023 G1 : Différence entre versions
(→Groupe 1) |
(→Chiffrage) |
||
| (44 révisions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 2 : | Ligne 2 : | ||
Zabeth n°13 et n°12. | Zabeth n°13 et n°12. | ||
| + | |||
Configuration réseau : | Configuration réseau : | ||
| + | - ip: 172.26.145.{50+n}/24 avec n le numéro de la zabeth | ||
| + | - gateway: 172.26.145.254 | ||
| + | - dns (de l'école): 193.48.57.48 | ||
| + | - proxy: http://proxy.polytech-lille.fr:3128 | ||
| + | |||
| + | Packages par défauts : | ||
| + | - XFCE | ||
| + | - web server | ||
| + | - ssh server | ||
| + | |||
| + | Autres packages : | ||
| + | - Python pour ansible | ||
| + | |||
| + | = Séance 1: = | ||
| + | Propagation des clefs par ansible: | ||
| + | *ansible-playbook: | ||
| + | **Configuration sur le host: | ||
| + | dans | ||
| + | /etc/ssh/sshd_config -> PermitRootLogin yes | ||
| + | et | ||
| + | service ssh restart pour appliquer les changements | ||
| + | |||
| + | * pour propager la clef: | ||
| + | ansible-playbook -i hosts clef.yml --ask-pass --extra-vars='pubkey="{contenu de id_rsa.pub}"' | ||
| + | |||
| + | Configuration Ansible | ||
| + | - main playbook | ||
| + | - tests des roles | ||
| + | |||
| + | = Séance 2: = | ||
| + | *Configuration de la VM: | ||
| + | **LVM: | ||
| + | On utilise le groupe de volumes `storage` | ||
| + | |||
| + | On crée les partitions logiques home et var : | ||
| + | |||
| + | $ lvcreate -L1G -ndio1_home storage ; mke2fs /dev/storage/dio1_home | ||
| + | |||
| + | $ lvcreate -L500M -ndio1_var storage ; mke2fs /dev/storage/dio1_var | ||
| + | |||
| + | Puis on créer une config de partitions dans /etc/xen-tools/partitions.d pour définir notre config. | ||
| + | |||
| + | |||
| + | commande de création: | ||
| + | $ xen-create-image --hostname=dio{n} --ip=172.26.145.{100+n} --nameserver=193.48.57.48 --gateway=172.26.145.254 --netmask=255.255.255.0 --dist=chimaera --dir=/usr/local/xen | ||
| + | |||
| + | On se connecte sur root avec le rootpassword donné par xen-create-image à la fin de l'éxecution | ||
| + | |||
| + | = Séance 3: = | ||
| + | |||
| + | Pour séparer les partitions home et var, on crée les volumes avec : | ||
| + | |||
| + | $ lvcreate dio1_home storage; mke2fs /dev/storage/dio1_home | ||
| + | |||
| + | et sur la VM, on | ||
| + | |||
| + | $ mount /dev/xvda3 /home | ||
| + | $ mount /dev/xvda4 /mnt; mv /var/* /mnt | ||
| + | $ umount /mnt; mount /dev/xvda4 /var | ||
| + | |||
| + | Puis on propage les changements dans /etc/fstab et on halt. | ||
| + | |||
| + | [[media:Vault_NEUS_LAURENT_v0.zip|Password manager v0]] | ||
| + | |||
| + | |||
| + | = Configuration DNS = | ||
| + | |||
| + | Configuration des zones : | ||
| + | |||
| + | named.conf.local : | ||
| + | |||
| + | zone "raclette.site" { | ||
| + | type master; | ||
| + | file "/etc/bind/db.raclette.signed"; | ||
| + | }; | ||
| + | |||
| + | zone "186.57.48.193.in-addr.arpa" { | ||
| + | type master; | ||
| + | file "/etc/bind/db.raclette.reverse"; | ||
| + | }; | ||
| + | |||
| + | avec la zone directe : | ||
| + | db.raclette | ||
| + | |||
| + | $TTL 60480 | ||
| + | @ IN SOA raclette.site. root.raclette.site. ( | ||
| + | 5 ; Serial | ||
| + | 604800 ; Refresh | ||
| + | 86400 ; Retry | ||
| + | 2419200 ; Expire | ||
| + | 604800 ) ; Negative Cache TTL | ||
| + | ; | ||
| + | @ IN NS ns.raclette.site. | ||
| + | @ IN NS ns6.gandi.net. | ||
| + | ns IN A 193.48.57.186 | ||
| + | ns IN AAAA 2001:660:4401:60b0:216:3eff:fef7:a359 | ||
| + | www IN CNAME ns | ||
| + | |||
| + | et la zone inverse : | ||
| + | |||
| + | $TTL 604800 | ||
| + | @ IN SOA raclette.site. root.raclette.site. ( | ||
| + | 2 ; Serial | ||
| + | 604800 ; Refresh | ||
| + | 86400 ; Retry | ||
| + | 2419200 ; Expire | ||
| + | 604800 ) ; Negative Cache TTL | ||
| + | ; | ||
| + | @ IN NS ns.raclette.site. | ||
| + | @ IN NS ns6.gandi.net. | ||
| + | ns IN PTR raclette.site. | ||
| + | |||
| + | Dans les options on active la récursion et le transfert : | ||
| + | |||
| + | options { | ||
| + | allow-query-cache { any; }; | ||
| + | allow-recursion { "trusted"; }; | ||
| + | dnssec-enable yes; | ||
| + | allow-transfer { "allowed_to_transfer"; }; | ||
| + | rate-limit { responses-per-second 10; }; | ||
| + | }; | ||
| + | acl "allowed_to_transfer" { | ||
| + | 217.70.177.40; | ||
| + | 2001:4b98:d:1::40; | ||
| + | }; | ||
| + | acl "trusted" { | ||
| + | 193.48.57.186; | ||
| + | 217.70.177.40; | ||
| + | }; | ||
| + | |||
| + | On a également limité le nombre de réponses par seconde à 10. | ||
| + | |||
| + | = Configuration fail2ban = | ||
| − | + | On a ici une configuration simple qui ban les ip qui font 3 erreurs consécutives pour se connecter en ssh : | |
| + | |||
| + | [DEFAULT] | ||
| + | ignoreip = 127.0.0.1 193.48.57.186 | ||
| + | findtime = 10m | ||
| + | bantime = 24h | ||
| + | maxretry = 3 | ||
| + | [sshd] | ||
| + | enabled = true | ||
| + | |||
| + | = Serveur Minecraft = | ||
| + | |||
| + | On utilise un docker | ||
| + | |||
| + | <code>docker run -e EULA=TRUE -d -p 25565:25565 --name mc itzg/minecraft-server</code> | ||
| + | |||
| + | on a ajouté <code>-e EULA=TRUE</code> afin de laisser le serveur démarrer normalement (indication de la console docker obtenue en mode intéractif <code>docker start -i</code>) | ||
| + | |||
| + | Manquant de place sur notre volume /var (docker stock les containers dans <code>/var/lib/docker</code>) on a déplacé les fichiers de docker sur notre array /home en liant <code>/var/lib/docker</code> à <code>/home/docker</code> : | ||
| + | |||
| + | cp -r /var/lib/docker/* /home/docker | ||
| + | mount --rbind /home/docker /var/lib/docker | ||
| + | |||
| + | = Raid5 = | ||
| + | |||
| + | On a ajouté à notre VM deux volumes identiques à celui utilisé pour /home. | ||
| + | |||
| + | On a créé l'array avec mdadm: | ||
| + | |||
| + | mdadm --create /dev/md0 --level=5 \ | ||
| + | --raid-devices 3 /dev/xvda3 /dev/xvda5 /dev/xvda6 | ||
| + | mkfs /dev/md0 | ||
| + | mount /dev/md0 /home | ||
| + | |||
| + | En modifiant également <code>/etc/fstab</code> pour laisser la VM monter correctement /home au démarrage | ||
| + | |||
| + | = Chiffrage = | ||
| − | + | On a créé un dernier volume (<code>/dev/storage/dio1_chiffrage</code>) qu'on a affecté à notre VM. On a ensuite utilisé cryptsetup pour l'encrypter (avec le code <code>glopglop</code>) : | |
| − | + | cryptsetup luksFormat /dev/xvda7 | |
| + | cryptsetup luksOpen /dev/xvda7 disk | ||
| + | mkfs /dev/mapper/disk | ||
| + | mkdir /mnt/disk & mount /dev/mapper/disk /mnt/disk | ||
| − | + | On a ensuite copié notre index.html dans <code>/mnt/disk</code> avant de refermer le volume | |
| − | + | umount /mnt/disk | |
| − | + | cryptsetup luksClose disk | |
Version actuelle datée du 30 novembre 2022 à 12:57
Sommaire
Groupe 1
Zabeth n°13 et n°12.
Configuration réseau :
- ip: 172.26.145.{50+n}/24 avec n le numéro de la zabeth
- gateway: 172.26.145.254
- dns (de l'école): 193.48.57.48
- proxy: http://proxy.polytech-lille.fr:3128
Packages par défauts :
- XFCE - web server - ssh server
Autres packages :
- Python pour ansible
Séance 1:
Propagation des clefs par ansible:
- ansible-playbook:
- Configuration sur le host:
dans /etc/ssh/sshd_config -> PermitRootLogin yes et service ssh restart pour appliquer les changements
- pour propager la clef:
ansible-playbook -i hosts clef.yml --ask-pass --extra-vars='pubkey="{contenu de id_rsa.pub}"'
Configuration Ansible
- main playbook - tests des roles
Séance 2:
- Configuration de la VM:
- LVM:
On utilise le groupe de volumes `storage`
On crée les partitions logiques home et var :
$ lvcreate -L1G -ndio1_home storage ; mke2fs /dev/storage/dio1_home
$ lvcreate -L500M -ndio1_var storage ; mke2fs /dev/storage/dio1_var
Puis on créer une config de partitions dans /etc/xen-tools/partitions.d pour définir notre config.
commande de création:
$ xen-create-image --hostname=dio{n} --ip=172.26.145.{100+n} --nameserver=193.48.57.48 --gateway=172.26.145.254 --netmask=255.255.255.0 --dist=chimaera --dir=/usr/local/xen
On se connecte sur root avec le rootpassword donné par xen-create-image à la fin de l'éxecution
Séance 3:
Pour séparer les partitions home et var, on crée les volumes avec :
$ lvcreate dio1_home storage; mke2fs /dev/storage/dio1_home
et sur la VM, on
$ mount /dev/xvda3 /home $ mount /dev/xvda4 /mnt; mv /var/* /mnt $ umount /mnt; mount /dev/xvda4 /var
Puis on propage les changements dans /etc/fstab et on halt.
Configuration DNS
Configuration des zones :
named.conf.local :
zone "raclette.site" {
type master;
file "/etc/bind/db.raclette.signed";
};
zone "186.57.48.193.in-addr.arpa" {
type master;
file "/etc/bind/db.raclette.reverse";
};
avec la zone directe : db.raclette
$TTL 60480 @ IN SOA raclette.site. root.raclette.site. ( 5 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.raclette.site. @ IN NS ns6.gandi.net. ns IN A 193.48.57.186 ns IN AAAA 2001:660:4401:60b0:216:3eff:fef7:a359 www IN CNAME ns
et la zone inverse :
$TTL 604800 @ IN SOA raclette.site. root.raclette.site. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.raclette.site. @ IN NS ns6.gandi.net. ns IN PTR raclette.site.
Dans les options on active la récursion et le transfert :
options {
allow-query-cache { any; };
allow-recursion { "trusted"; };
dnssec-enable yes;
allow-transfer { "allowed_to_transfer"; };
rate-limit { responses-per-second 10; };
};
acl "allowed_to_transfer" {
217.70.177.40;
2001:4b98:d:1::40;
};
acl "trusted" {
193.48.57.186;
217.70.177.40;
};
On a également limité le nombre de réponses par seconde à 10.
Configuration fail2ban
On a ici une configuration simple qui ban les ip qui font 3 erreurs consécutives pour se connecter en ssh :
[DEFAULT] ignoreip = 127.0.0.1 193.48.57.186 findtime = 10m bantime = 24h maxretry = 3 [sshd] enabled = true
Serveur Minecraft
On utilise un docker
docker run -e EULA=TRUE -d -p 25565:25565 --name mc itzg/minecraft-server
on a ajouté -e EULA=TRUE afin de laisser le serveur démarrer normalement (indication de la console docker obtenue en mode intéractif docker start -i)
Manquant de place sur notre volume /var (docker stock les containers dans /var/lib/docker) on a déplacé les fichiers de docker sur notre array /home en liant /var/lib/docker à /home/docker :
cp -r /var/lib/docker/* /home/docker mount --rbind /home/docker /var/lib/docker
Raid5
On a ajouté à notre VM deux volumes identiques à celui utilisé pour /home.
On a créé l'array avec mdadm:
mdadm --create /dev/md0 --level=5 \
--raid-devices 3 /dev/xvda3 /dev/xvda5 /dev/xvda6
mkfs /dev/md0
mount /dev/md0 /home
En modifiant également /etc/fstab pour laisser la VM monter correctement /home au démarrage
Chiffrage
On a créé un dernier volume (/dev/storage/dio1_chiffrage) qu'on a affecté à notre VM. On a ensuite utilisé cryptsetup pour l'encrypter (avec le code glopglop) :
cryptsetup luksFormat /dev/xvda7 cryptsetup luksOpen /dev/xvda7 disk mkfs /dev/mapper/disk mkdir /mnt/disk & mount /dev/mapper/disk /mnt/disk
On a ensuite copié notre index.html dans /mnt/disk avant de refermer le volume
umount /mnt/disk cryptsetup luksClose disk