TP sysres IMA5 2022/2023 G1 : Différence entre versions

De Wiki d'activités IMA
(Taches:)
(Chiffrage)
 
(40 révisions intermédiaires par le même utilisateur non affichées)
Ligne 17 : Ligne 17 :
 
  - Python pour ansible
 
  - Python pour ansible
  
= Taches: =  
+
= 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:
Séance 1:
+
ansible-playbook -i hosts clef.yml --ask-pass --extra-vars='pubkey="{contenu de id_rsa.pub}"'
  
 
Configuration Ansible
 
Configuration Ansible
Ligne 26 : Ligne 33 :
 
  - tests des roles
 
  - tests des roles
  
---
+
= Séance 2: =
Séance 2:  
+
*Configuration de la VM:
- Configuration de la zabeth 12.
+
**LVM:
- Configuration de la VM
+
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

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.

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

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